攻防世界PWN刷题笔记(引导模式)1-3

感谢组长和其他高手让我入门学pwn,个人感觉做题和看课程应该一块推进,光看课程,容易疲乏,而且缺乏经验。只做题,学的知识缺乏体系,因此决定立志每天看课+做题(先保证不挂科的前提下),逆向我也觉得应该这样搞。

1.get_shell

直接nc连接后cat flag即可,不过多讲述。

2.hello_pwn

不写脚本思路

先用IDA分析main函数。

其中read函数第一个参数0表示从键盘中读取数据,因此就是输入。 我们点击n,看看内存布局是什么。其实在这里就可以怀疑这道题是栈溢出了。

通过观察看到,n和goal相差4的字节。 每一个0x1就是一个字节。我们通过read输入了大于4字节的东西,多的就会"溢出"跑到goal的地址,从而篡改goal的内容。我们尝试不编写脚本,直接输入看看。需要注意一个字符占1字节,我们需要先输入4个字符

没有效果。这是因为我们输入的数字多占了好多字节。汇编语言对goal使用dd定义,也就是4个字节。4个字节对应4个字符,所以我们需要考虑把数字转换为4个字符才可。在IDA中,大于等于两字节的数据的存储方式和我们的阅读习惯相反。IDA将数字转为字符是nuaa,(大于2字节,是小端序,所以我们需要将其转换为aaun才可,与我们阅读习惯相反)

大家看,成功了,下面用nc连接靶机正常输入就可以了。

写脚本思路

用pwntools写脚本,一是锻炼自己的能力,二是顺手给自己增加自信。但是py脚本我并不擅长,只是摸着石头过河。

python 复制代码
from pwn import *#首先引入pwntool库
p=remote('61.147.171.105',52789)#链接靶机
payload=b'a'*4+p32(1853186401)#构造payloacd,首先填充4字节无意义数据,再用p32把目标数字转换为4字节来修改指定变量的值
p.sendline(payload)#发送paylaod
p.interactive()

最终会在终端输出flag。

3.level0

checksec发现没有栈保护。

这个函数会在main函数结束后执行。main函数return的就是这个函数的调用结果。这个函数执行的时候明显会调用read函数。调用read函数,明显这里应该存在溢出。

但是发现函数的地址一直在低地址,这些函数都在高地址,怎么实现高地址对低地址的控制?好烦!查看writeup吧。

发现还是对栈溢出理解不到位。

这应该是栈帧视图。观察read函数上的buf字符数组,其长度为 80.它的下面还有s和r,r肯定保存着返回地址,s应该是保存的寄存器内容。我们只需要利用栈溢出,修改r的内容。s的长度是8.据此写出payload。具体的解释看下图,我们填满了函数自己的栈,溢出的内容覆盖了r.

我们看这个函数的汇编语言。在call read之前,肯定已经将下一个指令的地址储存在栈顶部了。我们的read函数会多让我们输入字节。我们只要填满buf字符数组.

payload:

python 复制代码
from pwn import *#首先引入pwntool库
p=remote(' 61.147.171.105',55683)#链接靶机
payload=b'a'*0x88+p64(0x400596)#构造payloacd,首先填充88字节,因为64位,再用p64覆盖地址
#需要注意是16进制,我用10进制没打通,估计需要进制转换
p.sendline(payload)#发送paylaod
p.interactive()#一会儿输入命令用

直接出现flag了。

4.level2

不知道为啥level2竟然比level1做出来的的人还多。现在开始尝试做这一道题。题目提示面向返回,估计八成还是栈溢出。

----------------------待更新---------------------------------------------------------------------

相关推荐
DKPT10 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
QT 小鲜肉12 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇
笔记·读书·孙子兵法
星轨初途13 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
QT 小鲜肉13 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇深度解析与现代应用
笔记·读书·孙子兵法
love530love16 小时前
【笔记】ComfUI RIFEInterpolation 节点缺失问题(cupy CUDA 安装)解决方案
人工智能·windows·笔记·python·插件·comfyui
愚戏师16 小时前
MySQL 数据导出
数据库·笔记·mysql
摇滚侠16 小时前
2025最新 SpringCloud 教程,教程简介,笔记01
笔记·spring cloud
RickyWasYoung18 小时前
【笔记】智能汽车、电动汽车政策文件
笔记·汽车
love530love21 小时前
【保姆级教程】Windows + Podman 从零部署 Duix-Avatar 数字人项目
人工智能·windows·笔记·python·数字人·podman·duix-avatar
草莓熊Lotso1 天前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--01.第N个泰波拉契数,02.三步问题
开发语言·c++·经验分享·笔记·其他·算法·动态规划