
软件安全实验
文章平均质量分 89
北邮信息安全专业软件安全实验
7xun
这个作者很懒,什么都没留下…
展开
-
BUPT软件安全实验六
时buffer中格式化字符串为"ERR Wrong command:%497d\x39\x4a\x42\x00",根据格式化字符串,sprintf会读取一个参数以%497d的格式写入outbuf,由于未提供该参数,会自动将栈地址0x0012FAE0中的值视为该参数,即0x12FF80(十进制1245056)。(5)解决思考题,即:破解foo.exe程序,在不改变源代码的情况下,要求通过命令行输入,利用格式化字符串漏洞%n的方式,调用隐藏的foo函数,并尝试调用一个shellcode。原创 2023-04-18 17:13:10 · 1305 阅读 · 2 评论 -
BUPT软件安全实验五
那么只需要找到这个过程中保存栈的返回值的位置,且将返回值修改为bar函数的地址,并根据这两项信息确定2个参数的值,再运行程序,就可以调用bar函数了。(11)由于shellcode的起始地址为 0x0012FE48,第一个S.E.H地址为 0x0012FF18(指向下一个S.E.H的指针) 0x0012FF1C(异常处理地址),因此shellcode需要使用0x0012FF1C-0x0012FE48=212个字节进行填充,且注释掉__asm int 3。原创 2023-04-18 17:08:18 · 1331 阅读 · 0 评论 -
BUPT软件安全实验四
通过编写的fuzz源代码,也可以通过连接目标主机并发送脏数据包实现fuzz攻击,达到让目标服务器崩溃的效果,通过ollydbg分析该过程时,只能找到程序崩溃的位置,并没有找到程序崩溃的原因,虽然理论上是重复插入了相同的数据导致FTP服务器异常。此刻,程序利用指令“sub esp,124”开辟一个292(0x124)个字节的栈空间,CWD命令后面的参数,也就是前面运行的攻击脚本myfzz.py中buffer变量的值,就存放在这个空间中。而要达到这一点,我们要去主动学习更多的知识、熟悉更加强有力的工具。原创 2023-04-18 17:03:43 · 1316 阅读 · 0 评论 -
BUPT软件安全实验三
可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。原创 2023-04-18 16:57:59 · 1497 阅读 · 0 评论 -
BUPT软件安全实验二
(4)解决思考题,即:在不修改源代码的情况下,修改OverFlow_EXE程序的流程,通过弧注入的方式,不植入可执行代码,让其调用MessageBoxA函数(函数地址:0x77E23D68)弹出对话框(对话框显示bupt),之后调用ExitProcess函数(函数地址:0x77E7B0BB)退出进程。通过这次实验,我对程序堆栈间的调用关系有了更清晰的了解,也熟悉了堆栈溢出的基本原理,并实际动手练习了堆栈溢出利用方法,收获颇丰。前面进行的是淹没邻接变量改变程序的实验,下面进行淹没返回地址改变程序的实验。原创 2023-04-18 16:51:58 · 1270 阅读 · 0 评论 -
BUPT软件安全实验一
前面已经提到过字符串搜索的方式,其实很多时候,这种设定好的值由于要和输入的值比较,是会在汇编语言中的注释栏出现的。若其值不为0,则输出判断错误的语句。我们平常编写程序时,应该着重考虑到攻击者可能会对程序进行反汇编和修改,因此,我们最好可以将程序结果进行一定的隐藏,如对加密程序的算法进行混淆,以增大攻击者反汇编的难度,提高程序的自我防护能力。可以看到,x64dbg主要由4个窗口组成:左上角为反汇编的结果(形成的汇编语言),左下角为内存的地址和数据的值,右上角为寄存器的情况,右下角为堆栈的地址和相应的数据。原创 2023-04-18 16:46:56 · 823 阅读 · 4 评论