无列名SQLI
@ s1ye · Monday, Aug 12, 2019 · 1 · Aug 12, 2019

简述

刚好最近又遇到了字段名被过滤的情况,所以在这里总结一下,后续若遇到其他新颖的方法会持续更新在此。

ctf中比较常见,但是之前在绕某waf的时候的确遇到了类似的情况。

利用order by 盲注

order by

ORDER BY 关键词用于对记录集中的数据进行排序。(默认对记录进行升序排序)

用法

# order by 可以通过两种方式进行排序
1. order by +字段名 (表示根据该字段的值进行排序)
2. order by +第N列(表示根据第N列的值进行排序)

Mysql中的比较方式

在mysql中是通过字符的ascii码进行大小比较的。也就是说:

0 < 9 < a < z < A < Z

注入

默认是升序,因此当对应位大于要查询的字段值的时候排序会发生变法。

这里有一点需要注意的是,当查询到最后一位的时候最终排序会有一点小差异

可以发现,当字符长度,ascii码都完全相同时,原数据会排至首位,因此在利用脚本爆破时记得结果的末位ascii码+1。

利用子查询回显注入

Mysql子查询

直接看图,原理比较简单,注意的是子查询的 as x 可以缩写(去掉as)。

总结

子查询比order by盲注好用。

关于我

s1ye的❤️博客

平时会记录一些学习笔记或分享有趣的姿势

一个热爱技术的普通网络安全从业者

团队

所在团队🌈 :ChaBug

ID:s1ye(撕夜,)

可以通过email1联系我,

- 2020 年 2 月 8 日更新


  1. h4ckdeam@gmail.com ↩︎

其他

如果喜欢我的文章,或者有幸某篇文章对您有所帮助。

可以送我一杯咖啡~

我的微信赞赏码

wx

欢迎救济平困人民,非常感谢🙏。