pwnable.kr fsb 知识点总结

编程入门 行业动态 更新时间:2024-10-28 03:29:00

pwnable.kr fsb  <a href=https://www.elefans.com/category/jswz/34/1770093.html style=知识点总结"/>

pwnable.kr fsb 知识点总结

这题是关于格式化字符串漏洞的题目

对于%n 写数据以前一直很模糊,不知道是往栈上写数据,还是以栈上的地址指向的地方写数据,好好想了这题后明白了,%n 是往栈上的地址指向的地址处写入数据
比如:
printf(“pwn%n”, &a);
printf("%d\n", a);
32位下 会先把&a 压入栈中,在压入format_addr,然后call printf
此时栈上的情况为:
esp -> ret
esp+4 -> format_addr
esp+8 -> &a -----> ??

这条printf语句不是把 &a给覆盖掉,而是往 a的地址中写入数据,
所以输出结果为:pwn3

exp有关知识点:

python中有关格式化控制式字符串的处理有多种:

"%%%dc%$n"%(index) //  %% -> 转义为%, %d  ->转义为index
//等价于 ->  %indexc%$n"%{}c%$n".format(index)   // 花括号会被index代替(我的理解)
//等价于 %indexc%$n"(%{}c".format(shell&0xffff)) + "%{}$hn".format(index)//其中"%{}$hn" 的作用是解引用,写入两个字节
//由于ebp_main 与 callexecve 的地址前两个字节相同,故只需要写入两个字节即可, shell通过与0xffff 进行与操作, 使得高两个字节为0,保留低两个字节
//通过这种方式还可以大大减少发送的字符

另外:只需进行三次漏洞利用即可getshell,但是第四次 输入buf的值的时候不能乱输入,至少需要输入7个字符把某些东西覆盖掉(个人理解,具体原因我不知道),不然交互的时候会出现EOF错误

更多推荐

pwnable.kr fsb 知识点总结

本文发布于:2023-07-28 17:51:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1267579.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:知识点   pwnable   kr   fsb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!