sqli-lab、hack the box等搭建的环境中找不到应该存在的注入点的解决方案
相信大部分学渗透的小伙伴都会自己搭建渗透的平台来练习,而搭建的环境大多数都是使用懒人的phpstudy一键搭建,这就为后来的一些奇奇怪怪的问题埋下浓墨重彩的一笔。
问题描述
在注入的第一步找注入点的时候,在很明显有注入点的位置就死活找不到注入点,输入单引号啥的也没有反应,然后到网上找write up发现这个注入点确实存在,然而使用别人的payload也没有反应。
找问题
刚开始以为是浏览器吞了我的引号,换了几个浏览器但都无果,甚至使用burpsuite抓包发现确实是发出了引号。到原本的有注入点的php代码中查看源码,发现没有问题,然后去掉代码中的单引号,相当于是把一个字符型注入改成数字型注入发现是可以正确报错,并且错误也是单引号引起的。在没啥想法的情况下我暂时略过了这个问题。但是在后来做XSS部分的练习的时候发现alert(1)时可以成功弹窗,但是alert(‘1’)就没啥反应,我想可能是因为字符类型所以被过滤了,又尝试了alert(false)发现可以成功弹窗,这更加确认了就是引号被"吃掉"了。
问题解决
后来在抱着死马当活马医的心态改了一下php版本,使用php-5.4.45问题就解决了,特此开个帖记一笔。
php-5.2.17有一个特性:Magic Quotes
对应 php.ini 中的选项magic_quotes_gpc, 这个特征同样属于历史遗留问题,已经在 PHP5.4 中移除。该特征会将所有用户输入进行转义,这看上去不错,在第一章我们提到过要对用户输入进行转义。但是 PHP 并不知道哪些输入会进入 SQL , 哪些输入会进入 Shell, 哪些输入会被显示为 HTML, 所以很多时候这种转义会引起混乱。