最近在渗透网站中遇到几个sql注入,简单分享一下挖掘思路。
注入点1:
点击功能点的时候发现该参数,看样子是查询Number of Calls大于10范围的数据。
输入>(10+9990),成功查询Number of Calls大于10000的数据,代表着10+9990在后端执行成功
。
输入单引号,报错,有白名单限制,只能输入指定参数。
试试>10 and 1=1,正常回显。
试试>10 and 1=2,回显的Number of Calls>10的数据明显没有了
放到sqlmap跑一下看看,存在布尔注入。
注入点2:
正常的回显是这样的
加上单引号,报错,根据回显的sql报错可以判断这里模糊查询,使用的是拼接,因为报错语句不是"?"。一般情况下,模糊查询和order by排序处容易出现sql注入。
输入'and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1);,成功报错出sql版本,存在报错注入。
注入点3:
fieldname看起来是字段名,这条数据包应该是根据字段名查询数据库的,盲猜后端sql语句大概是这样的:
select grp_nm from xxx where xxx=xxx;
grp_nm就是我们输入的字段名。
乱输入一个字段名参数看看,显示不存在。
于是构造sql语句查询表名,成功。
输入不存在的表名,报错,显示不存在,存在sql注入漏洞。
总结:
sql注入中,大部分为字型注入,字符型注入中,参数点使用单引号就可以发现异常。
数值型注入点可以使用+,-数字的方式进行判断是否执行成功。
原文始发于微信公众号(有恒安全):渗透测试sql三连注
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论