小组任务1(phpbug#69892)

简介: 参考文献:https://github.com/CHYbeta/Code-Audit-Challenges1.php的Bug#69892$users = array( "0:9b5c3d2b64b8f74e56edec71462b...

参考文献:https://github.com/CHYbeta/Code-Audit-Challenges

1.php的Bug#69892

$users = array(
        "0:9b5c3d2b64b8f74e56edec71462bd97a" ,
        "1:4eb5fb1501102508a86971773849d266",
        "2:facabd94d57fc9f1e655ef9ce891e86e",
        "3:ce3924f011fe323df3a6a95222b0c909",
        "4:7f6618422e6a7ca2e939bd83abde402c",
        "5:06e2b745f3124f7d670f78eabaa94809", //hund
        "6:8e39a6e40900bb0824a8e150c0d0d59f",
        "7:d035e1a80bbb377ce1edce42728849f2",
        "8:0927d64a71a9d0078c274fc5f4f10821",
        "9:e2e23d64a642ee82c7a270c6c76df142",
        "10:70298593dd7ada576aff61b6750b9118"
);
$valid_user = false;
$input = $_COOKIE['user'];
$input[1] = md5($input[1]);
foreach ($users as $user)
{
        $user = explode(":", $user);
        if ($input === $user) {
                $uid = $input[0] + 0;
                $valid_user = true;
        }
}
if (!$valid_user) {
        die("not a valid user\n");
}
if ($uid == 0) {
        echo "Hello Admin How can I serve you today?\n";
        echo "SECRETS ....\n";
} else {
        echo "Welcome back user\n";
}

题目其实很容易理解,就是输入user[0]和user[1],其中user[0]==0user[1]=$users中的任意一个

看见0~10这些内容第一反应就是md5解密,都试过一遍之后发现只有第五个能解出来,user[0]=5;user[1]=hund这个就可以得到你是普通用户的欢迎信息了,但是想要的是管理员的,所以得尝试将$uid=0这个条件实现,这个时候就需用到php的Bug#69892

[2015-06-20 14:29 UTC] nikic@php.net 描述: ------------
var_dump([0 => 0] === [0x100000000 => 0]); //布尔(true) 
所有版本:http://3v4l.org/Sjdf8</pre>

php运行在32位系统的会将数组的键 0x100000000=2^32=4294967296 变换为字符串,而在64位系统会直接 数组中的键4294967296 为unsigned long 类型 且等同于0

  • 最后的payload
Cookie: user[4294967296]=5;user[1]=hund;

2.PHP 0819

<?php
// closure, because of namespace!
$challenge = function()
{
        $f = Common::getGetString('eval');
        $f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
        if((strlen($f) > 13) || (false !== stripos($f, 'return'))){
                die('sorry, not allowed!');
        }
        try{
                eval("\$spaceone = $f");
        }
        catch (Exception $e){
                return false;
        }
        return ($spaceone === '1337');
};
?>

通过get的eval参数传入并赋值到变量f,然后经过str_replace()的过滤,要求长度小于13,并且不包含字符串return,接着执行eval,然后让`spaceone === '1337'返回True。最后一行spaceone === '1337'`,要求类型和值都得相等。看一下str_replace(),过滤了单引号,双引号,所以如果直接get传参`index.php?eval='1337'`进去,在经过过滤后,到最后会变为spaceone=1337,不等。

可以用heredoc构造绕过单引号

<<<EOF
内容
EOF;

内容中不能包括特殊符号,以一个变量起始,以相同的变量名+;结束(还要再加上一个换行符!)

  • 最终payload
?eval=<<<s%0a1337%0as;%0a
目录
相关文章
|
11月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
【10月更文挑战第6天】如何使用机器学习模型来自动化评估数据质量?
|
1月前
|
运维 Kubernetes 负载均衡
教你读懂 高可用/SRE
高可用(HA)与网站可靠性工程(SRE)是保障现代分布式系统稳定运行的核心理念。HA关注系统持续可用的能力,常用“9”的数量衡量可靠性,如99.99%可用性意味着全年仅允许约52分钟宕机。实现手段包括冗余设计、故障转移、负载均衡、限流熔断与数据多活。SRE则通过工程化方法提升系统可靠性,核心在于SLI(服务指标)、SLO(目标值)、SLA(服务协议)的指标体系,结合错误预算、自动化运维、容量规划与事后分析,实现稳定与效率的平衡。二者相辅相成,HA是目标,SRE是路径,共同构建“可测、可控、可优化”的系统稳定性体系。
186 0
|
1月前
|
Ubuntu Linux Shell
手把手教你安装适用于Linux的Windows子系统——Ubuntu
重启完成,你看看重新打开Ubuntu是不是发生了变化,等待几分钟,系统配置完成,根据提示设置用户名和密码即可
|
6月前
|
人工智能 运维 自然语言处理
“AI医生”入驻运维现场:聊聊系统健康检查的新姿势
“AI医生”入驻运维现场:聊聊系统健康检查的新姿势
311 78
|
机器学习/深度学习 人工智能 安全
人工智能与未来社会:机遇与挑战
在这篇文章中,我们将探讨人工智能(AI)技术如何改变我们的未来社会。我们将分析AI带来的机遇,如提高生产力、创造新的就业机会和改善生活质量。同时,我们也将讨论AI带来的挑战,如失业问题、隐私和安全问题以及道德和伦理问题。最后,我们将提出一些建议,以帮助我们更好地应对这些挑战,充分利用AI带来的机遇。
203 32
|
10月前
|
人工智能 JSON 监控
Qwen2.5-Coder-7B-Instruct Lora 微调 SwanLab 可视化记录版
本节我们简要介绍如何基于 transformers、peft 等框架,对Qwen2.5-Coder-7B-Instruct 模型进行Lora微调。使用的数据集是中文法律问答数据集 DISC-Law-SFT,同时使用 SwanLab 监控训练过程与评估模型效果。
1115 4
|
9月前
|
人工智能 自然语言处理 监控
PMP认证有哪些要求:干货分享
本文详细介绍PMP的报考要求、考试内容与形式、认证有效期及价值,以及备考策略和推荐的学习工具,帮助考生高效准备。
334 2
|
11月前
|
数据可视化 数据挖掘 BI
没办法用Trello?其实有更聪明的替代方案!
在快节奏的工作环境中,Trello作为一款广受好评的项目管理和任务协作工具,凭借其直观的看板界面赢得了全球用户的青睐。然而,由于访问受限、数据安全和本土化资源不足等问题,Trello在国内的实际使用面临诸多挑战。为此,板栗看板(Banli)应运而生,作为一款专为国内市场开发的工具,板栗看板不仅在功能上媲美Trello,还在访问稳定性、自定义选项、智能提醒、数据分析和权限管理等方面进行了优化,特别适合中国团队和企业的实际需求。
335 0
|
11月前
|
关系型数据库 MySQL 数据库
MySQL 查询结果求和详解
MySQL 查询结果求和详解
474 0
|
Linux 开发工具
【专栏】Linux 必备技能:Vim文本编辑器中快速跳转到文件开头和结尾的方法
【4月更文挑战第28天】本文介绍了Vim文本编辑器中快速跳转到文件开头和结尾的方法。使用`gg`或`1G`可跳转到文件开头,`G`或`$`则用于跳转到结尾。此外,还提到了跳转到指定行(如`10G`)和查找特定字符(如`f`+字符)的技巧,以提升编辑效率。
2285 0