[SUCTF 2019]EasySQL

浪子不回头ぞ 提交于 2020-05-02 14:34:51

[SUCTF 2019]EasySQL

  • easy_sql github

  • 打开靶机,是这样的界面

  • 直接用字典 fuzz 看一下过滤了哪些字符,如图

  • 这个和强网杯相似,都是堆叠注入,在公开的源码中可以看到,传入的 query 长度不超过 40

  • 关键的查询代码是 select $post['query']||flag from Flag

  • 输入 1 或 0 查询结果如图,要想办法让 || 不是逻辑或

  • 官方给的 payload 是 1;set sql_mode=PIPES_AS_CONCAT;select 1

  • 拼接一下就是 select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag

  • 关于 sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的 PIPES_AS_CONCAT|| 视为字符串的连接操作符而非 "或" 运算符

  • 关于 sql_mode 更多可以查看这个链接 : MySQL sql_mode 说明

  • 还有就是这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个 || 相当于是将 select 1select flag from flag 的结果拼接在一起

  • 关于非预期解 : *,1

  • 拼接一下,不难理解 : select *,1||flag from Flag

  • 等同于 select *,1 from Flag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!