예전에 푼걸 한번에 올리려니 귀찮고 힘들다.
하지만 벌써 level15 !
늘 그랬듯이 로그인을 하고, 파일 목록을 확인하고, 힌트를 확인한다.
level14 와 상당히 유사하다. 차이점이라면 check를 포인터로 선언했다는것.
그렇다면 이번엔 check의 값에 0xdeadbeef가 존재하는 곳의 주소를 넣어줘야 한다.
해야 할걸 생각해보면, ⓐ0xdeadbeef 가 존재하는 주소를 찾고 ⓑbuf 와 *check 의 거리를 구해 ⓒ페이로드를 작성하면 될 것 같다.
우선 gdb를 통해 0xdeadbeef 가 존재하는 주소를 찾아보자.
0x80484b2 에 있는걸 확인했다.
이제 buf 와 *check 사이의 거리를 구해보자.
level14와 동일하게
buf ~ ret 거리 = 56 + 4 = 60
*check ~ ret 거리 = 16 + 4 = 20
=> buf ~ *check 사이의 거리 = 60 - 20 = 40
마지막으로 페이로드를 작성해보면 아래와 같다.
(python -c 'print "\x90"*40+"\xb2\x84\x04\x08"'; cat) | ./attackme
짜잔
level16 암호 : about to cause mass
'[Pwnable] 해커스쿨 FTZ' 카테고리의 다른 글
[해커스쿨 FTZ] level17 (0) | 2020.03.12 |
---|---|
[해커스쿨 FTZ] level16 (0) | 2020.03.12 |
[해커스쿨 FTZ] level14 (0) | 2020.03.12 |
[해커스쿨 FTZ] level13 (0) | 2020.03.12 |
[해커스쿨 FTZ] level12 (0) | 2020.03.12 |