CTF|check writeup

CTF|check writeup

总体思路是想让你输入一串字符
输入的字符要使在400f51函数返回值为true 则到pwn环节
CTF|check writeup

函数里面条件要求几个变量等于某些值CTF|check writeup

一开始的想法是 这些变量都在bss段 想试试能不能往bss写入它要求的值

CTF|check writeupCTF|check writeup
然后发现gbd也没办法调试
然后我就开始看 给出函数的内容 …

我是从下往上看 条件中需要602060处值为90 所以v2应该等于25 因为这样对应v38 = 90
以此类推 v2=25;v3=23;v4=25;v5=37

CTF|check writeup

希望通过这些值反推回去
然后看到函数中if(v7=1) if(v7=2)的分支都将v5最后赋值为64 不满足要求
然后我就确定突破口在v7=0的分支上 ,而对于v7等于零意思是在这个三次的循环中没有出现v6为零的情况,即输入的字符串没有0.

CTF|check writeup

绕后有着上面不知道对还是错的思路 我就开始v10 v11 v12的值
v12 和0011 1111相与 得到 v5 我推出v12 = 37(和v5一样)
然后v12右移六位后为零 v4 = 4*(v11&0xF) 推出v11=6
然后再往上推 就觉得不对劲 估计思路错了
没能通过secret key这关…
CTF|check writeup
CTF|check writeup
CTF|check writeup