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[i] + 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[j]));
- }
- 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[i] ^ 0x30) - 38);
- flag.append(c);
- }
- System.out.println("Flag: " + flag.toString());
- }
- }
复制代码
My Blog
点击,得到一份pdf,得到admin/secret123的后台密码,盲猜登录点为login.php
baby include
[code] |