0%

我的pwn学习之路——第二天

几天不摸,感觉又回到解放前了。

以后一定要多尝试学习不同的东西,保持热爱,放好心态!

pwn学习之路系列的第二天,开坑!

这里记录一下写题的一些工具使用和碎碎念

当你拿到题目之后……(接下来用一道入门级别的题目做栗子)

第一件事要做的是checksec 他可以查看保护机制,这样有理由后续做题的分析

1
checksec 文件   #看开启了哪些保护机制

虽然开启不开启我都不会写吧,但是还是要装装样子滴

然后可以用objdump看一些东西,比方说打印函数

1
objdump -D 文件名   #可以看到文件的全部

用pwngdb的时候很难看到所有的东西,提前看一看还是很重要的

1
objdump -R 文件名   #可以看到打印函数

看到打印函数是很有用的

接下来就可以上pwngdb了

1
gdb 文件     #启动pwngdb

一些简单的操作之前有篇文章写的有,我不额外多写了,讲点实际做题中用到的东西

输入一大串字符,溢出与否有回显,这个时候同学就想,那我可以一点一点的试,什么时候正好溢出了,不就可以算偏移了吗?现在有个更简单快捷的办法

1
cyclic 要输入的字符的长度

可以看到是由英文字母组成的有规律的字符串,因此最大可以设置的值为26×26×26=456976

复制生成的字符串,在pwngdb中进行调试,当出现报错后,就可以再通过cyclic计算要偏移的字节了

这里报的错其实指的是输入的十六进制的字符,根据指出那一段溢出,可以接着算偏移

为什么呢?

因为恰恰就是这几个字符去覆盖了main返回地址,所以可以数数这一串字符距离字符串首字母间隔了多少字符

1
cyclic -l 报错的4位字符