22-day

 · 2019-8-21 · 次阅读


53.忘记密码了(http://ctf5.shiyanbar.com/10/upload/step1.php)
  进入页面是一个找回密码的输入框,让我们输入邮箱,先随便输入一个12345678@qq.com,提交试试,提交后弹出了一个提示框:你邮箱收到的重置密码链接为 ./step2.php?email=youmail@mail.com&check=???????
那就进入这个链接看看,任然返回主页面,step2的页面只有一瞬间,因而直接前面输入view-source:http://ctf5.shiyanbar.com/10/upload/step2.php查看step2页面的源代码。发现了一些特殊的地方它告诉了我们编辑器是Vim,而这个编辑器在对某个文件编辑后,如果非正常退出,会产生一个该文件的临时文件,名字为.原文件名.swp。(还有一种获取源码的方式是其备份文件名:原文件名~)从它的表单还可以看到

因而访问submit.php.swp试试这样访问不行但访问.submit.php.swp就会接受一个文件,打开后发现如下代码:
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长度必须等于10然后值为0,可以10个0或者0e8个其他数字就可以,还有提交一个emailAddress,在step2的源码中我们发现了管理员的邮箱admin@simplexue.com,因而在submit.php页面构造payload:?token=0e00000000&emailAddress=admin@simplexue.com就得到了flag.
  这道题主要必须得对vim编辑器有一定掌握,这个还需我下去接着了解与学习,只有这样才能继续下一步,不然只能一直打转没有前进,还需要学习更多我不知道得小知识呀。