当前位置:   article > 正文

Csapp attacklab 实验报告:代码注入以及rop攻击_代码注入攻击实验

代码注入攻击实验

attacklab 实验报告

Ctarget

level1

题目给出函数testtest里面有函数getbuf,然后它给定的提权函数是touch1(),我们那我们先gdb ctarget进入调试,然后输入disassemble getbuf查看汇编代码。

attacklab_Ctarget_level1_1.png

可以很清楚的看到函数的缓冲区大小是0x28字节,然后gets已经说明是库的标准函数了,gets函数是有漏洞的,它在读入字符串的时候不会对长度检测,而是给多少读多少。那么我们可以用这个gets来实现栈溢出,执行我们的权限函数touch1(),我们可以先用00字节填充40个字节,然后再加上shell函数的地址。注意前面可以用除了0a的任意字节填充,因为0a代表’\n’的意思,gets函数一旦读到这个字符就会认为字符串读取结束了。我们用print touch1去查看该函数的地址。

attacklab_ctarget_level1_2.png

发现了提权函数的地址之后我们就可以构造payload了。我们先q退出gdb,然后这里先创建一个文本文件vim attack1.txt 然后填充

00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00
c0 17 40
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意,地址在计算机里是小端序存储。也就是高地址存储高位字节,然后我们构造的payload是往栈底方向填充的,而栈又是向低地址增长的,因此如此反转过后我们的函数地址要按字节倒着填充。然后根据字节生成字符串文件。

运行题目给的hex2raw文件,./hex2raw <source file> target file命令去生成目标文件。然后再./ctarget -q -i target file这里我生成的文件名叫attackraw1.txt,然后终端输入运行命令,发现攻击成功了。

attacklab_ctarget_level1_3.png

level2

这个需要攻击执行的函数名为touch2(),这个栈溢出的漏洞依然可以利用。但是

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/70435
推荐阅读
相关标签
  

闽ICP备14008679号