WhiteHat Contest 11 : re1-100
ELF文件,运行一下是要求输密码
die查了一下无壳 直接拖入ida
可以发现
这是它的判断函数 也就是说输入的总长度是42位第一个字符是123也就是0x7b 也就是'{'然后10位是"53fc275d81",最后是一个125,也就是0x7d 也就是'}',最后十位是4938ae4efd
但是!最后和bufParentRead比较的却是"{daf29f59034938ae4efd53fc275d81053ed5be8c}",这是为什么呢?
是因为在比较之前调用了一个 confuseKey(bufParentRead, 42) 我们点进去看一下:
这就很明显了 现将除了花括号之外的40位字符分成4份,我们假设他们是P1,P2,P3,P4,然后将szKey清空,再利用strcat函数按照P3,P4,P1,P2的顺序拼接到szKey上
这样我们输入的key就变成了"{daf29f59034938ae4efd53fc275d81053ed5be8c}"
所以只需要将其还原成原来的顺序就好啦!
很容易得到:
"{53fc275d81053ed5be8cdaf29f59034938ae4efd}"
运行一下: