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 :(