아빠!! 랜덤값을 프로그래미엥 넣는 법을 알려주세요~!~!~! 라는 문제이다. 음... 아마 랜덥값을 조정하거나 예측하여서 특정 조건을 만족하게 하면 플래그가 읽히게 되는 문제일 것 같은 생각이 든다. 일단 xshell을 통해 접속해보자.



random파일을 실행해보면



2^32번의 케이스를 시도해보라고 나온다. 예상했던대로 지정된 랜덤값을 맞추는 문제같다!!


소스파일을 한번 확인해보자.



입력한 key값이랑 random값을 xor했을때 0xdeadbeef가 되면 cat flag가 실행되는 매우매우 간단한 코드이다. 

그리고 이 소스코드 내에서의 rand()는 따로 시드도 설정되지 않았고 srand()와 다르게 고정된 난수값이므로 충분히 알아 낼 수 있다!!


gdb를 이용해서 확인해보자!



rand함수가 호출되고 난 뒤인 main + 18부분에 brake point를 걸고 메모리를 확인해보자.

함수가 끝나고 결과값은 rax에  저장되니까 rax를 확인해보면 될 것이다.



random값은 0x6b8b4567인 것을 알 수 있었으니까 이제 0xdeadbeef와 xor을 시켜보자.



이제 3039230856을 집어넣어보자!



플래그가 나왔다!!!!!~!~!~!

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

[pwnable.kr] leg  (0) 2019.02.20
[pwnable.kr] input  (0) 2019.02.18
[pwnable.kr] passcode  (0) 2019.01.13
[pwnable.kr] flag  (0) 2019.01.12
[pwnable.kr] bof  (0) 2019.01.04

+ Recent posts