一、伪静态介绍
0x01 什么是伪静态页面
"伪静态"顾名思义就是一种表面上看似是静态网页(比如以.html、.htm等结尾),看似不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页被称为伪静态网页。我们看到的伪静态网页其实是经过处理的,将动态网页的id等参数通过URL重写来隐藏,让查看者以为是静态网页。
0x02 伪静态页面原理
对于很多网站来说,使用伪静态页面的原因之一就是对网站的参数进行隐藏,不会将参数直接暴漏出来,这样对于一般的攻击者可能不会注意到这个页面存在漏洞。
比如存在一个网站链接为http://www.example.com/index.php?id=1,对于这种网站,我们肯定将会习惯性的去测试SQL注入漏洞,但是如果是http://www.example.com/index/1.html这种网站呢?可能对于经验比较丰富的攻击者来说,会去尝试伪静态注入,但是对于经验不足的攻击者,他们很容易就把这个网站当成了静态页面,就不会去进行伪静态注入的尝试了。因此,伪静态注入在一定程度上也可以减少网站的攻击。
总而言之,伪静态主要是为了隐藏传递的参数名,这只是一种URL重写的手段,为了让攻击者误以为是静态网站,但是仍然可以接受参数的传递,那么既然能接受参数输入,就仍然有可能存在SQL注入,因此,伪静态并不能防御SQL注入漏洞。
二、伪静态页面的识别
0x01 删除后缀识别
对于大部分伪静态页面来说,这些网站总是以.html或者.htm结尾,因此可以尝试删除后缀来判断是否是伪静态页面。
(1):如下是伪静态页面
删除后缀.html后页面仍然正常,可能是伪静态页面。
(2):如下是静态页面
删除后面的.html,发现返回错误页面信息,可能是静态页面
0x02 使用网站最后修改时间识别
(1):使用F12打开控制台
(2):输入如下命令
javascript:alert(document.lastModified)
(3):通过返回的时间来判断是否是伪静态页面
如果返回的时间是当前的时间,那么就基本上可以判断为伪静态页面了,如果返回的时间是之前的时间就可以判断为静态页面。
三、伪静态页面注入实战
0x01 手工判断伪静态注入
(1):查看原页面
(2):去掉后缀
页面一致,可能是伪静态页面。
(3):判断是否存在注入
①:使用数字相减来判断
显示的是数字为35的页面:
查看36-1的页面是否是数字为35的页面
页面显示一样,可能存在注入。
②:使用and 1=1和and 1=2判断
页面返回不一致,可能存在注入。
0x02 使用SQLMap进行注入
(1):使用SQLMap进行伪静态注入时需要指定注入点
sqlmap -u "http://www.example.com/index/id/1*.html" --dbs
(2):使用SQLMap进行注入
四、批量寻找伪静态注入网站
0x01 使用google寻找伪静态网站
inurl:php?id/1.html
原文始发于微信公众号(想走安全的小白):SQL注入之伪静态注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论