Binary Bomb Lab第五阶段:卡在XOR指令处,求解输入值
Binary Bomb Lab 第五阶段:第6、7个输入值求解
先看你给出的关键汇编片段:
0x00005555555568cc <+11>: xor 0x8(%rsp),%esi 0x00005555555568d0 <+15>: cmp $0xffffffff,%esi 0x00005555555568d3 <+18>: jne 0x555555556900 <fun5+63>
已知条件:
%esi存的是你输入的第6个整数0x8(%rsp)存的是你输入的第7个整数
要跳过jne跳转,必须让cmp的结果为相等——也就是第6个输入 XOR 第7个输入 的结果等于0xffffffff。
推导过程
XOR运算的核心性质:如果a XOR b = c,那么b = a XOR c(反过来也成立)。这里c是0xffffffff,所以:
- 随便选一个值作为第6个输入
x,第7个输入就是x XOR 0xffffffff - 32位有符号整数里,
0xffffffff等价于-1,所以x XOR -1其实就是对x的每一位按位取反。比如x=0时取反是-1,x=3时取反是-4。
可行输入组合示例
- 第6个:
0,第7个:-1 - 第6个:
7,第7个:-8 - 第6个:
123,第7个:-124
只要满足上述XOR关系的整数对,都能通过这个检查。
内容的提问来源于stack exchange,提问作者Frances Cortuna
相关产品推荐
相关产品推荐

