前言
这是我一次项目中遇到的一个order by注入,因为发现确实需要点眼力,所以我记录下来,并且自己把流程写了出来。
代码实现
我用了上面截图的一小段代码去实现这个流程。
漏洞探测
下面我放了三个图,分别是order by 1(根据第一个列进行排序),order by 2(根据第二个列进行排序),order by a(根据a进行排序(产生错误)),可以看到下面三个箭头的大小其实都是一样的,但是如果你仔细瞧瞧可以发现其返回的数据是不一样的,像我这种依赖手工发现注入的选手眼睛要是不精点估计都发现不了。
漏洞利用
对于漏洞利用,我选择使用case when语句,通过排序导致返回数据不一致。
还有个需要知道的是列名,这里使用数字代替列名是不行的,具体如下
出数据payload
case when (user() like ‘root%’) then phone else 1 end
总结
细心出漏洞,实践出真理。
来源 :横戈安全团队