SQL注入之过滤,绕过
绕过的方法:
1.大小写变形(混写)
2.编码,hex,urlencode
3.注释
4.过滤替换
5.截断
Less-23
1.通过页面显示,得知数据提交方式为get型
2.测试闭合方式
单引号闭合:页面回显语法错误
双引号闭合:页面回显正确
括号闭合:页面回显正确
我们得知,闭合方式为’ '单引号闭合
插入sql注入语句:
我们发现插入完整的sql语句,页面任然回显语法错误,我们查看PHP源码文件:
发现“-”和“#”被过滤了,导致我们不能正常完成闭合语句。
插入sql语句:
?id=1' and '1'='1
我们发现“-”和“#”字符被过滤,任然可以构造出闭合语句
使用联合查询法,依次爆出数据:
Less-25
1.通过页面显示,得出数据提交方式为get式
页面回显中说ALL Your ‘OR’ and ‘AND’ belong to us
即过滤了‘AND’和OR‘
我们查看PHP源码文件:
源码中也是这个意思,我们的任务就是绕过过滤,使用anandd和oorr绕过过滤。
2.测试闭合方式
插入sql注入语句:
?id=1' anandd 1=1 --+
?id=1' anandd 1=2 --+
得知闭合方式为’ '单引号闭合,我们可以在注入后,页面回显的最下面看到我们注入的东西,并以次判断自己的过滤绕过语句是否拼凑成功。
使用联合查询法爆出数据
Less-26
1.页面回显得知,数据提交方式为get型
判断过滤的字符:
输入sql注入语句:
?id=1 and 1=1 --+
我们在页面回显下方查看
得知,至少过滤了"空格",“and”,“or”,“-”,“#”,查看PHP源码,验证判断:
得知我们的判断正确,对于空格的过滤,有较多的替换方法:
%09 TAB键(水平)
%0a 新建一行
%0c 新的一页
%0d return功能
%0b TAB键(垂直)
%a0 空格
2.测试闭合类型
插入sql注入语句:
?id=-1'%0Aanandd%0A'1'='1
得知闭合类型为‘ ’单引号闭合
插入报错语句,爆出想要的东西
Less-27a
查看PHP源码
得知,除了常见字符外,”select“和"union"也被过滤,我们可以采用大小写混写额方式绕过
1.判断闭合类型
插入sql注入语句:
?id=1"%0AUnioN%0ASelecT%0A1,2,3%0Aand"1"="1
得知,闭合方式为” “双引号闭合
我们采用”UnioN“和”SelecT“来绕过过滤
Less-27a
查看PHP源码
得知,Less-27只是对"union"和”select“的大小写混写进行了多条限制,但任有漏洞
1.测试闭合方式
插入sql注入语句:
?id=1'%0Aand%0A'1'='1
?id=1'%0Aand%0A'1'='2
得知闭合方式为’ '单引号闭合
通过对”union“和”select“的大小写混写,绕过过滤
Less-27
查看PHP源码
仅是增加了对union”和”select“的大小写混写的过滤,使用”unioN“和selecT”进行绕过
Less-28a
查看PHP源码
对后台过滤的字符进行替换注入
闭合方式’ '单引号闭合
Less-28
通过页面回显得知,仍是对"union"和"select"的过滤,通过大小写混写进行过滤