20145306 逆向与Bof基础

本文介绍了通过直接修改机器指令及构造输入参数实现缓存区溢出(BOF)攻击的方法,展示了如何针对Linux可执行文件pwn1进行逆向工程,以运行隐藏的getShell代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逆向与Bof基础 实践

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

本次实践的对象是一个名为pwn1的linux可执行文件。 显任何用户输入的字符串。

该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。

通过修改机器指令是先运行shell代码片段:

将可执行文件zwj反汇编:objdump -d zwj | more

可以看到main函数中call 8048491 对foo函数进行了调用,对应的机器指令e8 d7 ff ff ff ,,e8即跳转之意,使eip(指向下一条指令)为eip + d7ffffff,便会跳过当前指令的下一条指令,执行eip+d7ffffff指向指令。

想调用getShell,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码c3ffffff。 

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

反汇编:

用gdb调试来尝试输入确定哪几个字符会覆盖掉返回地址:

 

尝试输入1,2,3,4,5各十个,结果显示 代码段错误,查看eip的值,确定返回地址的位置在十个4之中。

 

将4之前的数字不变,十个4变为123456789a,构造新的输入。查看eip寄存器的值,确定返回地址的位置。

 

构造合适的输入。由于我们没法通过键盘输入\x7d\x84\x04\x08,所以先生成包括这样字符串文件。然后将input通过管道符“|”,作为zwj的入造成缓存区溢出,刚好将shell的地址覆盖到了返回地址上,运行shell。

 

posted on 2017-02-28 20:46  20145306张文锦 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/besti145306/p/6480842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值