CTF中PWN解题思路(个人笔记)

一.test your nc

一般先开启靶场环境 后再Ubuntu终端中进行nc指令

(以BUUCTF为例)

在输入时cn可能会有冒号,输入之后出现这种情况,把冒号删掉改为空格即可

之后可能会出现光标在下一行闪烁,此时输入指令ls查看文件找到flag这个文件

在输入cat这个命令查看文件  cat flag      即可找到flag

二.ROP

这道题会用到IDO

用checksec 查出此文件为64位的

用IDA 打开文件之后

shift+F12打开将文件 

     

     

/bin/sh为执行函数的标准函数从这里找到突破口 ,之后找到这个函数的地址 

push是函数进行的标志

此函数在fun函数中,进入这个函数找到push开始的位置是这个函数进入程序的标志,从这里找到函数/bin/sh的位置(直接点/bin/sh进去的那个位置并不是此函数的位置)

在页面上翻找到fun函数的位置的第四行即为/bin/sh的位置

找到调用函数的位置在ubuntu中编写脚本运行他

首先用vim 文件名.py创建文件夹

之后打开文件夹编写脚本

(remote为攻击远程,process为打本地)

0x401186是push的地址,因为函数是从此处开始运行

然后python3 文件名.py执行程序运行

输入ls  在输入cat flag找到flag

ret2text

ESP是堆栈指针寄存器,存放执行函数对应栈帧的栈顶地址(也是系统栈的顶部),且始终指向栈顶;EBP是栈帧基址指针寄存器,存放执行函数对应栈帧的栈底地址,用于C运行库访问栈中的局部变量和参数

确定后门地址和变量到栈底的距离,填充中间空间并覆盖ret为返回地址

其中确定变量到栈底的距离很关键也是难点

详细分析上例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值