我尝试了几次还认为是检测and后面的数字因为没有数字过后就不在拦截
所以尝试对数字替换十六进制、负数、假的注释等等没用
后面查阅资料发现安全狗一般检测关键字会不会是发现关键字再检测后面的内容所以这样才没有过滤and
对and进行更改
/*!14400and*/
在mysql中/*!....*/不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/*!....*/中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。如下语句/*!14400and*/;这里的14400表示假如数据库是1.44.00及以上版本,该语句才会被执行。
orderby:
payload:
分析:
并不单个拦截而是两个单词在一起拦截
/**/order/*/%0a*a*/by/**/3--+
思路就是利用多个注释和换行来混淆
使用/**/和%oa(换行)来放在判定为两个连接
unionselect:
union/*//--/*//*!--+/*%0aselect/*!1,2,3*/--+
和orderby的拦截一样均可使用换行%0a来进行绕过
中间加入多个格式的注释和空格来混淆
加入database()
让我很意外居然没有拦截
正则表达式并没有单独匹配database()
第八关
substr函数:substr((字符串),从什么位置开始提取,提取几个字符)
THE END