MENU

代码审计之URL编码转换小BUG

May 10, 2020 • Read: 1017 • 代码审计阅读设置

0x00 前言

这两天在看一套代码,审计时候发现一个一个以前忽略的一个小问题。

0x01 操作

关于浏览器对于URL中的特殊字符自动编码解码,以前一直忽略了这个问题,这次审某个注入点的时候发现URL中的参数值原样代入导致传入了URL编码并没有还原为原来的字符,用了数据库监控插件才发现了这个问题,真是菜了。

具体如下:

当用sqli-labs时,会把URL中的参数值解码后代入查询。

image-20200510001753015.png

但是审这套源码时发现,通过浏览器访问该注入点,会原样代入。

image-20200510002128316.png

我们可以来在数据库中测试下语句。

当我们执行该未还原编码的语句时,此处的单引号%27并没有产生闭合的效果,而是把1%27 and 1=2 --+当成了一个完整的参数值,这时候在这条语句中并不能产生报错,因为没有闭合前面的引号,后面的and 1=2 --+没有执行,所以不会报错。

image-20200510002426366.png

这里可以再测试下单引号'没有URL编码代入数据库查询时的效果。可以看到这时候才产生了闭合效果,执行后面的and 1=2 --+产生了报错信息。

image-20200510003216687.png

当时测了很多遍,感觉是浏览器的问题,最后解决也很容易,发现直接构造数据包发包就可以解决这个问题。这里就用Burp Suite了。

image-20200510003809430.png

0x02 总结

注入点构造的时候有时候不是它没有注入,而是总会产生莫名其妙的问题,遇到这种情况还是要规避一下额外的因素,比如不用浏览器,直接构造数据包发请求包,在此记录下这个问题。

原文作者:Keefe

原文链接:代码审计之URL编码转换小BUG

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可