Less-1
1.LIMIT的用法
2.concat与group_concat的使用
3.information_schema常用到的三个表:
information_schema.schemata(所有数据库名称)
information_schema.tables where table_schema=‘数据库名称’(查询该数据库中所有的表名称)
information_schema.columns where table_name=‘表名’(查询该表中所有的列名)
通常group_concat与information_schema同时使用,能够在一个可显示的位置将所有数据一起输出
4.注释–+也可换成#(注:#为不安全字符需url编码为%23)
关于url编码中的保留字符和不安全字符
5.sql语句中单引号,双引号,反引号的使用
sql中存在一些保留字,类似C++中的一些int、 float 等
把与保留字相同的表名或者字段名用[ ]括起来,这样就能把SQL语句保留字区分开来
原SQL语句
Select * from TABLE where id =’$id’;
Less-2
id为整数,只需将1中的 ’ 去掉即可,playload与1相同
原SQL语句为
Select * from TABLE where id =$id;
Less-3
原SQL语句为:
Select login_name, select password from table where id= (‘$id’)
将less-1中‘后加)其他相同
Less-4
原SQL语句为:
s
q
l
=
"
S
E
L
E
C
T
∗
F
R
O
M
u
s
e
r
s
W
H
E
R
E
i
d
=
(
“
sql="SELECT * FROM users WHERE id=(“
sql="SELECT∗FROMusersWHEREid=(“id”) LIMIT 0,1";
将less-1中‘改为")其他相同
Background-2 盲注的讲解
一.基于布尔的盲注
1.CAST()函数
2.if ifnull casewhen语句
case when具体用法
二.基于报错的盲注
1.随机函数rand()
基于报错的盲注原理
(执行插入操作时rand函数会再次执行,当插入的值已经存在时报错)
2.语句执行成功会返回0,0按位取反(~0)得
最大数18446744073709551615,对其进行操作会产生溢出报错,可用exp()函数进行报错注入
3.正则匹配
select user() regexp ’正则表达式’
ps:匹配是对表中所有存在的项匹配,与limit 0,1无关。
mysql中使用Like代替regexp
4.利用一些函数的语法形成错误
如:
5.基于时间的盲注
利用sleep()函数判断语句是否执行成功
或者利用BENCHMARK(count,expr)用于测试函数的性能,参数一为次数,二为要执行的表达
式。