LOB : Darkelf→Orge

LOB 2018. 4. 9. 12:00


orge.c 의 코드이다.  here is changed!라고 친절히 알려주는데 이번에는

strlen(argv[0]) != 77 인 경우 exit(0);하게 되었다. 


argv[0]은 파일명이다.


리눅스 터미널에선 실행파일을 

./[파일명] 'argv[1]' 'argv[2]' .... 


처럼 실행하는데 여기서 파일명이 argv[0]에 해당한다. 파일명을 바꾸는 가장 쉬운 방법은 당연히 mv [기존파일명] [바꿀파일명]이겠지만, 그 외에도 다른 방법이 있다.


바로 심볼릭 링크이다. 윈도우에서 사용하는 바로가기랑 비슷하다 보면된다.


사용법은


ln -s [대상 경로] [링크 경로]


이다.


즉 



를 사용하면 기존 파일을 건드리지 않고 파일명을 바꿀 수 있다.


기존 코드와 다 똑같고 argv[0]만 바뀌었기 때문에 전에 사용한 코드를 비슷하게 사용하였다.



(gdb core을 뜨기 위해서 temp로 orge를 복사해서 사용하였다.)





세그멘테이션 폴트가 뜨고 코어가 떨어졌다.


gdb -c core로 코어를 열어 x/32x $esp로 스택을 보았다.




0xbffffb80 언저리부터 90이 시작하는 것을 볼 수 있다. 안전하게 0xbffffb90을 ret에 덮어쓰기로 하였다.


운이 좋았나보다. 한번에 쉘을 얻은 것을 확인할 수 있다.

'LOB' 카테고리의 다른 글

LOB : Troll→Vampire  (0) 2018.04.09
LOB : Orge→Troll  (0) 2018.04.09
LOB : Wolfman → Darkelf  (0) 2018.04.08
LOB : Orc → Wolfman  (0) 2018.04.08
LOB : Goblin → Orc  (0) 2018.04.08
블로그 이미지

천재보다는 범재

,