pwnable.kr之mistake

来源:互联网 发布:只有我知bilibili 编辑:程序博客网 时间:2024/04/29 07:49


mistake




程序流程很容易,就是从password中读取10个字节,然后自己输入10个字节,与十个1的抑或之后,比较手动输入的和password输入的,如果相等就输出flag

根据题目的提示,是操作符优先级的问题。

if(fd=open("/home/mistake/password",O_RDONLY,0400)< 0)

这句代码中,<的优先级大于=,所以先进行比较,后进行赋值,而open打开一个文件,任何情况下返回都不会小于0,因此比较之后就等于0,fd=0了,对read函数来说,fd=0就是从标准输入读入,因此实际上buf1就是用户自己输入的10个字节。所以就简单了。

先输入10个0

因为0000000000 ^ 1111111111 = 1111111111

所以在input password再输入1111111111

这样就满足了strncmp的判断


 

flag:Mommy, the operator priority always confuses me :(

0 0
原创粉丝点击