type
status
date
slug
summary
tags
category
icon
password
 

[NewStarCTF 2023 公开赛道]R!!C!!E!!

notion image
叫我们找到一些泄露信息,一说到这个第一反应就是看看F12有没有泄露什么,不然就抓包看看,再者目录爆破一手
 
爆破出了三个,看目录估计是.git仓库泄露了
notion image
 
.git 是 Git 仓库的元数据目录,里面包含了所有提交记录、分支、配置等关键信息。
  • 一旦这个目录暴露在 Web 服务器上(如 http://example.com/.git/ 可访问),就可以通过抓取和还原整个代码仓库。
 
  1. 访问 .git/config → 确认是 Git 仓库
  1. 下载 .git/HEAD → 得到当前分支,比如 ref: refs/heads/main
  1. 下载 .git/refs/heads/main → 获取当前分支最新提交哈希
  1. 下载 .git/objects/xx/yyyyyyyy... → 通过提交哈希下载 blob/tree/commit 等对象
  1. 本地还原为源码(借助 git 命令或工具)
 
访问.git/refs/heads/main获取到分支提交的哈希值
notion image
8dfa5ac196862ac027e3fd40e11ff4731957c20a
 
既然它泄露了.git仓库,那我们就可以下载该源码:
notion image
 
cd GitHack python githack.py http://48d9ab06-2278-42ac-bf2e-e1706a9ab9e9.node5.buuoj.cn:81/.git/
notion image
成功获取源码
 
bo0g1pop.php
 

正则解释:

 
部分
含义
[^\W]+
匹配 字母或数字组成的标识符(函数名)
\(
匹配左括号 (
(?R)?
递归:允许函数调用嵌套(如 a(b(c()))
\)
匹配右括号 )
if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star']))
最后记得加上;
同时过滤黑名单,最后如果前两个条件满足,就直接 eval 你构造的代码
剩下的就是思考怎么构造一个绕过waf的payload了:
 
bo0g1pop.php?star=die(getcwd());
notion image
可以看到回显目录
 
 
notion image
始终构造不出绕过waf的payload的
 
看了博主的wp才做出来,但是也不是很懂
多发送几次 就有了
notion image
 
notion image
 

[NewStarCTF 公开赛赛道]So Baby RCE

 
wc,第一反应好淳朴的RCE,就是要求我们绕过黑名单而已,试试
 
 
尝试编码绕过,发现一次编码还是被waf了,二次编码不认
PHP的system函数和Web服务器处理URL编码的参数。通过URL传递参数时,Web服务器或PHP通常会对这些参数进行URL解码,将它们转换为相应的字符 也就是我们进行一次编码 发现第一次编码后进行
 
核心思路是通过变形、编码、替换来绕过过滤规则
使用操作符&&衔接(&&也要进行编码绕过,不然浏览器/服务端把 & 当成 URL 参数分隔符)
notion image
 
Bash 变量替换规则
  • ${1} 在 Bash 中表示第一个位置参数(类似 Python 中的 sys.argv[1]
  • 如果当前环境中没有定义 1 变量,Bash 会将 ${1} 替换为空字符串
  • 例如:echo a${1}b → 如果 1 未定义,则输出 ab
借用这种bash变量替换规则:
进行绕过:payload:?cmd=cd${IFS}..%26%26cd${IFS}..%26%26cd${IFS}..%26%26c${1}at${IFS}ffff${1}llllaaaaggggg
notion image
 
BUUCTF-近几年的sql注入BUUCTF-upload
Loading...