PHP的一些小技巧
...
TGCTF2025
AAA偷渡阴平#请求头无参数RCE1234567891011121314<?php$tgctf2025=$_GET['tgctf2025'];if(!preg_match("/0|1|[3-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){ //hint:你可以对着键盘一个一个看,然后在没过滤的符号上用记号笔画一下(bushi eval($tgctf2025);}else{ ...
对于RCE和文件包含的一点总结
什么是RCERCE漏洞,即远程代码漏洞和远程命令执行漏洞,这种漏洞允许攻击者在后台服务器上远程注入操作系统命令或代码,从而控制后台系统。 在很多Web应用中,开发人员会使用一些特殊函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时(当应用程序未正确验证、过滤或限制用户输入时),就产生了RCE漏洞。 1.分类(远程代码和远程命令)1.命令执行漏洞:直接调用操作系统命令。例如,当Web应用在调用一些能将字符串转化成代码的函数时,如果未对用户输入进行合适的处理,可能造成命令执行漏洞。 2.代码执行漏洞:靠执行脚本代码调用操作系统命令。例如,PHP中的system()、exec()和passthru()函数,如果未对用户输入进行过滤或过滤不严,可能导致代码执行漏洞。 额外的: 3.系统的漏洞造成命令注入:例如bash破壳漏洞(CVE-2014-6271)是一个远程命令执行(RCE)漏洞。这个漏洞存在于Bash...
Vite任意文件读取漏洞
参考文章:Vite开发服务器任意文件读取漏洞(CVE-2025-30208) 搜索语句12Fofa:body="/@vite/client"Hunter:web.body="/@vite/client" CVE-2025-302080x01漏洞描述Vite 是一款现代化的前端开发构建工具,它提供了快速的开发服务器和高效的构建能力,广泛应用于 Vue.js 项目的开发过程中。 漏洞原理 由于 Vite 开发服务器在处理特定 URL 请求时,没有对请求的路径进行严格的安全检查和限制,导致攻击者可以绕过保护机制,非法访问项目根目录外的敏感文件。攻击者只需在浏览器输入一个 URL,就可能会造成源码、SSH密钥、数据库账号、用户数据等目标机器上的任意文件信息泄露。 漏洞影响版本 目前受影响的NextJS版本:6.2.0 <= Vite <= 6.2.2 6.1.0 <= Vite <= 6.1.1 6.0.0 <= Vite <=...
PHP反序列化
PHP反序列化知识点: 序列化(Serialization)是将数据结构或对象转换成一种可存储或可传输格式的过程。在序列化后,数据可以被写入文件、发送到网络或存储在数据库中,以便在需要时可以再次还原成原始的数据结构或对象。序列化的过程通常涉及将数据转换成字节流或类似的格式,使其能够在不同平台和编程语言之间进行传输和交换。 反序列化(Deserialization)是序列化的逆过程,即将序列化后的数据重新还原成原始的数据结构或对象。反序列化是从文件、网络数据或数据库中读取序列化的数据,并将其转换回原始形式,以便在程序中进行使用和操作。 反序列化的过程中,unserialize()接收的值(字符串)可控通过更改这个值,得到所需要的代码通过调用方法,触发代码执行魔术方法在特定条件下自动调用相关方法,最终导致触发代码。 序列化存储格式php序列化的存储格式是json,我们来理解一下这个字符串的格式 首先利用serialize生成一个字符串 1234567891011<?phpclass me{ public $name="meng"; public...
商丘CTF
WEBeeaassyy考的是查看源码的手段,f12和右键和ctrl+u用不了,可以直接把js禁用了或者在设置里点开发者工具 逃12345678910111213141516171819202122<?phphighlight_file(__FILE__);include ("flag.php");function filter($payload){ $black_list=array("flag","php"); return str_replace($black_list,"stop",$payload);}class test{ var $user = 'test'; var $pswd = 'sunshine'; function __construct($user){ $this->user=$user; ...
XYCTF2025(Web)
Webfate#json反序列化+sqlite注入 附件有源码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/usr/bin/env python3import flaskimport sqlite3import requestsimport stringimport jsonapp = flask.Flask(__name__)blacklist = string.ascii_letters#定义了黑名单变量 blacklist,包含所有的 ASCII 字母(A-Z, a-z)。def binary_to_string(binary_string):#将二进制字符串(8-bit格式)转换为普通字符串 if len(binary_string) % 8 != 0: raise...
ctfshow大吉大利杯(已做完)
veryphp#变量解析+正则匹配规则1234567891011121314151617181920212223242526272829303132333435<?phperror_reporting(0);highlight_file(__FILE__);include("config.php");class qwq{ function __wakeup(){ die("Access Denied!"); } static function oao(){ show_source("config.php"); }}$str =...
pickle反序列化
前置知识这几天打完xyctf了,里面刚好有一道pickle反序列化的题目,当时也是现学然后现打的,但总归学的还是不仔细,赛后还是得针对性的学一下 什么是Pickle?参考官方文档:pickle — Python 对象序列化 跟PHP反序列化一样,在python中也会存在对象序列化和反序列化的操作,那么Pickle就是用于实现这一功能的模块之一 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化。 “pickling” 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 “unpickling” 是相反的操作,会将(来自一个 binary file 或者 bytes-like object 的)字节流转化回一个对象层次结构。 但是其实在python中并不只有pickle可以实现序列化的操作,python有一个更原始的序列化模块叫marshal,但一般地 pickle 应该是序列化 Python 对象时的首选。marshal 存在主要是为了支持 Python 的 .pyc...
XYCTF2024复现
ezMake扫了一下目录发现有flag文件,下载下来就是flag,不过好像这不是预期解 传入一个1之后有回显 分析一下内容 这里PATH变量被设置为空,这段 Makefile 的逻辑检查了 PATH 是否未定义,如果未定义则设为空,如果已定义也重设为空。因为**make 命令本身也依赖 PATH 查找**,当PATH被设置为空之后, 但是测试之后发现Bash内置命令是可以执行的 内置命令列表 命令 说明 : 扩展参数列表,执行重定向操作 . 读取并执行指定文件中的命令(在当前 shell 环境中) alias 为指定命令定义一个别名 bg 将作业以后台模式运行 bind 将键盘序列绑定到一个 readline 函数或宏 break 退出 for、while、select 或 until 循环 builtin 执行指定的 shell 内建命令 caller 返回活动子函数调用的上下文 cd 将当前目录切换为指定的目录 command 执行指定的命令,无需进行通常的 shell...