ctf web 备份是个好习惯

题目:

打开网址出现:

看着像是两段重复的md5摘要,用解码工具解码,得到:

看出似乎是对空字符生成了md5码并输出,回头看题目描述:备份是个好习惯,猜测是查看备份文件

尝试输入网址 http://114.67.175.224:18504/index.php.bak,果然得到一个备份文件:index.php.bak

删除文件后缀名 .bak,打开文件:

php代码解释:

第11行:$str = strstr($_SERVER['REQUEST_URI'], '?');

$_SERVER[]预定义超全局数组变量的一种,是一个包含了诸如头信息(Header),路径(path),以及脚本位置(script location)等信息的数组

$_SERVER['RWQUEST_URI']是指访问的整个url网址,例如访问 

"http://114.67.175.224:18504?key=123&b=4"   (以下举例都先用该url)

则$_SERVER['RWQUEST_URI']=  "http://114.67.175.224:18504?key=123&b=4"

strstr()函数:搜索一个字符串在另一个字符串中的第一次出现的位置,返回字符串的其余部分(从匹配点)。

因此第11行代码含义就是将整个url中?之后的部分赋予$str变量,如对于上诉网址,$str="?key=123&b=4";

第12行:$str = substr($str,1);

substr(string,start,length),函数返回字符串string的一部分,start为开始位置(默认开始为0),length为返回的字符串长度。

所以第十二行含义是$str="key=123&b=4" (按以上url)

第13行:$str = str_replace('key','',$str);

str_replace(find_s,replace,string),指用字符串relpace代替string中出现的字符串find_s,

则,第13行代码的含义是将$str中出现的所有"key"代替成空字符,结果如:$str="=123&b=4"

第14行:parse_str($str);

parse_str()函数可以将一串字符串解析成多个变量,按上例url,结果为:

$=123   $b=4

通过第15行和第17行输出了$key1和$key2的md5码,因为函数没有为$key1和$key2赋值。结合起初打开网页看到的两串解码为空字符的md5码,$key1和$key2均为空字符

根据这个if语句,可以推出当$key1和$key2的md5码相同,而$key1和$key2不同时,会输出flag,

因此可以结合函数输入网址:http://114.67.175.224:18504?key1=...&key2=..."为key1与key2赋值,

但由于第13行,会将字符串中的key字符替换,这里使用双写绕过替换规则:
即字符串写成"kkeyey1=...&kekeyy2=..."时,该函数只会替代源字符串的key,最终得到想要的结果"key1=...&key2=..."

进行到if语句判断,这里利用了php弱类型的漏洞:MD5绕过的技巧_网安溦寀的博客-CSDN博客

对于if(md5($key1) == md5($key2)),想要满足这个判断只需要构造出MD5值为0e开头的字符串,弱类型比较会认为字符串使用了科学技术法,0的多少次方都是0,因此可以绕过

因此只要使得$key1与$key2是两个不同的但是MD5码都是0e开头的字符串即可

输入网址:http://114.67.175.224:18504?kkeyey1=QNKCDZO&kekeyy2=240610708

得到结果:

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲 蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值