아빠!! 랜덤값을 프로그래미엥 넣는 법을 알려주세요~!~!~! 라는 문제이다. 음... 아마 랜덥값을 조정하거나 예측하여서 특정 조건을 만족하게 하면 플래그가 읽히게 되는 문제일 것 같은 생각이 든다. 일단 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 |