본문 바로가기
STUDY/pwnable.kr

[pwnable.kr] random

by CH@3M 2020. 2. 7.

random이라는 문제입니다. random함수의 취약점에 관련된 문제일 것 같네요! 문제에 접속해 봅시다. 코드와 바이너리를 모두 제공해주고 있습니다. random 값과 입력받은 key의 값을 XOR 해서 0xdeadbeef 가 나오게하면 되는 코드입니다.

여기서 random 함수를 잘못사용하고 있는 것을 알 수 있습니다. 진짜 random 값을 출력하게 하려면 srand(time(NULL)) 를 사용해야 합니다. 그냥 이렇게 함수를 사용하면 계속 고정된 값이 나오게 됩니다.

gdb를 이용해 main을 봅시다. 

rand함수를 거친뒤의 random변수를 가리키기 때문에 main+18에 bp를 걸어 rax를 확인합니다. rax 값이 0x6b8b4567 이고, 이 값과 입력 값을 XOR 해서 0xdeadbeef가 나오면 됩니다.

XOR 연산은 A ^ B = C, A ^ C = B, C ^ B = A 를 모두 만족하는 연산임으로 다음과 같은 연산으로 입력해야할 값을 알 수 있습니다.

이 값을 입력하면 flag를 획득하게 됩니다.

반응형

'STUDY > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] passcode  (0) 2019.11.27
[pwnable.kr] flag  (0) 2019.11.11
[pwnable.kr] bof  (0) 2019.11.11
[pwnable.kr] unlink  (0) 2019.10.07