CTF实验吧-忘记密码了【vim编辑器备份文件】

原题内容:

 

找回密码

格式:SimCTF{ }

 

解题链接: http://ctf5.shiyanbar.com/10/upload/ 

(略过查看源代码等最基本的步骤)首先首页让你输入注册邮箱找回密码,尝试admin,有弹窗显示消息:

复制提示信息至地址栏:

发现可以看到step2的内容然后瞬间变成step1内容,打开bp准备逐步查看,获取step2页面内容:

代码中被选中的这一行很有意思,告诉了你编辑器是vim,思考下vim的特性,自动备份:

 

一、vim备份文件

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

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

二、vim临时文件

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

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

尝试可发现.submit.php.swp存在,即打开http://ctf5.shiyanbar.com/10/upload/.submit.php.swp可得代码:

整理了下可得

 

<<?php
........这一行是省略的代码........ 
/* 如果登录邮箱地址不是管理员则 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) #长度为10
		die('fail'); 
	if($token!='0') #值为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为10个0,于是继续尝试:

 

可得返回:

尝试admin继续失败,回看所有步骤代码,在step2的的头发现

 

<meta name="admin" content="admin@simplexue.com" />

 

于是尝试:


成功,getflag

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值