初入Web做的水题

初入Web做的水题

五月 01, 2019

入坑较晚,水平也较低,就以各大平台我所能做的Web签到题谈谈我粗浅的理解,如有错误还请师傅们指点。

南邮ctfWeb第二题

md5是一种密码散列函数,是多对一的函数,理论上是不能解密的,但因为是多对一的关系,就存在不同数据的md5相同的情况,称为md5碰撞,不过这里我们不用去找与所给字符串md5相同的其他字符串,因为这串字符串md5加密后是以”0e”开头的字符串,而php是弱类型语言,其变量在比较的时候会自动转化数据类型,”0e”开头就会以科学计数法的方式被识别成数字0,所以这里我们只需要输入md5加密后是”0e”开头的字符串就行了,这是老套路,百度一查一大堆.

南邮ctfWeb第三题

写得很明白输入”zhimakaimen”,可是却返回口令错误,细心一点会发现最后一个字符没输进去,在网页源码中能看到”maxlength=10”限制了输入字符的长度,可以直接把”10”改成”11”再回去输就可以输11位了。网页其实就是对方服务器返回给请求者的html文件然后在本地浏览器上运行就产生了我们看到的界面,既然是在本地运行我们就可以对它进行修改嘛。另外在网页上”记住密码”之后,下次进入网页密码会自动填上,只是用一串小黑点隐藏起来,如果忘了密码也可以改网页源码来查看密码。

这道题还可以用post直接把值传给text1,也可以得到flag。

Bugku flag在index里

直接明了地说了flag在index里,这里需要用到php伪协议

1
http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

可以得到index.php的base64编码,解码可查看内容:

“php://filter/“是一种可以访问本地文件并筛选数据流的协议,”read=convert.base64-encode”是将数据用base64编码后读取,就是一种筛选

$file是get传入的参数,strstr()是检查字符串中是否含有指定字串,此处过滤了一些php://的其他协议。”include”是将外部的php文件引进并执行,如果执行失败的话会返回源码,而这里flag是写在源码的注释中的,所以如果不编码直接读取的话源码会执行,不能看到flag.