20155328 《网络攻防》 实验一:PC平台逆向破解(5)M

实践目标

  • 实践对象:linux可执行文件pwn1.

  • 正常执行时,main调用foo函数,foo函数会简单回显任何用户输入的字符串。

  • 实践运行代码片段getShell,学习如何注入运行任何Shellcode。

实践内容:

1.手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。

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

3.注入一个自己制作的shellcode并运行这段shellcode。

这几种思路基本上代表了现实情况中的攻击目标:

  • 运行原本不可访问的代码片段

  • 强行修改程序执行流

  • 注入运行任意代码

一些汇编指令

  • NOP:空指令,执行后不产生任何结果,但会占用一个指令的时间。机器码:90.

  • JNE:条件转移指令,当ZF=0,转至标号处执行。机器码:75.

  • JE:条件转移指令,当ZF=1,转至标号处执行。机器码:74.

  • JMP:无条件跳转指令,可跳转到内存中任何程序段。机器码:EA.

  • CMP:比较指令,两数相减以比较大小,而并不保存比较结果。机器码:39.

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

下载并解压pwn1,使用命令objdump -d对其进行反汇编:

可看到三个框中的地址。main中使用call调用到foo,我们的目标就是要将调用的函数换成getShell,计算foo和getShell的地址差值可得,要将红色框中的d7修改为c3.

使用vi编辑pwn1文件,用:%! xxd将文件转换为16进制查看。用/d7ff搜索,找到了需要修改的地方。

修改后使用:%! xxd -r把文件转回二进制,用:wq保存并退出。可以查看main中调用函数部分已经由调用foo变成了调用getShell.

接下来运行下新的文件5328pwn1,可以看到已经变成了getShell中的功能。

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

要先确认是哪几个字节覆盖了返回地址,于是在调试中运行,输入如下:

info r查看各寄存器的值,可以看到eip的值被“1234”部分覆盖了:

由此,只要把这四个字符替换为getShell的地址即可。反汇编可看到getShell的内存地址是0804847d。

实验三:注入Shellcode并执行

输入apt-get install execstack下载软件包。

输入以下命令修改设置。(下图是我自己手抖在5328和pwn3之间打了个空格...)

输入命令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"' > input_shellcode,然后输入攻击命令(cat input_shellcode;cat) | ./5328pwn3.

打开一个新终端,找到进程号4120.

在此终端下使用gdb对5328pwn3进行调试,通过设置断点,来查看注入buf的内存地址。

修改地址后再次攻击,就成功了。

实验后的问题回答

  • 实验收获与感想

这次实验分别用三种方法循序渐进地对可执行文件进行了攻击,修改了程序的执行轨迹。实验过程犯了一些错误,比如用apt-get install execstack下载软件包的时候提示无法定位软件包,问了几个人说没碰到这问题...心里一惊赶紧去百度找各种方案,最后发现是软件源配置的问题,就去增添配置了一个中科大的kali软件源,更新了下就好了。还有一些比较蠢的错误就按下不提了。

总之第一次实验学到的东西还是挺多的,做完的时候也蛮有成就感(?)。虽然只是个入门级的小实验吧。希望自己可以以后好好加油,不当废柴。

  • 什么是漏洞?漏洞有什么危害?

编写程序时的疏忽或者是编程语言的局限性,都会带来漏洞。漏洞很可能会被恶意利用,来挂马、传播恶意软件等。

20155328 《网络攻防》 实验一:PC平台逆向破解(5)M的更多相关文章

  1. 20155308《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155308<网络攻防> Exp1 PC平台逆向破解(5)M 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是 ...

  2. 20155306 白皎 《网络攻防》Exp1 PC平台逆向破解——逆向与Bof基础

    20155306 白皎 <网络攻防>Exp1 PC平台逆向破解--逆向与Bof基础 实践相关说明 1.1 实践目标 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. ...

  3. 20155226 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155226 <网络攻防> Exp1 PC平台逆向破解(5)M 实践目标 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串 该程序同时包含另一个代 ...

  4. 20155321 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155321 <网络攻防> Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

  5. 20155330 《网络攻防》Exp1 PC平台逆向破解(5)M

    20155330 <网络攻防>Exp1 PC平台逆向破解(5)M 实践目标 运行pwn1可执行文件中的getshell函数,学习如何注入运行任何Shellcode 本次实践的对象是一个名为 ...

  6. 20155213 《网络攻防》 Exp1 PC平台逆向破解

    20155213 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--pwn20155213的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文件 ...

  7. 20155220 吴思其 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155220 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--20155220pwn1的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文 ...

  8. 20155309南皓芯 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M

    实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...

  9. 20155323刘威良 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M

    实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...

  10. 2017-2018-2 20155225《网络对抗技术》实验一 PC平台逆向破解

    2017-2018-2 20155225<网络对抗技术>实验一 PC平台逆向破解 1.直接修改程序机器指令,改变程序执行流程 理清思路: 我们的目标文件是一个linux可执行文件,格式为E ...

随机推荐

  1. 使用Picasso将加载的图片变成圆形

    http://blog.it985.com/14794.html,感谢该作者 Picasso的GITHUB地址:https://github.com/square/picasso. 怎么实现各种各样的 ...

  2. mac下/usr/local/bin No such file or directory问题解决

    在对composer进行全局配置时,执行 sudo mv composer.phar /usr/local/bin/composer 时,mac报错:/usr/local/bin No such fi ...

  3. Unity Profiler Memory

    当游戏出现闪退时很大概率是内存出现了问题,查找下代码中是否报错导致一直申请内存,还是申请的内存没有释放掉,比如图集等. 比如开着Profiler,一直开关界面看界面用到的图集是否被释放掉. 点击Mem ...

  4. 基于localStorge开发登录模块的记住密码与自动登录

    前沿||我是乐于分享,善于交流的鸟窝 先做写一篇关于登录模块中记住密码与自动登录的模块.鸟窝微信:jkxx123321 关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个 ...

  5. Intellij IDEA去除@Autowired下划线红色提示

    Intellij IDEA通过@Autowired注入的对象,在不改变配置的情况下一直有红色下划线,虽然不影响运行,但是跟小Alan一样有强迫症的肯定受不鸟. 那么怎么去除它呢? 解决方式:改变@Au ...

  6. 解决Win10无法安装.Net Framework 3.5,错误代码0x800F081F

    重新安装了一遍Win10,但是不知怎的无法安装.net framework 3.5,即便是下载离线安装包也没法用. 网上有人说需要使用win10的ISO文件,个人感觉太麻烦,在这里分享一个很方便的操作 ...

  7. 用户不再sudoers文件中

    1.修改/etc/sudoers文件权限 # chmod 777 /etc/sudoers 2.编辑/etc/sudoers文件,添加要提升权限的用户: 在文件中找到root ALL=(ALL) AL ...

  8. Amazon Redshift数据库

    Amazon Redshift介绍 Amazon Redshift是一种可轻松扩展的完全托管型PB级数据仓库,它通过使用列存储技术和并行化多个节点的查询来提供快速的查询性能,使您能够更高效的分析现有数 ...

  9. 2018.08.31 16:26 调试 Swift 和 Pycharm 与 github 之间的链接

    花了一段时间调试Swift和Pycharm的链接,网上查了一下有关信息,再加上自己的摸索,一会就掌握了.

  10. 安装和配置Apache服务器(下)

    Apache的配置文档:http://httpd.apache.org/docs/current/. 1.监听端口: 默认的端口号为80端口,如果端口号冲突改为8080端口. 注:每改一次httpd. ...