找回密码
 立即注册
首页 业界区 安全 商丘SQCTF 部分题目WP

商丘SQCTF 部分题目WP

魄柜 2025-6-1 18:18:51
File_download

1.png

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

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

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

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

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

得到了.class的字节码
反编译后得到
  1. import com.ctf.flag.FlagManager;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. import javax.servlet.http.HttpServlet;
  5. public class FlagManager extends HttpServlet {
  6.     public static void main(String[] args) {
  7.         Scanner sc = new Scanner(System.in);
  8.         System.out.println("Please input your flag: ");
  9.         String str = sc.next();
  10.         System.out.println("Your input is: ");
  11.         System.out.println(str);
  12.         char[] stringArr = str.toCharArray();
  13.         Encrypt(stringArr);
  14.     }
  15.     public static void Encrypt(char[] arr) {
  16.         ArrayList<Integer> Resultlist = new ArrayList<>();
  17.         for (int i = 0; i < arr.length; i++) {
  18.             int result = arr[i] + 38 ^ 0x30;
  19.             Resultlist.add(Integer.valueOf(result));
  20.         }
  21.         int[] key = {
  22.                 110, 107, 185, 183, 183, 186, 103, 185, 99, 105,
  23.                 105, 187, 105, 99, 102, 184, 185, 103, 99, 108,
  24.                 186, 107, 187, 99, 183, 109, 105, 184, 102, 106,
  25.                 106, 188, 109, 186, 111, 188
  26.         };
  27.         ArrayList<Integer> Keylist = new ArrayList<>();
  28.         for (int j = 0; j < key.length; j++) {
  29.             Keylist.add(Integer.valueOf(key[j]));
  30.         }
  31.         System.out.println("Result: ");
  32.         if (Resultlist.equals(Keylist)) {
  33.             System.out.println("Congratulations! ");
  34.         } else {
  35.             System.out.println("Error! ");
  36.         }
  37.     }
  38. }
复制代码
我们再写一个脚本即可
  1. import java.util.ArrayList;
  2. public class GetFlag {
  3.     public static void main(String[] args) {
  4.         int[] key = {
  5.                 110, 107, 185, 183, 183, 186, 103, 185, 99, 105,
  6.                 105, 187, 105, 99, 102, 184, 185, 103, 99, 108,
  7.                 186, 107, 187, 99, 183, 109, 105, 184, 102, 106,
  8.                 106, 188, 109, 186, 111, 188
  9.         };
  10.         StringBuilder flag = new StringBuilder();
  11.         for (int i = 0; i < key.length; i++) {
  12.             char c = (char) ((key[i] ^ 0x30) - 38);
  13.             flag.append(c);
  14.         }
  15.         System.out.println("Flag: " + flag.toString());
  16.     }
  17. }   
复制代码
7.png

My Blog

8.png

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

baby include

[code]
您需要登录后才可以回帖 登录 | 立即注册