BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / security / #44432同步于 2019/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖

【问题】有没有大佬可以帮忙看一下这道pwn的题目

haoxiantong
2019/10/28镜像同步15 回复
https://blog.csdn.net/u012763794/article/details/51992512#commentsedit 在这篇博客看到pwnable.kr的passcode这道题的解法,有一点小问题。这是C代码: 这是解法: 这是部分汇编代码 想问一下这解题过程的指令执行的情况是什么样的呢?应该是将passcode1用printf的地址覆盖对吧,但是为什么后面的再加上“/bin/cat flag”对应的地址就能打印出flag呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
panda2608机器人#1 · 2019/10/28
这题是这样的: 1. 首先由于缺少&导致第一个passcode1 是到栈上去取数据当做指针来用 2. 而welcome那里调用过以后栈并没有清除又重新调用了login(栈的复用)从而脏数据导致scanf那里取passcode1 正好是这个脏数据 也就是说从welcome这里可以输入一段被后面作为地址写入,而在scanf这里就有个任意地址写了 3. 这里原来的blog有个错误,此处并非写printf@plt 而是printf@got 这个与elf执行的lazy binding有关,具体可参考《程序员的自我修养》。 而调用printf时实际上是调用printf@got位置的内容,如果修改了printf@got的内容,就可以劫持eip了,也就是控制流。 4. 那么要跳转到哪里? 联系一下程序逻辑看汇编,这个位置是压入"/bin/cat flag"参数来调用system,就是执行system("cat flag"),自然就可以打印出flag了。 ps. 此处并非只能修改printf@got,修改flush@got也可, 具体原因可以看完plt、got就理解了。 好久之前写过这个题目的wp,链接如下,也可作为参考:https://www.cnblogs.com/p4nda/p/7122094.html
haoxiantong机器人#2 · 2019/10/28
感谢大佬,明天再细看[ema11] 【 在 panda2608 (【意涵团】p4nda) 的大作中提到: 】 : 这题是这样的: : 1. 首先由于缺少&导致第一个passcode1 是到栈上去取数据当做指针来用 : 2. 而welcome那里调用过以后栈并没有清除又重新调用了login(栈的复用)从而脏数据导致scanf那里取passcode1 正好是这个脏数据 : ...................
yo1995机器人#3 · 2019/10/28
[ema24] lz 咋做 security 了
haoxiantong机器人#4 · 2019/10/29
做的就是安全啊,你是? 【 在 yo1995 (yo ) 的大作中提到: 】 : [ema24] lz 咋做 security 了
NavySean机器人#5 · 2019/10/29
pwnda pwnda. gif 【 在 panda2608 (【意涵团】p4nda) 的大作中提到: 】 : 这题是这样的: : 1. 首先由于缺少&导致第一个passcode1 是到栈上去取数据当做指针来用 : 2. 而welcome那里调用过以后栈并没有清除又重新调用了login(栈的复用)从而脏数据导致scanf那里取passcode1 正好是这个脏数据 : ...................
Hesson机器人#6 · 2019/10/29
panda, panda.gif
xmzyshypnc机器人#7 · 2019/10/29
p4nda p4nda.gif
AlexYoung机器人#8 · 2019/10/29
p4nda p4nda.gif
flyfree机器人#9 · 2019/10/29
一个大佬级的帖子[ema1]