魄柜 发表于 2025-6-1 18:18:51

商丘SQCTF 部分题目WP

File_download


根据源码可以知道这有个隐藏表单,提示我们存在下载

根据help.jsp的get or post filename to /DownloadServlet ?,要求我们去传参一个filename
我们先去读一读index.jsp

可以明显知道这个登录界面是个幌子,这题的突破口是下载和读取文件,并可以发现语言用的是java语言。
再者题目提示我们用xml,不难想到/DownloadServlet?filename=/WEB-INF/web.xml

这里有两个servlet,猜测flag应该就在Flagmanager中,我们进行读取
/DownloadServlet?filename=/WEB-INF/classes/com/ctf/flag/FlagManager.class
但提示我们一个这个

然后我想了很久,猜测这边可能会用POST请求,get请求应该会过滤后缀,果然

得到了.class的字节码
反编译后得到
import com.ctf.flag.FlagManager;
import java.util.ArrayList;
import java.util.Scanner;
import javax.servlet.http.HttpServlet;

public class FlagManager extends HttpServlet {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Please input your flag: ");
      String str = sc.next();
      System.out.println("Your input is: ");
      System.out.println(str);
      char[] stringArr = str.toCharArray();
      Encrypt(stringArr);
    }

    public static void Encrypt(char[] arr) {
      ArrayList<Integer> Resultlist = new ArrayList<>();
      for (int i = 0; i < arr.length; i++) {
            int result = arr + 38 ^ 0x30;
            Resultlist.add(Integer.valueOf(result));
      }
      int[] key = {
                110, 107, 185, 183, 183, 186, 103, 185, 99, 105,
                105, 187, 105, 99, 102, 184, 185, 103, 99, 108,
                186, 107, 187, 99, 183, 109, 105, 184, 102, 106,
                106, 188, 109, 186, 111, 188
      };
      ArrayList<Integer> Keylist = new ArrayList<>();
      for (int j = 0; j < key.length; j++) {
            Keylist.add(Integer.valueOf(key));
      }
      System.out.println("Result: ");
      if (Resultlist.equals(Keylist)) {
            System.out.println("Congratulations! ");
      } else {
            System.out.println("Error! ");
      }
    }
}我们再写一个脚本即可
import java.util.ArrayList;

public class GetFlag {
    public static void main(String[] args) {
      int[] key = {
                110, 107, 185, 183, 183, 186, 103, 185, 99, 105,
                105, 187, 105, 99, 102, 184, 185, 103, 99, 108,
                186, 107, 187, 99, 183, 109, 105, 184, 102, 106,
                106, 188, 109, 186, 111, 188
      };
      StringBuilder flag = new StringBuilder();
      for (int i = 0; i < key.length; i++) {
            char c = (char) ((key ^ 0x30) - 38);
            flag.append(c);
      }
      System.out.println("Flag: " + flag.toString());
    }
}   
My Blog


点击,得到一份pdf,得到admin/secret123的后台密码,盲猜登录点为login.php

baby include

页: [1]
查看完整版本: 商丘SQCTF 部分题目WP