实验吧-忘记密码了

忘记密码了

原题链接

http://ctf5.shiyanbar.com/10/upload/step1.php

分析

注册,发现有content,直接填
查看了一下源码,发现好像还有东西:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="renderer" content="webkit" />
    <meta name="admin" content="admin@simplexue.com" />
    <meta name="editor" content="Vim" />
<br />

注意有个Vim。难道是提示说有vim的源码泄露?试了一下step1.php.swp也不对啊。。。

注册后得到提示

你邮箱收到的重置密码链接为 ./step2.php?email=youmail@mail.com&check=???????

容易得到我们的重置密码链接
http://ctf5.shiyanbar.com/10/upload/step2.php?email=admin@nuptzj.cn&check=???????

问题是check是什么呢?先不管,访问看看,然后一闪而过,回到了原来的注册页面。应该是由于check的问题,但是一闪而过的页面是什么样的呢?

于是抓包看了一下,发现重要信息,有一个新页面submit.php,step2.php,实际上是把数据传给了submit.php

11129189-33bfc2adbb9e74f3.png

那么Vim的源码泄露,找到罪恶之源了。
http://ctf5.shiyanbar.com/10/upload/.submit.php.swp


........这一行是省略的代码........

/*
如果登录邮箱地址不是管理员则 die()
数据库结构

--
-- 表的结构 `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `token` int(255) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- 转存表中的数据 `user`
--

INSERT INTO `user` (`id`, `username`, `email`, `token`) VALUES
(1, '****不可见***', '***不可见***', 0);
*/


........这一行是省略的代码........

if(!empty($token)&&!empty($emailAddress)){
    if(strlen($token)!=10) die('fail');
    if($token!='0') die('fail');
    $sql = "SELECT count(*) as num from `user` where token='$token' AND email='$emailAddress'";
    $r = mysql_query($sql) or die('db error');
    $r = mysql_fetch_assoc($r);
    $r = $r['num'];
    if($r>0){
        echo $flag;
    }else{
        echo "失败了呀";
    }
}

注意到这一句

if(strlen($token)!=10) die('fail');
    if($token!='0') die('fail');

token 为10位,且为0,邮箱必须是管理员邮箱,在step1.php里有管理员邮箱admin@simplexue.com
那就简单了
token=0e12345678

这里用的是submit.php

如果还是用step2.php 还是会闪回step1.php,这里有点坑。
还有一个坑点就是,submit.php和step2.php的提交参数不一样,
这一点在抓包的源码中可以看出来。

email:<input name="emailAddress" type="text" <br />
<b>Notice</b>:  Use of undefined constant email - assumed 'email' in <b>C:\h43a1W3\phpstudy\WWW\10\upload\step2.php</b> on line <b>49</b><br />
value="admin@simplexue.com"  disable="true"/></br>
        token:<input name="token" type="text" /></br>
        <input type="submit" value="提交">
    </form>
</body>

emailAddress&token

于是有了payload
http://ctf5.shiyanbar.com/10/upload/submit.php?emailAddress=admin@simplexue.com&token=0e12345678

flag

SimCTF{huachuan_TdsWX}

知识点

vim写文件造成swp源码泄露
简单审计
查看html源码隐藏信息


一点吐槽,其实题目不难,但是硬是卡了很久,原因就在于,用它填充的密码或者随便注册个密码,它会闪回到step1.php
让我不知所措,还好后来想起来,用Burp抓包看看过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值