从一道题看MySQL8.0下的SQL注入盲注技巧

admin 2022年6月8日10:58:11评论125 views字数 990阅读3分18秒阅读模式

本文来自:西安电子科技大学网络与信息安全学院

作者:安权

前言


随着安全技术的不断完善发展,现在的SQL注入漏洞已经很少能见到了,但是真的是这样吗?新的版本,新的漏洞。不妨来看看这道“easy”的CTF题吧。(题目来源于西电2022miniLCTF比赛)

由于题目环境已经下线了,暂时不能提供复现.....

我还是喜欢那个简单粗暴的世界,实力就是一切。知识就像银币,使用的时候才发生价值。


题目描述:

easySQL:

   题目描述 :登录就给flag

  那么我们需要的就是注出用户名以及密码了。

 打开是个登录框。查看源代码发现 SQL 执行语句为:

从一道题看MySQL8.0下的SQL注入盲注技巧

然后 fuzz:发现把注释符过滤,单引号,select 过滤等等大多数关键字过滤了:

从一道题看MySQL8.0下的SQL注入盲注技巧


思路:

首先说一下需要解决的的问题:

第一:注释符,单引号过滤了怎么解决闭合的问题?

其次:关键词都给过滤完了怎么继续注入?

很容易想到的还是去bypass关键词。

但是这道题有严格的waf,任何关键词绕过都不行!

有些时候 很多事情,做不到就是做不到,做的不好就是做的不好,不管你投入了多少时间,心血和精力,世界只认结果。所以来换个方式,学新的东西。


技巧 No 1.  先尝试解决闭合问题:看到转义符: 没有过滤于是利用 , %00 截断符闭合原来的语句

后端执行语句变为:

从一道题看MySQL8.0下的SQL注入盲注技巧

然后提交username和password的参数看到回显:

从一道题看MySQL8.0下的SQL注入盲注技巧


技巧  No 2.( 关键词都过滤完了,我还注个寂寞??),乖乖去翻MySQL官方手册,发现MySQL8.0版本有一个table关键词官方文档描述TABLE和SELECT有类似的功能。

从一道题看MySQL8.0下的SQL注入盲注技巧

table 能够列出表里面的所有列。

因为table不能像select控制列数,除非列数一样的表,不然都回显不出来,需使用盲注判断

payload:

从一道题看MySQL8.0下的SQL注入盲注技巧

里面的字符是单个判断的,比如库名为mysql

从一道题看MySQL8.0下的SQL注入盲注技巧

以上判断都是正确的,字母大小是按照ascii码大小比较的,如果前一个字符判断不正确,后面的字符都会不正确。


解题:

原理清楚了那么这个题就很容易了:

利用

从一道题看MySQL8.0下的SQL注入盲注技巧

fuzz发现MySQL版本为8.0XXX

脚本如下:

从一道题看MySQL8.0下的SQL注入盲注技巧
从一道题看MySQL8.0下的SQL注入盲注技巧
从一道题看MySQL8.0下的SQL注入盲注技巧
从一道题看MySQL8.0下的SQL注入盲注技巧

 总结


至此这个题就完事了。我一辈子都喜欢跟着让我感觉有兴趣的人,因为在我心目中,真正的人都是疯疯癫癫的,他们热爱生活、爱聊天,不露锋芒希望拥有一切,他们热爱技术。从不疲倦,从不讲那些平凡的东西。

从一道题看MySQL8.0下的SQL注入盲注技巧


长按加入天权信安

走进网络安全世界


原文始发于微信公众号(天权信安):从一道题看MySQL8.0下的SQL注入盲注技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月8日10:58:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从一道题看MySQL8.0下的SQL注入盲注技巧http://cn-sec.com/archives/1096605.html

发表评论

匿名网友 填写信息