Exp1 PC平台逆向破解(5)M

改机器指令

直接修改程序机器指令,改变程序执行流程

操作思路

总思路

  • 通过反汇编查找含有跳转指令的汇编行,修改该部分的机器代码使之跳转至getShell函数(其中getShell等函数地址也通过反汇编查询)

分布思路

反汇编查询相关指令行
  • 【2】
  • 【3】
  • 【1】
  • 【4】
  • EIP:80484ba +d7ffffff= 80484ba-0x29正好是8048491(foo首地址)这个值
通过vi编辑器修改相应部分代码
  • 【5】
  • 退出编辑前记得将16进制转换为原格式 :%!xxd -r
执行程序,比较修改前后效果
  • 【a】

  • 若遇到如下情况,可参照此解决方案:【64位Kali无法顺利执行pwn1问题的解决方案 】

  • 【6】

  • 备注:更新源建议额外添加kali官方源

简单BOF注入

  • 通过构造输入参数,造成BOF攻击,改变程序执行流

操作思路

总思路

  • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。

分布思路

手动测试缓冲区长度
  • 【b】
  • 找到1234覆盖了返回地址
用getshell的地址覆盖返回地址
  • 通过构造一个含16进制getshell地址的字符串文件,将字符串注入缓冲区
  • (地址由反汇编查看)
  • 【c】

注入shellcode

操作思路

总思路

  • 注入一个shellcode并运行这段shellcode。

分布思路

准备一个shellcode

\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\

修改设置
  • 【d】
构造payload
  • 结构:anything+retaddr+nops+shellcode
  • 首先输入攻击命令
  • 找到进程号32549
  • 【e】
  • 用gdb进行调试,找到注入buf的内存地址
  • 【f】
  • 【g】
  • 地址为0xffffd2f0
  • 将地址改为0xffffd2f0
  • 【h】
  • 攻击成功
  • 【i】

相关推荐