sql注入实践简述(上)

sql注入实践简述(上)

安全突出实践,是一门实践大于理论的学科

下面笔者将用两个靶场实战题目,简述web安全领域中sql注入的实践

靶场链接1:
sql数字型get注入
靶场链接2:
SQL字符型注入

靶场1:

在这里插入图片描述

看到id=1,很容易猜测到是否为注入点
判断如下(三步)
当输入id=1’,报错如下
在这里插入图片描述
当输入id=1 and 1=1
回显正常
在这里插入图片描述
当输入id=1 and 1=2
页面回显异常
在这里插入图片描述
到此可以判断id处存在注入点
(然后按照正常注入流程走)

  1. 测试注入是否存在

  2. 判断字段数

  3. 联合查询得出回显点

  4. 查询数据库及系统信息

  5. 列出当前所有库名

  6. 列出表名

  7. 列字段名

  8. 查字段内容

    有点啰嗦。。。。。。。

判断字段数 order by
从1开始尝试,测试到3时正常,测试到4时异常。即可断定字段数为3。
在这里插入图片描述

在这里插入图片描述

测试出字段数为3时,可以通过联合查询UNION SELECT得出回显点,如下图

在这里插入图片描述
可知回显点为2,3 然后测试时,把测试语句放在2,3位置即可

下面用concat(),查询数据库信息及系统信息详情
这一步对于进一步做内网渗透测试至关重要,别笑
在这里插入图片描述
可以看出系统版本型号及数据库具体信息

下一步 用列出当前所有库名

在这里插入图片描述
可以看到当前库名

下一步 列出表名
在这里插入图片描述
这里需要注意的是库名要加上单引号或双引号
这时已经看到flag表名,近在咫尺

下一步 列字段名
在这里插入图片描述
下一步 查flag字段内容

在这里插入图片描述
flag到手

到此sql注入靶场1,讲述到此,读者可自行去练习一下

靶场2:

在这里插入图片描述
其实两种注入,大同小异。只不过第二种字符型注入,需要去闭合sql语句的括号,以及注释掉后面多余代码

1. 闭合要用 ‘
2. 注释要用 - -

现给出最终payload如下

http://www.whalwl.com:8005/bug/sql_injection/sql_string.php?title=1' and 1=2 UNION SELECT 1,flag,3 from flag limit 0,1 – &submit=submit

在这里插入图片描述
flag到手