-
Stack0 풀이System hacking training/Protostar 2018. 2. 3. 20:24
[문제]
[풀이]
main()안의 변수를 보면 int형 변수 modified와 char 64크기의 배열 buffer가 존재한다.
modified의 값을 바꿀 수 있는가를 시험하는 문제인것같다.
여기서 bof 취약점을 발견할 수 있었는데 gets()는 경계를 검사하지 않는 함수가 쓰였기 때문에 bof 공격이 가능하다.
bof 취약점을 이용하여 modified의 값을 바꿔주면 된다.
[Stack]
[low address] | char buffer[64] | int modified | SFP | RET | [high address]
buffer와 modified 중간에 더미값이 없는 쉬운 문제다.(5c(hex) - lc(hex) == 64(dec))
esp+5c 에 0을 넣는것으로 modified의 위치를 알 수 있었고, eax 에 esp+1c 주소를 넣고 call gets()를 보면 buffer의 시작 위치를 알 수 있다.
따라서 A를 64개보다 더 많이 넣어주면 된다.
반응형