首页
社区
课程
招聘
[翻译]基于表单的SQL注入(手动)
发表于: 2017-7-12 09:48 7518

[翻译]基于表单的SQL注入(手动)

2017-7-12 09:48
7518

很多应用程序都有登陆表单,比如,Facebook、Gmail和其它的一些程序,都会要求你提交用户名和密码。今天来看看如何手动进行基于表单的SQL注入攻击。

开始吧!我们使用的是Dhakkan平台。


Lesson 11


本节和前面的Lesson 1, 2, 3, 4有很多相似之处,如果你对前面几节并不熟悉的话,建议先阅读前面的部分(传送门)。

首先,使用浏览器打开该实验室http://localhost:81/sqli/Less-11/(注:具体以个人配置为准)。

Lesson 11被视为基于单引号(')字符串的POST请求错误。当你进入该实验室后,会发现页面包含了一个提示输入用户名和密码登陆Web服务器的文本框,如上图所示。由于不是它的用户,自然也就没有正确的用户和密码可供我们登录使用,但是耐不住寂寞啊,我们还是想试试看能否通过SQL注入攻击的方式进入到该数据库。为此,首先得测试一下该数据库是否可被SQL注入攻击。

由于Lesson 11是基于单引号(')的错误,所以我们就使用单引号(')来进行测试。

输入用户名: '

由上图可以看出,当我们破坏了该查询语句时,页面给出了错误信息(蓝色文字部分),这就可以看出该数据库是可被SQL注入攻击的。

先来看看错误信息:The right syntax to user near '''' and password='' LIMIT 0,1'

现在我们就需要 # (单行注释)的帮忙了,再向用户名 ' 后添加一个 # 来使该查询语法正确。

输入用户名:'       #

由上图可以看出,虽然我们成功地解决了语法报错的问题,但登陆还是失败了。不过注意到 ' 和 # 之间的语句应该都可以正确地执行。接下来要找出后端查询中使用了多少特定列,这里利用子句order by

用户名:' order by 1 #

用户名:' order by 2 #

用户名:' order by 3 #

由上图可以看出,当测试到order by 3时,我们收到了报错信息,这就意味这该后端查询中使用了两个特定列。

现在我们在 '# 之间插入union select选中全部的两列。

用户名:' union select 1,2 #

由上图可以看出,我们登陆成功啦。那么接下来,是时候获取数据库中的数据了。

和第一节相似,先来看看数据库名。

用户名:' union select 1,database() #

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

接着获取当前数据库的所有表名。

用户名:' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

由上图可以看出,所有表名为:

T1: emails

T2: referers

T3: uagents

T4: users

接着获取表users的所有列名:

用户名:' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

由上图可以看出,表users有三列:

C1: id

C2: username

C3: password

在本节的最后,我们一起来看看表users中所有的用户名和对应的密码。

用户名:' union select group_concat(username),group_concat(password) from users #

由上图可以看出,表users中所有的用户名及对应的密码为:

以上就是本节全部内容。


Lesson 12


有时候你会使用单引号(')来测试一个Web页面是否是可被SQL注入攻击的,或者你已经知道了该Web页面是可被SQL注入的,试着使用单引号(')进行攻击,但是会发现失败了,而且也没有得到任何相关的报错信息,这有可能是因为开发者将单引号(')列入了黑名单。

本节和Lesson 11相似,但是如果你还是企图使用单引号来破坏后端查询,结果可就大不一样了。听说Lesson 12被视为基于双引号(")字符串的POST请求错误。那么来试试看吧。

用户名:"


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 4
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
请教一下,根据我的实践尝试,在本文课程里只能用#注释,而之前使用--+的办法不行了,这是为什么呢?
2017-7-21 10:17
0
雪    币: 522
活跃值: (251)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
弟子规 请教一下,根据我的实践尝试,在本文课程里只能用#注释,而之前使用--+的办法不行了,这是为什么呢?
这个原因我也不知道,抱歉。希望有哪位对此比较懂的朋友能解答一下
2017-7-21 14:42
0
雪    币: 4
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
hesir 这个原因我也不知道,抱歉。希望有哪位对此比较懂的朋友能解答一下[em_52]
我找到原因了,篇幅较长,我另起了一篇,请参见:http://bbs.pediy.com/thread-219378.htm
2017-7-22 11:19
0
雪    币: 522
活跃值: (251)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
弟子规 我找到原因了,篇幅较长,我另起了一篇,请参见:http://bbs.pediy.com/thread-219378.htm
学到了,感谢分享
2017-7-22 18:07
0
游客
登录 | 注册 方可回帖
返回
//