实验吧题目之忘记密码

题目链接:忘记了密码 http://ctf5.shiyanbar.com/10/upload/
1、进入题目,首先查看源代码
实验吧题目之忘记密码
得到有用信息,邮箱地址[email protected]和代码编写工具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啦。
最后构造出参数[email protected]&token=0000000000

8、将参数传递给submit.php便可得到flag
实验吧题目之忘记密码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章