简述

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

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

利用order by 盲注

order by

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

用法

1
2
3
# 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盲注好用。