FTZ

Layer7 16과제 -F.T.Z level 15 풀이-

건_빵 2019. 7. 11. 05:56

 

로그인을 한 후 hint이다.

 

이를 gdb로 뜯어보자.

여기서 레벨 14와 같이 똑같이 0x38을 할당해준다.

따라서 메모리 구조 다음과 같다.

 

crap(4)+dummy+*check(4)+dummy+buf(20)+dummy=56

또한 check와 buf 사이의 거리가 40이다.

우리는 ebp-16(check) 위치의 0xdeadbeef의 주소를 넣어주면 될것 같다.

 

x/x16 main 명령어를 써서 main 함수의 메모리 구조를 보자.

x/x [주소] 명령어를 사용하여 찾아보니 0x80484b2의 위치에 0xdeadbeef가 있다는걸 알았다.


x명령어 

gdb는 x명령어를 사용해 메모리를 조사할 수 있다. 

o : 8진법으로 보여줌
x : 16진법으로 보여줌
u : 10진법으로 보여줌
t : 2진법으로 보여줌

b : 1 byte 단위로 보여줌(byte)
h : 2 byte 단위로 보여줌(half word)
w: 4 byte 단위로 보여줌(word) - 난 2byte로 알고 있지만 여기선 4바이트로 쓰이나 보다....
g : 8 byte 단위로 보여줌(giant)

i : 역어셈블된 명령어의 명령 메모리를 볼수 있음
c : ASCII 표의 바이트를 자동으로 볼 수 있다.
s : 문자 데이터의 전체 문자열을 보여준다.

 

x/10x [주소] 와 같이 쓰면 해당 주소로부터 10바이트까지의 주소를 출력시켜준다.

 

먼저 x는 examine의 약자로 메모리를 조사할 떄 쓴다.


따라서 페이로드는

(python -c 'print "A"*40+"\xb2\x84\x48\x80"';cat)|./attackme 

와 같이 해주면 될것 같다.

about to cause mass