hint를 열어보자!
str에 256만큼 저장을 받는데 입력에 제한이 없으니
256을 넘겨버리면 다른 메모리 공간을 건드리게 된다
그러면 setuid를 가지고있는 것이 무엇인지 보자
앗! 저기 attackme가 가지고 있었다....
gdb를 이용하여 어셈블리어로 한번 보자
0x08048473에 있는 sub 0x108 을 10진수로 바꾸면 264가 된다.
하지만 str은 256만큼 할당했는데 왜 그럴까?
바로 더미데이터 때문이다. 그러므로 더미데이터가 8이므로 264가 되게 된다.
다음에 실행할 명령어의 메모리 주소인 RET에 내가 실행하고자 하는 코드를 집어 넣을것이다.
이제 우리가 입력받는 곳을 넘겨서 RET까지 보내야 하니까
str 256
더미 8
SFP 4
이니까 268을 채운다음에 RET에 원하는거을 덮어 씌우자!
환경변수를 이용하여 풀어보도록 하자.
이제 택스트 편집기를 이용하여 환경변수의 주소를 알아보자
요렇게하고 이제 컴파일을 해보자
여기서 나온 주소를 그대로 쓰지 않고 2자리씩 끊어서 뒤에서 부터 씁니다.
./attackme `python -c 'print "a"*268+"\xad\xfc\xff\xbf"'`이것을 입력하면
성공!
'Write-Up > FTZ(Write-Up)' 카테고리의 다른 글
[FTZ] level13 (Write-Up) (0) | 2019.06.19 |
---|---|
[FTZ] level12 (Write-Up) (0) | 2019.06.19 |
[FTZ] level10 (Write-Up) (0) | 2019.05.24 |
[FTZ] level9 (Write-Up) (0) | 2019.05.24 |
[FTZ] level8 (Write-Up) (0) | 2019.05.24 |