본문 바로가기

[Pwnable] 해커스쿨 FTZ

[해커스쿨 FTZ] level15

예전에 푼걸 한번에 올리려니 귀찮고 힘들다.

하지만 벌써 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