问题的起因,在于一个小同学问我,他说他在找SQL注入的时候,他说:
但是我发现很多网站,已经是http://www.xxx.com/news.php/id/1.html 这种了,没有php?id=? 找不到注入点 很难受。”
我在这里,把这个问题解释下,至于他说的这种情况,我也已经教了他。
这种情况在SQL注入里被称作“伪静态注入”
原因就是,很多网站,在对网站进行设置的时候,都设置了伪静态规则。
比如就是上面的两种:
www.baidu.com/test.php/id/8.html
对于这种情况,很多初学者没办法判断,因为老师只教了在数字后面跟测试语句。
其实网站有SQL注入漏洞,设置伪静态只是看起来没有漏洞,手工测试的方法还是一样的。
我拿海南省一个高校的伪静态注入来说这个问题。
因为还没修复,很多敏感信息都要打码处理。
他的路径是这样的:http://baidu.com/index.php/news/view/id/101
他这个伪静态的规则是伪装成了文件夹的格式。
前面已经说了,伪静态,主要是为了隐藏传递的参数名,伪静态只是一种URL重写的手段,能收参数,就不一定能防住注入。
老办法,还是先报错,加个单引号,测试语句如下:
http://baidu.com/index.php/news/view/id/101'
单引号报错空白了,那么测试程序的逻辑关系,and。
and 1=1 正常 and 1=2 报错
说明程序存在注入,然后直接order by 确定长度,确定了之后可以使用联合查询 UNION SELECT+长度。
爆出准确字段后,用database()进行替换得数据库信息,最后还是按照老样子注入。
照常注入得表,另外我也说一下自动化注入的测试方法。
在SQLMap里,对于伪静态,只需要在怀疑存在注入的数字上加一个*号即可自己判断。
SQL注入的东西还有很多,要学会去学,不要认为一个php?id=? 这种注入方法就认为自己入了门,万一人家隐藏报错信息?不回显错误?盲注怎么操作你会么?
赞赏二维码