前言
格式化字符串一把梭真的好爽!!!!!!
再也不用绞尽脑汁去gdb调试多少个字节和几位了!!
呜呜呜,花了一个通宵把这一系列搞定,喜极而泣,特此记录
以前的我做这类题心理状态:

现在的我:

总之就是非!常!爽!
这里我用的例题是 [第五空间2019决赛] 里的pwn5,考察到的知识是单纯的格式化字符串。
格式化字符串原理及利用
原理就不赘述啦,详情参考ctfwiki上的内容
或者搜索下,其他很多大佬写的文章都超级棒!!
利用的话,如下:
利用格式化字符串的漏洞,一般会有如下几种操作:
泄露栈内存
获取某个变量的值
获取某个变量对应地址的内存
泄露任意地址内存
利用GOT表得到libc函数地址,进而获取libc,进而获取其它libc函数地址
盲打,dump整个程序,获取有用信息
pwntools中自带的格式化字符串漏洞函数
做题的时候容易遇到两个问题:
- 找不到偏移量是多少,也就是%n$x中的n为多少
- 写入指定地址用%n构造字节数要算的很累,而且容易算错
然后!为了解决这两个问题我翻了好久,总算翻到了点好用的!

一、针对第一个找不到偏移量的问题
pwntools自带了FmtStr函数,使用方法如下:
def exec_fmt(pad):
p = process("./fmt")
格式化字符串漏洞利用

最低0.47元/天 解锁文章
5361

被折叠的 条评论
为什么被折叠?



