먼저 평소와 같이 HINT를 봐보자!
여지껏 문제에선 보이지 않던 포인터가 보인다
포인터 변수는 '주소 값'을 가지는 변수이다 CHECK에 들어가는 값은 메모리의 주소 값과 같다고 생각할 수 있다 .

check 포인터 변수에 잇는 값이 가리키는 메모리 주소에 0xdeadbeef를 넣어줘야 한다 . 그러기 위해서는 메모리 주소를 찾아야하는데 

ebp-56의 주소를 eax 레지스터에 넣는걸 보아하니 버퍼의 시작 위치인것을 알 수 있다 .


ebp-16지점에 0xdeadbeef를 넣어주면될거같다 .
그럼 이제 0xdeadbeef의 위치를 찾아봐야할거같다 


main+32지점에 deadbeef가 보인다! 그럼 좀 더 자세히 찾아보자 


main+44지점 0x80483e4가 주소이다!
그렇다면 생각할 수 있는 공격코드는 
쓰레기값으로 40을 채워주고 0xdeadbeef의 주소값을 채워주자

(python -c 'print "A"*40+"\xe4\x83\x04\x08"';cat) | level15./attackme
이렇게 생각해 줄수 잇겠다! 
*이것은 제가 hint를 복사해서 푼 자료입니다 혼동하지 마시길 바랍니다.




'해커스쿨 ftz' 카테고리의 다른 글

FTZ-LEVEL17  (0) 2016.04.24
FTZ-LEVEL16  (0) 2016.04.24
FTZ - LEVEL14  (0) 2016.04.24
FTZ - LEVEL13  (0) 2016.04.23
FTZ - LEVEL12  (0) 2016.04.22

+ Recent posts