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
原文地址:http://blog.51cto.com/12332766/2117775