BJDCTF2020-Mark-loves-cat*

ZJ Lv100

[BJDCTF2020]Mark loves cat*

前言

出自BUUCTF 练习场,也有相关的配套课本(我看的是《CTF实战 从入门到提升》,感觉还行,但有不少细节感觉还是得查资料才能懂)

题目

打开靶场,可以看到一个前段页面

image-20240914162948928

上下翻找在页面上并没有什么提示和能入手的,那就做一下目录扫描等信息收集,这里我用的dirsearch ,我新建了一个示例文件存放扫描目录,正常情况扫描需要花好些时间

image-20240914172851299

如图可以看到可能存在.git信息泄露

使用python3的GitHack 工具进行恢复

image-20240914173027155

python2的Git_Extract 是用于恢复.git文件的,有时做到题可能会需要

image-20240914175301365

恢复后发现只有两个php文件

image-20240914173134132

flag.php文件如下

image-20240914173236648

index.php文件如下

image-20240914173229008

显然要进行代码审计

这个东西真的是需要自己去慢慢看的,慢慢看才能学到东西,主要涉及的就是可变变量,先手建议先了解即可,跟着看看做做,见多了自然就悟了

遇到if比较多的情况优先看关键字,最后有$flag,再往前看到有$yds是与flag有关的,再往前可以看到

image-20240914173526537

这里就可以通过GET传递

1
http://CTF/?yds=flag

此时$x=yds,$y=flag,再有源码里面的$$x=$$y,把$yds=$flag,将$flag的值赋值给了$yds,当遇到exit()函数的时候就会输出flag值了

所以在传入参数的时候,将yds=flag传入即可

image-20240914174420469

最后通过查看源代码,成功得到了flag

答案

给出3种本人做出来的答案,第一种答案已讲解,其余答案的详解可以看其他博主的链接在这里 ,再自己推到一下

1
2
3
4
5
payload1:yds=flag

payload2:handsome=flag&flag=handsome

payload3:flag=flag&ls=flag

总结

这道题有不小难度,在于对php函数的理解和php变量覆盖的领悟,关于这道题总共有4种解法,本人最开始也是看不懂,这里就写了本人根据书上看懂的3种解法,更多的解法和详解可以在其他博主博客里面看到链接在这里 ,可以自己去看看,我就不搬过来了

题目在这里

  • Title: BJDCTF2020-Mark-loves-cat*
  • Author: ZJ
  • Created at : 2024-09-13 00:00:00
  • Updated at : 2024-12-11 01:20:37
  • Link: https://blog.overlordzj.cn/2024/09/13/ctf/writeup/web/buuctf/[BJDCTF2020]Mark-loves-cat/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
BJDCTF2020-Mark-loves-cat*