Question8:mistake

We all make mistakes, let's move on.
(don't take this too seriously, no fancy hacking skill is required at all)

This task is based on real event
Thanks to dhmonkey

hint : operator priority

ssh mistake@pwnable.kr -p2222 (pw:guest)


Writeup:

水题,先看源码

hint已经说得很清楚是一个运算符优先级的问题,从头看下来在17行的位置就能发现问题,因为 < 的执行顺序是优先于 = 的,所以这里fd的值应该恒为0,后面的read变成从stdin里面读取数据。

所以第一次输入就是pw_buf, 第二次输入就是pw_buf2,中间那个XOR逆一下,假如以“0123456789”作为第一次输入,那个分别把'0'~'9'与1异或得到的就是第二次输入。
稍微注意一下这里的函数以字符串接受输入,但是照上面那个输入的话这里其实无所谓数字型或者字符串型,因为结果是一样的,pw_buf2就是“1032547698”。