sqlzj
堆叠注入
在两个select注入语句之间用可用;隔开,
如果在php中用来mysqli_mulit_qurry()函数来执行sql注入语句的时候,可以使用堆叠注入,堆叠注入可以做到对数据库的改增删操作,
过滤绕过
在php中对单词的过滤,一般可以用双写,大写来绕过

在sql的25关对or和and进行了过滤,所以我们输入了or但显示我们的输入为空,
用双写

id=oorr
因为正则表达式匹配了or并把or过滤了oorr中or被过滤了就剩下了or说以可以用双写绕过
大写绕过

27题过滤了union所以我们输了union被过滤了
前提mysql语句是对大写不敏感的所以我们在写语句的时候就可以随意大写
因为正则表达式并没有完全匹配所以的大写组合,那我们一个一个试
尝试uniON

成功了
我认为短单词适合用双写,因为短字母的大写组合少比较好过滤,而且双写也比较好认,长单词相反,不过怎么绕过还是要看后端是怎么过滤的
如果后端的正则用了/m修饰符(换行匹配)那么双写绕过就会失效,换行匹配会把双写被匹配完的带空格的字符串也匹配,所以只能用双写,

在27关中–+也被过滤掉了sql语句就会剩下一个‘,这时就要用and ’1‘=’1来闭合
因为‘1’=‘1’是恒为真

在27题中空格也被过滤了,用%0a来绕过过滤

注释绕过

在32关中‘被/注释掉了,这时候就要加%df,或其他大与128的16进制数,在gbk编码中两个16进制数来表示一个中文字符,该方法叫宽字符注入

%df与%5c被认为是一个中文字符,而%27被剩下来被解释成了’
orderby注入
和联合注入没什么区别,就是写语句的方式变了
盲注可以用rand()在为真和为假时排列的顺序会不一样