码迷,mamicode.com
首页 > 其他好文 > 详细

实验吧题目之忘记密码

时间:2018-05-18 10:03:49      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:CTF   WEB   

题目链接:忘记了密码 http://ctf5.shiyanbar.com/10/upload/
1、进入题目,首先查看源代码
技术分享图片
得到有用信息,邮箱地址admin@simplexue.com和代码编写工具vim

2、这些线索肯定不够的,不如输入一个字符串测试一下
技术分享图片

3、里面提到个step2.php的文件,我们访问一下这个文件内容
技术分享图片
发现当我们在访问step2.php的时候,url自动跳转到原来的页面,我们想看看step2.php给的回应。

4、用BP抓包
技术分享图片
这页源码是获取数据的一个表单,将获取的数据传递给submit.php,获取的内容是email和token。或许我们这里可以猜到email是我们先前在网页源码中的邮箱地址,但是我们不知道token的值应该是多少。
我们知道在http请求的时候,先将数据读取,应该就是step1.php界面,然后就是处理数据,而step2.php将get获取到的值转交到了submit.php,所以这个文件中指定有判断token值的方法。

5、我们先来访问一下submit.php。
技术分享图片
提是不是管理员,但是线索应该就在这个文件中,但又没有权限访问。
我们知道这个文件使用vim编辑的,这里有一个特性,在编辑的过程中都会产生一个后缀为.swp的隐藏文件我们访问一下有没有这个文件

6、访问.swp的隐藏文件
技术分享图片
果然存在,并显示出了处理数据的源代码

7、我们分析源代码,
Empty()函数判断一个变量是否被认为空值
Strlen()函数计算字符串的长度
Mysql_fetch_assoc()函数从结果集中取得一行作为关联数组
这串代码首先判断token的长度是不是等于10,并且token的值也必须等于0,否则都会输出错误,这也给了我们构造token的线索。
然后,通过sql count()语法指定列的数目,count(*)返回表中所有的记录数,如,有三条记录返回3,as num,将返回的值给一个新建的列名num。
技术分享图片
我们从step2.php中得知需要传递两个参数,emailAddress和token,已经有了邮箱地址,只需要算出token就可以。
这里也给出了token的判断条件,值必须等于0,并且长度是10,常规是没有这样的数的,但是我们可以构造,十个零0000000000,这样不就长度是10啦。
最后构造出参数emailAddress=admin@simplexue.com&token=0000000000

8、将参数传递给submit.php便可得到flag
技术分享图片

实验吧题目之忘记密码

标签:CTF   WEB   

原文地址:http://blog.51cto.com/12332766/2117775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!