Pwnable.kr-mistake
Pwnable.kr-mistake 这一关HINT已经给了,但是光看C真的很难分析出来
题目分析
根据所给信息
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 dhmonkeyhint : operator priority
ssh mistake@pwnable.kr -p2222 (pw:guest)
连接远程环境,下载 C 文件和二进制文件。
1 |
|
可以看出来逻辑还是比较清楚的,就是会读取 password 文件的十个字节,异或 1 之后和你的输入比较,如果相等给 flag,在外面,它权限设置是没有问题的,二进制文件给了 s 权限位,password 对于普通用户也是不可读的。
但是问题是在这个运算
1 | fd=open("/home/mistake/password",O_RDONLY,0400) < 0 |
因为 = 的优先级比较低,因此它先一步算出来 fd<0
为假,值为 0,因此我们的 fd=0 就会在打开文件成功的时候恒成立。fd=0 使用 read 读取将读取标准输入的字符,也就是我们的输入。
因此我们随便给两串异或起来结果为 1 的即可。
题解
连接远程环境,输入 0000000000
和 1111111111
即可获得 flag。
flag:Mommy, the operator priority always confuses me :(
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xia0ji233's blog!