一步一步学习 Web 安全 2.3 SQL 注入 dvwa 简单

2020-05-19  本文已影响0人  f1a94e9a1ea7

前面了解了 SQL 注入原理和步骤,现在来简单的上手体验一下。

如果还没有搭建 dvwa 的话移步 DVWA 的安装 进行搭建。

练习

  1. 把 dvwa 的难度调到 low,进入 SQL Injection

  2. 试着输入:1,点击 submit 后,页面上显示了 first name 和 surname,可见这里是根据输入的 id,返回该 id 对应的 first name 和 surname 两个字段,再随意输入一个很大的数字,比如 233,页面没有任何返回,猜测当数据库里不存在这个 id 时,不返回任何数据

  3. 判断是否存在注入,输入:1',页面返回异常,说明极有可能存在注入

  4. 输入:1' and '1' = '1,页面正常执行,输入 1' and '1' = '2,没有返回数据

  5. 输入: 1' or '1' = '1,返回了所有数据,说明确实存在 SQL 注入

  6. 开始获取数据:1' union select database(), user() # ,可以看到返回了两个数据库和对应的用户名。
    这里有一个特别要注意的是如果输入:
    1' union select database(), user(), version() #
    或者:
    1' union select database() #
    都会返回报错,可以看到报错内容是:The used SELECT statements have a different number of columns,意思是 union 前后两条语句返回的列数不一样。
    前面已经知道输入:1,返回了两个字段,那么 union 后面这条语句也需要返回两个字段,1个或者3个都会报错。

  7. 获取当前数据库:1' union select 1,database() #

  8. 获取库名后就可以获取表名:1′ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

还想获取其他数据可以参考上一节的内容,这里只是简单体验一下,更多的详细的内容后面会细说。

上一节:一步一步学习 Web 安全 2.2 之 SQL 注入步骤
下一节:一步一步学习 Web 安全 2.4 之 mysql union 联合查询注入

上一篇下一篇

猜你喜欢

热点阅读