printf格式化字符串漏洞

老的历史漏洞,不过不妨碍学习其中的知识魅力

其中不去讨论怎样去绕过各种防护机制,将在接下来的文章书写总结它(也是个人学习这方面知识的目的,操作系统层面的攻击与防御)

printf
https://blog.csdn.net/qq_43394612/article/details/84900668
https://www.cnblogs.com/0xJDchen/p/5904816.html
https://www.cnblogs.com/ichunqiu/p/9329387.html
https://veritas501.space/2017/04/28/%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%BC%8F%E6%B4%9E%E5%AD%A6%E4%B9%A0/
https://ctf-wiki.github.io/ctf-wiki/pwn/linux/fmtstr/fmtstr_example/ nice
https://www.anquanke.com/post/id/83835 libc databases
https://ctf-wiki.github.io/ctf-wiki/pwn/linux/fmtstr/fmtstr_exploit/ nice
实验吧 printf
https://www.anquanke.com/post/id/83835
https://blog.csdn.net/lee_ham/article/details/82556622

1.

其中有趣的是%d,%s,%x,%n等操作(也就是用到这个概念)

这部分来自icemakr的博客

32位



'%{}$x'.format(index) // 读4个字节
'%{}$p'.format(index) // 同上面
'${}$s'.format(index)


'%{}$n'.format(index) // 解引用,写入四个字节
'%{}$hn'.format(index) // 解引用,写入两个字节
'%{}$hhn'.format(index) // 解引用,写入一个字节
'%{}$lln'.format(index) // 解引用,写入八个字节

////////////////////////////
64位



'%{}$x'.format(index, num) // 读4个字节
'%{}$lx'.format(index, num) // 读8个字节
'%{}$p'.format(index) // 读8个字节
'${}$s'.format(index)


'%{}$n'.format(index) // 解引用,写入四个字节
'%{}$hn'.format(index) // 解引用,写入两个字节
'%{}$hhn'.format(index) // 解引用,写入一个字节
'%{}$lln'.format(index) // 解引用,写入八个字节

%1$lx: RSI
%2$lx: RDX
%3$lx: RCX
%4$lx: R8
%5$lx: R9
%6$lx: 栈上的第一个QWORD



2019.3.19

发表评论

电子邮件地址不会被公开。 必填项已用*标注