NewStarCTF2025-Week4-Web 小 E 的秘密计划
NewStarCTF2025-Week4-Web 小 E 的秘密计划知识点: 1. git相关 分支 (Branch):在 Git 内部,分支指向当前最新的 Commit 对象。 HEAD指针:它指向你当前正在工作的分支文件。 Git Reflog:记录的是 HEAD 指针及其分支引用(refs)在本地更新的物理日志。 小 E 最近在秘密研发一个代号为「Project X」的系统。然而,小 E 在开发和部署过程中,习惯性地留下了许多「不经意」的痕迹——无论是临时的备份,还是版本管理上的小疏忽,甚至是 Mac 系统自动生成的文件,都可能成为你解开「Project X」秘密的关键…… 御剑扫描找到备份网页url 下载 源代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374<!DOCTYPE html><html lang...
NewStarCTF2025-Week4-Web 小羊走迷宫
NewStarCTF2025-Week4-Web 小羊走迷宫题目: 1.对变量名的绕过ma_ze.path不是合法变量名.是非法的(在 PHP 语法中,. 是字符串连接符),而变量名只能包含字母、数字、下划线,且不能以数字开头。 当你写 $ma.ze = 1; 时,PHP 的代码解析器(Parser)在运行前就会报错。 但是,数组下标可以是任何字符串当你写 $get['ma.ze'] = 1; 时,这是完全合法的。 原因:中括号 [] 内部的内容被视为一个 String(字符串)。 物理本质:PHP 的数组底层是一个 HashTable(哈希表)。哈希表就像一个字典,它的“索引”可以是任何一段字符串。 那我们就利用数组绕过PHP 8.0 之前的一个 解析 Bug: 当你传 ?ma[ze.path=1 时,按照 PHP 的解析逻辑,[ 之后的内容是**‘数组内部的键名’**。所以就不会检查后面的ze.path 但是也会**把参数名里所有不符合变量规范的字符(点、空格)都强行换成下划线。**因此[变成了`_ 2.写脚本:题目代码: 12345678910...
NewStarCTF2025-Week4-Web 武功秘籍
NewStarCTF2025-Week4-Web 武功秘籍知识点:1.CVE(Common Vulnerablilities and Exposures) CMS(content management system) exp:一开始进去是个网站 有很多图片木马上传点,我选择新闻上传,会发现新闻内容里面的图片无法上传,但是可以看到上传页面的有其他图片上传点 1.塞个木马图,抓包改后缀,蚁剑连接 系统管理下数据库管理里面找到木马图片 但是蚁剑连接返回为空 使用disable_functions也不行,因为要求题目是Linux系统 那就重新上传木马直接看phpinfo吧 查看 找到flag,在env里面
NewStarCTF2025-Week4-Web 白帽小 K 的故事(2)
NewStarCTF2025-Week4-Web 白帽小 K 的故事(2)在经过一系列对话后,我们得知 1231.布尔盲注2.找flag3.后端的查询逻辑是:SELECT 1 from Terra.animal WHERE name = '$name' 1. 探索:过滤空格,逗号 ,/ 尝试直接注入 12name=amiya'and(1=1)%23name=amiya'and(length(database())=5)%23 回显–> 为真: 为假: 2. 脚本自己的脚本跑不通,去找了个大佬的脚本 具体逻辑是: 12345678910dic = string.digits + string.ascii_letters + "{}-_," //拼接字符串,制成字母表out = "" //准备输出for j in range(1,80): //从位置的第一位开始循环 for k in dic: //从字母表的第一位开始循环 payload =...
[ASIS 2019]Unicorn shop 1
[ASIS 2019]Unicorn shop 12019年的题目了,7年前,时间太恐怖了 题目如图:一个purchase的提交表单 0x01 思路1.先随便输入购买,进行抓包 没懂,回复是:错误的商品 2.继续试一下html实体编码后的字符: 1,这个表示1,发现有报错信息 看一下报错是:只能接受一个unicode字符作为参数 12unicodedata.numeric(price)TypeError: need a single Unicode character as parameter 那这样我们只能买id为1价格为1的独角兽了,但是我们第一此买的就是这个,回复显示了:错误的商品 3.试试看unicode,毕竟题目提示“Unicode”,而且你猜unicorn读起来是不是很Unicode很像呢?已知我们肯定需要更多钱去被一个unicode字符表示 ‘price=億’数值就是一个亿了 但是又到回复了错误商品wrong commodity 想到购买的商品原来是错的,试试ultra的独角兽 4.payload:1id=4&price=億 ...
[CISCN2019 总决赛 Day2 Web1]Easyweb 1
[CISCN2019 总决赛 Day2 Web1]Easyweb11. 知识点:1.addslashes():就是在一些敏感符号前面加上\转义,转义单引号,双引号,反斜杠,null。2.str_replace(): 将需要的东西替换例如这里的str_replace(array("\\0","%00","\\'","'"),"",$id); 就是把id里面出现的"\0","%00","\'","'"全部替换成”” ->那就是直接删除了 这里要注意的是:\\0实际上指的是\0,这里用的也是转义,如果只是\0那别人就会以为是空字符null 2. 思路:看到登陆页面猜想是sql注入,但是确实是sql但是注入点不在这里。 御剑扫描扫出来了robots.txt发现了禁扫描的备份文件,但是文件名是在源代码可以看到的 做什么事情之前看一下源代码 很奇怪吧,为什么一张图片也有im...
[GWCTF 2019]你的名字 1
[GWCTF 2019]你的名字1很容易猜到是模板,但是普通的{{}}不行,但是单个大括号就没被过滤 看来是waf绕过 试了一下{%...%} 我们需要用到lipsum,那么它是什么呢? 1.lipsum 在 SSTI(服务端模板注入)中,它是 Jinja2 引擎内置的一个生成占位文本(Lorem Ipsum)的函数。 在 Flask/Jinja2 的沙箱环境里,很多全局变量(如 os, sys, __builtins__)默认是被禁用的。你直接输入 {{ os }} 会报错。 但是,lipsum 通常是默认开启且合法的。 它存在于 Jinja2 的 globals(全局命名空间)中。 因为它是一个函数,它身上带着 Python 函数共有的属性:__globals__。 payload: 1{%print lipsum.__globals__.__builconfigtins__.__impoconfigrt__('oconfigs').p...
[GYCTF2020]EasyThinking1简单解析
[GYCTF2020]EasyThinking1简单解析题目:御剑扫描到www.zip,打开 得知是thinkphp框架,网上自行搜索这个版本的漏洞 https://www.cnblogs.com/Litsasuk/articles/18399299 https://xz.aliyun.com/news/8139 思路:1.登陆时session注入,写入文件名长32位的php文件 2.搜索时注入一句话木马,并抓包修改cookie 1<?php eval($_POST[1]); ?> 你的历史记录内容会被写入文件,文件名就是uid,我们只要保证这次记录也写入我们一开始准备好的文件里面就行:即 修改文件名(修改uid) 3.打开文件,蚁剑连接,利用插件绕过禁用函数 文件位置: 1/runtime/session/sess_1234567123456712345671234568.php 蚁剑利用插件 源代码简单探索:解题思路:用户在搜索时和在登陆时都是用的同一个sessionuid,我们可以联想到需要利用这个uid创造文件,写入文件,然后打开文件 以下是...
[GYCTF2020]FlaskApp 1题解-flask模板ssti注入+pin码破解
[GYCTF2020]FlaskApp 1题解-flask模板ssti注入+pin码破解0x01 知识点储备:1.CSRF跨站请求伪造CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击形式,攻击者通过伪造用户的请求,利用用户已登录的身份在受信任的网站上执行未授权的操作。此类攻击通常发生在用户登录后,攻击者诱导用户访问恶意链接或页面,从而在用户不知情的情况下执行敏感操作 2.Flask 的 PIN 码了解在开发 Flask 应用时,如果开启了 debug=True 模式,一旦程序运行出错,浏览器就会显示一个详细的报错页面(Traceback)。 为了方便开发者调试,这个页面提供了一个交互式控制台(Interactive Console),能直接在浏览器里输入 Python 代码。 为了有人利用这个控制台远程控制服务器,Flask 的底层工具库 Werkzeug 就设计了 PIN 码。 – #以下引用内容来源于这篇文章,大家可以看看 pin码主要由六个参数构成 probably_public_bits: username:执行代码时的用...
[SUCTF 2019]CheckIn1
[SUCTF 2019]CheckIn1老题目图片上传(尖括号过滤,文件头检查,request手动执行,ini配置文件) 1.知识点1.exif_imagetype 到底在查什么?普通检查可能只看文件头的前几个字符(如 GIF89a),但 exif_imagetype() 函数更严格: 特征签名检查:它会读取文件的前几个字节,并对比内置的 Magic Number(魔数) 表。 结构完整性:它不仅看开头,还会简单判断文件结构是否符合该图片格式的规范。 报错原因:如果开头写了 GIF89a,但后面紧跟着全是 PHP 代码,该函数可能会因为找不到图片应有的数据结构而返回 false,从而触发 not image! 的提示。 2.为什么木马中post不行,换成request却可以?——服务器的配置限制POST 长度/开关限制: 在极少数极端环境下,服务器可能限制了 POST 数据的大小,或者在 Web 服务器层(如 Nginx)禁止了对某些目录的 POST 请求。 3. .user.ini让用户在没有权限修改全局 php.ini 的情况下,微调某个目录的设置。 规则: ...