游客发表
安恒ctf题库里有一道Web题,安恒我做了三天。安恒题目叫“简单的安恒SQL注入”,打开页面是安恒一个登录框,没有任何过滤提示。安恒我试了万能密码,安恒返回“用户名或密码错误”。安恒试了报错注入,安恒页面直接500。安恒后来发现后端把单引号转义了,安恒但没转义反斜杠。安恒构造 username=admin\&password= or 安恒1=1#,绕过了。安恒那一刻我盯着屏幕笑了——不是安恒笑题目简单,是安恒笑自己前两天的思路全跑偏了。
这个题库的题量不算大,公开部分大概两百多道,覆盖Web、逆向、杂项、密码学、Pwn。但它的风格很统一:不堆砌花哨场景,每道题只考一两个点,挖得深。比如Web方向有一道“文件包含”,源码里 include($_GET['file']) 就一行,但flag藏在Apache日志里。你得先通过包含日志文件触发PHP代码执行,再用伪协议读源码。没有提示,没有hint按钮,纯靠对PHP特性的熟悉程度。这种设计思路和很多商业CTF平台不一样——后者喜欢把题面包装成“某公司内部系统”,加一堆无关功能干扰你。安恒的题更像实验室里的切片标本,干净,直接,考的就是你知不知道那个知识点。
逆向区有几道Android题挺有意思。不是让你脱壳或反混淆,而是给一个APK,让你找硬编码的AES密钥。密钥被拆成三段,分别藏在strings.xml、BuildConfig和assets下的一个二进制文件里。拼起来之后还要处理一次Base64变表。我第一次做的时候只找到两段,卡了半天。后来用jadx反编译,在onCreate里看到一段拼接逻辑,才把第三段挖出来。这种题考验的是耐心和工具链熟练度,不是智力。但恰恰是这种“笨功夫”,在真实渗透测试里用得最多。
杂项区有一道流量分析题,给了一个pcap文件。Wireshark打开,几千个包,大部分是正常的HTTP请求。但有几个包的User-Agent字段长度异常,展开看是一串十六进制。提取出来转ASCII,得到flag的前半段。后半段藏在另一个TCP流的payload里,用tcpflow重组后才能看到。这道题我做了两遍——第一遍用strings直接搜flag格式,没搜到;第二遍老老实实跟着TCP流走,才发现数据被分片了。题库里这种“反捷径”设计很多,逼着你用正确的方法。
密码学部分偏基础。RSA共模攻击、维吉尼亚爆破、哈希长度扩展,都是经典题型。但有一道“LCG”题让我印象深刻:给了三个连续输出,参数不全,需要先恢复模数再恢复乘数和增量。我翻了两篇论文才把公式推出来。做完之后回头看,其实代码不到二十行,但推导过程花了一晚上。这种题在真实CTF比赛里很少见,因为太数学化。安恒把它放进来,可能是想筛出真正对密码学有兴趣的人。
Pwn方向我碰得少,只做了几道栈溢出。有一道保护全关,system("/bin/sh")直接可用,但buf大小是动态计算的,需要先泄露长度再构造payload。我用了两次交互才拿到shell。题库里的Pwn题普遍偏简单,适合入门,但进阶题也有,比如一道heap题用了tcache poisoning,需要绕过safe-linking。我卡在那里至今没做出来。
整体用下来,安恒ctf题库适合两类人:一是刚学完基础想找题练手的,二是想查漏补缺的老手。它的难度曲线不是平滑上升的,而是阶梯式的——每个方向都有几道特别难的题卡在中间,像路障一样。你绕不过去,只能硬啃。啃完了,水平就上一个台阶。我现在的习惯是每周挑一道没做出来的题重新看,有时候突然就通了。那种感觉比刷十道简单题爽得多。
友情链接