码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入(dvwa环境)

时间:2018-03-05 00:50:32      阅读:483      评论:0      收藏:0      [点我收藏+]

标签:用户名   默认   ber   结合   地址栏   from   nta   img   org   

首先登录DVWA主页:

技术分享图片

1、修改安全级别为LOW级(第一次玩别打脸),如图中DVWA Security页面中。

2、进入SQL Injection页面,出错了。(心里想着这DVWA是官网下的不至于玩不了吧。。)

网页错误提示:Parse error: syntax error, unexpected ‘[‘in C:\xampp\htdocs\DVWA\vulnerabilities\sqli\index.php on line 65

赶紧打开index.php文件,这提示报错65行看看PHP代码!(内心是不愿意的,我是学java的)

$num = mysqli_fetch_row( $result )[0];

---->猜测放回类型不是数组,就将[0]去掉试了一下就可以了=。=(留给PHP的朋友去看具体吧,在下先用着)

3、一次奇葩的经历后开始尝试第一次的SQL注入。

根据上面的提示,输入用户的id,它将返回了关于这个user的信息。这里先输入了“1”试试。

技术分享图片

成功返回数据,发现浏览器的地址栏的url成了:

http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit# 

换个输入值2又变成:

http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=2&Submit=Submit# 

输入单引号‘尝试,发现页面报错:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘‘‘‘ at line 1

由于用户输入的值为ID,因此我们习惯判断这里的注入类型为数字型,因此尝试输入:1 or 1=1 ,看能否查询:

技术分享图片

并且地址栏为http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=1+or+1%3D1&Submit=Submit#

所以猜测后台程序将此值当做字符型,于是输入:1‘or‘1‘=‘1,结果成功返回多行数据:(好激动的说)

技术分享图片

从OWASP测试指南上(http://www.owasp.org.cn/owasp-project/download/OWASP_testing_guide)看还有

Union查询SQL注入、盲SQl注入、SUBSTRING(text,start,length)、预程序注入。

接下来分析字段数:有两种方法

方法一:用order bynum语句。
分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,

要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。

,所以字段数为2

方法二:直接用union select来猜测字段数。
因为当字段数不对应的时候,它也是会发生报错的!
1‘ union select 1#-------出错The used SELECT statements have a different number of columns
1‘ union select 1,2#-------正常,所以字段数为2

技术分享图片

使用Union all结合利用user(),及database(),version()等三个内置函数。得到连接数据库账户信息、数据库名称、数据库版本信息。

1‘ and 1=2 union select user(),database()#------成功得到数据库信息!!!

技术分享图片

使用Union all结合利用mysql默认的数据库infromation_scehma,该数据库存储了Mysql所有数据库和表的信息。

1‘ and 1=2 union select 1,schema_name from information_schema.schemata#---------(可怕~)

技术分享图片

总结一下今天SQL注入的第一次体验:大致思路如下

1、寻找注入点,应该可以通过web扫描工具实现。


2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。

3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)

4、可以通过获得的用户信息,寻找后台登录入口。

5、利用后台了解进一步信息,提权,直到拿到服务器权限。

非常感谢原博主的分享,受益颇深:http://blog.csdn.net/qq_20745827/article/details/68944753

SQL注入(dvwa环境)

标签:用户名   默认   ber   结合   地址栏   from   nta   img   org   

原文地址:https://www.cnblogs.com/zysps1/p/sql_insert.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!