hint를 보자!
입력한 값을 buf[1024]에 저장하고
i가 0x1234567가 아니면 프로그램이 죽는다....
이 문제는 strcpy를 이용해서 시도해야 되는데
i를 잘 피해야 된다...
일단 gdb로 한번 봐보자!
<main+3>을 보면 0x418(1048)만큼 할당을 하고
<main+9>를 보면 0x1234567dmf [ebp-12]에 넣는것을 볼 수 있다.
buf에는 1024만큼 할당되고
남은 24중에서[ebp-12]의 바로 윗 부분인 12는 dummy이다.
[ebp-12]에 i의 값인 4이고
남은8은 dummy
그리고 SFP는 4이고 RET가 나온다.
그러면 buf랑 dummy를 A로 채우고 i는 0x1234567로 채우고 dummy랑 SFP를 A로 채운뒤 RET를 덮으면 될것이다.
일단 환경변수를 등록해주고
shell코드의 환경변수인 EGG의 주소를 출력한다
EGG의 주소는 0xbffffc91이라는것을 알 수 있다.
그러면 i는 1234567로 채우고 나머지는 A를 넣기 위해서
`python -c 'print "A"*1036+"\x67\x45\x23\x01"+"A"*12를 하고 "\x91\xfc\xff\xbf"이쪽으로 가면 될것이다.
요렇게 하면은
level14의 권한을 얻게된다
성공!
'Write-Up > FTZ(Write-Up)' 카테고리의 다른 글
[FTZ] level15 (Write-Up) (0) | 2019.07.09 |
---|---|
[FTZ] level14 (Write-Up) (0) | 2019.07.09 |
[FTZ] level12 (Write-Up) (0) | 2019.06.19 |
[FTZ] level11 (Write-Up) (0) | 2019.05.31 |
[FTZ] level10 (Write-Up) (0) | 2019.05.24 |