一、确定站点
按照以前文章中提到的寻找可进站测试的思路,找到了某证书站的一处站点,通告栏中写明了初始密码的结构,因此我们可通过信息搜集进入该站点(可以考虑去搜集比较老的学号,因为这样的账号要么被冻结,要么就是初始密码,经验之谈,大家可适当参考):
因为该站点涉及到的学校很多,特征也很明显,所以打了重重的马赛克,希望各位牛子见谅。
二、SQL盲注
一般能够进站时,我一般习惯先测试逻辑漏洞,再去测试常规漏洞,在这之前可以先将功能都点一点,让我们burp中的插件先帮我们测试着其它漏洞。
经过测试,并没有发现逻辑漏洞。接下来,就测试有无SQL注入。虽然我们的插件没有帮我们扫到,但是好在功能点比较少,手动测也不会浪费太多时间。
最后在某接口处,发现有SQL盲注:
点击电子票据抓包,正常包:
加单引号:
直接返回500,但并不是SQL语法的报错,所以暂时先不考虑报错注入,有先考虑盲注。
加注释符号,返回包恢复正常:
接下来有趣的一幕出现了:
我用如下payload时:’and+1=1—,被拦截了:
猜测是and的问题,大概是被检测为关键字了,所以被拦了。虽然这里不能用and了,但还有其他的可以考虑,比如like、>、<、in等。我这里就是用in绕过的。
布尔盲注语句为真时,数据包正常:
payload:’and+1+in+1—
语句为假,返回200,但内容为空:
payload:’and+1+in+2—
接下来该利用盲注获得一些数据,例如数据库长度,user长度,版本号等信息才可以提交,想要往下走就要知道是什么数据库。我首先用了len函数,结果返回404,不考虑被过滤的情况下,那可能就是不存在该函数,排除mssql,接下来使用length函数。之后我使用了database(),依旧404,排除mysql,大概率是oracle,最后我使用了user,返回正常。接下来是判断user长度的过程:
在长度为3时成功回显,说明确实user的长度为3,且为oracle数据库,为了验证我还使用了oralce的数据库函数,也成功注入出了长度,这里不在演示。
正当我打算提交时,我将in改成了=,按理说是应该返回404被过滤的,但是结果竟然回显正常:
那上文的and+1=1为毛不行?这里,我又换成了and+-1=-1,发现竟然没被过滤,回显正常:
最后判断,应该是过滤了常用的盲注payload: and 1=1 …..
如果过滤了and,可以考虑使用上文提到的方法进行绕过,最后提交漏洞,结束测试。
更多网络安全优质免费学习资料与干货教程加v
送渗透工具、技术文档、书籍,面试题、视频(基础到进阶。环境搭建,HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等)、应急响应笔记、学习路线。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。