ctf web-部分

**

web基础知识

**

*一.反序列化

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

1.序列化serialize()

序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:

class S{

public $test="pikachu";

}
s = n e w S ( ) ; / / 创建一个对象 s e r i a l i z e ( 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 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==

4.file协议

file伪协议

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

相关推荐
CyberMuse4 小时前
网络安全cybersecurity的几个新领域
网络安全
HEX9CF5 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
kuber09095 小时前
APISIX 联动雷池 WAF 实现 Web 安全防护
网络安全
计算机科研之友(Friend)1 天前
物联网(一)——CMC特刊推荐
开发语言·人工智能·深度学习·物联网·计算机视觉·网络安全
sleepywin1 天前
【BUUCTF N1BOOK】[第一章 web入门]
web安全·网络安全
newxtc1 天前
【社保通-注册安全分析报告-滑动验证加载不正常导致安全隐患】
安全·web安全·网络安全·安全威胁分析
一个无名之辈的杂记本2 天前
利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
网络安全
燕雀安知鸿鹄之志哉.2 天前
玄机:第五章 linux实战-挖矿 二
linux·运维·服务器·安全·web安全·网络安全