坎德沃 发表于 2021-8-17 20:10

新手遇到一个CTF 题卡住了 求关键解题思路

本帖最后由 坎德沃 于 2021-8-18 08:32 编辑

第一次发帖,如果有错误请版主或者热心的小伙伴给点提示

直接进入主题
CTF题名qcb千层饼
main函数的伪代码先上

找到了关键的判断
但是跟进去之后就被恶心到了,果然是千层饼



然后就是不停的return
在第17层发现第一次判断

528DC8里面是这两个参数的异或运算
进入return后继续千层饼套路
后面我跟了200多层跟不下去了
用Xrefe也看不出剩下的部分到底隐藏在哪里
有遇到过这种题目的大佬能提示一下怎么快速找到剩下的判断吗,不能每次遇到这种题都要不停的跟吧!人都麻了!{:1_885:}

Li1y 发表于 2021-8-17 22:29

本帖最后由 Li1y 于 2021-8-17 22:32 编辑

ctfshow的题啊,简单看了一下,套娃大多数的函数都是一样的或者说单纯的起到跳转作用,因此可以用函数大小来筛选,然后把可疑的函数下断点,下面是断点列表(理论上条件断点也行,不过没试过)

最终逆向可知输入的数据n1,n2需要满足条件如下,用数学方法或者Z3可以解决

ts.add(n1 >0)
ts.add(n2 >0)
ts.add(n2 <= 0xD7472^666)
ts.add(n1 ==0x516C5^n2)
ts.add((n2 & 1) == 0)
ts.add((n2/2-n1)== -107702)

number1:548903
number2:882402
yeah!Your flag:ctfshow{c52e1e1a335489030e882402c}

Li1y 发表于 2021-8-17 21:02

这种人工分析不了的就用angr吧

搜索曾经的回忆 发表于 2021-8-18 01:00

OD硬件断点很好解决啊

坎德沃 发表于 2021-8-18 08:31

Li1y 发表于 2021-8-17 22:29
ctfshow的题啊,简单看了一下,套娃大多数的函数都是一样的或者说单纯的起到跳转作用,因此可以用函数大小 ...

感谢大佬解答,我才知道原来我找对函数了,方法也是类似的
通过找到的第一处看length的值然后进行排序筛选
包含套娃的函数大小长度都是94
然后找到另外三个有输入值进行判断的函数



没做过这种套娃的题型,我就担心这种方法找到的只是其中一部分判断,谢谢解答!
另外angr的提示也get了{:1_893:}
页: [1]
查看完整版本: 新手遇到一个CTF 题卡住了 求关键解题思路