作者:dabaisuv,原文链接:https://dabaisuv.github.io/2024/01/05/CTF-2024-Write-Up
CTF 2024 Presented by Cyandev https://ctf.cyandev.app 的通关笔记
1.Check in
看情况是需要我输入一个flag
随意输入字母a并单击提交,出现了如下提示。
这是javascript
的alert
提示,这里我们可以通过hook alert
并栈回溯找到调用源,但是我们先试试直接寻找submit
的回调函数。如图,找到click
回调。
,由此再跳转到源码处,断点后发现此处函数为空。
进一步跟下去,各种跳转,应该是一种反跟踪措施。正着走行不通就倒着hookalert
试试,
在控制台执行以下命令:
1 | // 保存原始的 window.alert 函数 |
上面的命令会hook住alert
函数,并在被调用时触发调试器中断。
回到提交flag处再次点击submit
,此时alert
被调用并触发中断。
栈回溯找到if
判断,将条件直接改为改为true
并再次运行。
成功!
直接成功过了,其实还有一种方法可以获取flag1的真实值,就是直接一路跟到它的checkFlag1
函数并修改暴力破解的。
Challenge 2也可直接修改if的判断值绕过。
作者还给了一个通关奖励,需要flag1的真实值。
可以利用我上面的暴力破解法获取真实值,打码了。
最终是一个支付宝口令红包,不过好像被领完了。