NSS [NUSTCTF 2022 新生赛]Ezjava1

NSS [NUSTCTF 2022 新生赛]Ezjava1

题目描述:你能获取flag{1}吗

开题,一眼java web中的index.jsp

image-20230830224149897

默认index.jsp中的body内容是$END$

image-20230830224239996

附件jar包导入IDEA,会自动反编译。看看源码。

附件结构大致如此。主要看classes.com.joe1sn中的代码就好啦。

image-20230830224618032

HelloController.class内容如下

package com.joe1sn.controller;
import ...

@Controller
public class HelloController {
    
    
    public HelloController() {
    
    
    }

    @RequestMapping({
    
    "/hello"})
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    
    
        ModelAndView mav = new ModelAndView("index");
        mav.addObject("message", "Do you know \"beans\"?");
        return mav;
    }

    @PostMapping({
    
    "/index"})
    public void postIndex(@ModelAttribute EvalBean evalBean, Model model) {
    
    
        System.out.println("@POST Called");
    }

    @GetMapping({
    
    "/index"})
    public void getIndex(@ModelAttribute EvalBean evalBean, Model model) {
    
    
        System.out.println("@GET Called");
    }

    @RequestMapping({
    
    "/addUser1"})
    @ResponseBody
    public String addUser(User user) throws IOException {
    
    
        System.out.println(user.getDepartment().getName1());
        if (user.getDepartment().getName1().contains("njust") && user.getName().contains("2022")) {
    
    
            return "flag{1}";
        } else {
    
    
            String var10002 = user.getDepartment().getName1();
            File f = new File("../webapps/ROOT/" + var10002 + user.getName() + ".njust.jsp");
            return f.exists() ? "flag{2}" : user.getName();
        }
    }
}

根据题目描述,我们的目标是拿到flag{1},所以核心代码是:

if (user.getDepartment().getName1().contains("njust") && user.getName().contains("2022")) {
    
    
            return "flag{1}";
}

判断条件:

调用user对象中的getDepartment方法然后再调用到Department类中的getName1方法,之后判断调用后的结果是否等于或包含”njust”

调用user对象中的getName方法,之后判断结果是否等于或包含”2022”

看了一眼User类和Department类,getxxx()方法,最后返回的就是this.xxx(user.xxx)。所以上述要求也就是:

User.department.name1        等于或包含”njust”
User.name                    等于或包含”2022”

User类的属性应该是直接GET/POST传入的。

image-20230830230635722

由于这里没有指定GET或者POST提交,所以都行。注意路由是/addUser1

payload:

/addUser1?department.name1=xxxnjustxxx&name=xxx2022xxx

image-20230830230707000

猜你喜欢

转载自blog.csdn.net/Jayjay___/article/details/132592662
今日推荐