SQL注入之进阶篇
来源:互联网 发布:小米盒子网络连接不上 编辑:程序博客网 时间:2024/06/09 20:06
sql注入是如今关注比较广泛的安全问题之一,所以我们也进行探讨一下,当下比较流行的sql注入。
5.1、大小写变种
这种技巧适用于关键字阻塞过滤器不聪明的时候,我们可以变换关键字字符串中字符的大小写来避开过滤,因为使用不区分大小写的方式处理SQL关键字。
例如:(下面的代码就是一个简单的关键字阻塞过滤器)
function waf($id1){
if(strstr($id1,'union')){
echo 'error:lllegal input';
return;
}
return $id1;
}
这段代码的缺陷就在strstr()函数是对大小写敏感的,所以我们可以通过大小写变种来绕过。
=
5.2、URL编码
URL编码用途广泛,可以通过它绕过多种类型的输入过滤器。
function waf($id1){
if(strstr($id1,' ') || strstr($id1,'/**/')){
echo 'error:lllegal input';
return;
}
return $id1;
}
双URL编码有时候会起作用,如果Web应用多次解码,在最后一次解码之前应用其输入过滤器。
因为双URL编码,第一次解码%2f%2a进入输入过滤器,所以成功绕过了。当然这个使用前提是后面有一个URL解码。
5.3、SQL注释
很多开发人员认为,将输入限制为单个就可以限制SQL注入攻击,所以他们往往就只是阻止各种空白符。
function waf($id1){
if(strstr($id1,' '))z
return;
}
return $id1;
}
但是内联注释不使用空格就可以构造任意复杂的SQL语句。
5.4、空字节
通常的输入过滤器都是在应用程序之外的代码实现的。比如入侵检测系统(IDS),这些系统一般是由原生编程语言开发而成,比如C++,为什么空字节能起作用呢,就是因为在原生变成语言中,根据字符串起始位置到第一个出现空字节的位置来确定字符串长度。所以说空字节就有效的终止了字符串。
只需要在过滤器阻止的字符串前面提供一个采用URL编码的空字节即可,例如:
%00' union select username,password from users where username='admin' --
- SQL注入之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQL注入攻击三部曲之进阶篇
- SQl注入-进阶篇
- SQL注入教程之进阶篇 |Findnet.com.cn
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- SQL注入漏洞全接触--进阶篇
- 题目学习——一开始我是拒绝的
- Java实现读取pdf文件内容(how to read pdf in java)
- leetcode---binary-tree-postorder-traversal---树后续遍历
- C#工程的模块化实现
- 《Java基础与案例开发详解》(五)
- SQL注入之进阶篇
- 一分钟让你明白货币贬值现象
- 端口扫描
- 函数传值
- 线程池的理解
- 30天自制操作系统day2
- FTPrep, 105 Construct Binary Tree from Preorder and Inorder Traversal
- JAVA提高篇(16)--ObjectInputStream和ObjectOutputStream类
- 【LeetCode】C# 1、Two Sum