01、SQLmap简介Sqlmap是一款开源的渗透测试工具下载及安装下载地址http://sqlmap.org/windows或mac下载第一个linux下载第二个kali默认自带sqlmap不需要安装解压刚下载好的压缩包后重命名为sqlmap移动到python目录下复制sqlmap的路径我的是D:\Python\SQLMap回到桌面右击新建 快捷方式快捷方式名创建成功右击选择属性更改起始位置双击sqlmap的快捷图标输入python sqlmap.py验证是否安装成功02、SQLmap的使用在注入的url中要包含参数和cookie值通过sqlmap工具中–cookie参数带上cookie值抓包查找cookie值后写在–cookie后方分析测试结果参数详解1️⃣target目标-u 目标url -m 将目标地址保存在文件中一行为一个URL地址进行批量检测 -r 从文件中加载http请求 -d 直接连接数据库的连接字符 -l 从Burp或者websscarab代理日志文件中分析目标 -x 从远程网站地图sitemap.xml文件来解析目标 -g 从谷歌中加载结果目标url只获取前100个结果需要挂代理 -c 从配置ini文件中加载选项目标URLpython sqlmap.py -u 目标url --batch --cookie cookie值–batchsqlmap帮你判断选择yes或no–cookie登陆后扫描从文本中获取多个目标扫描python sqlmap.py -m 1.txt --batch1.txt文件中保存url格式如下sqlmap会一个一个检测www.magedu1.com/vu1n1.php?qqstudent www.magedu2.com/vuln2.asp?id1 www.magedu3.com/vuln3/id/1*从文件中加载http请求python sqlmap.py -r 1.txt --batch直接把bp抓到的请求包复制到一个文本文件里这样可以让我们省去写cookie和url等参数比如1.txt文本文件内容如下POST/students.php HTTP/1.1 Host:www.magedu.com User-Agent:Mozilla/4.0 id12️⃣Request请求设置--method 指定请求方法 --data 把数据以post方式提交 --param 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数 --cookie 设置提交请求的时候附带所设置的cookie --load-cookie 从文件获取cookie --user-agent 可以使用–user-anget参数来修改 --headers 可以通过–headers参数来增加额外的http头 --proxy 设置代理可以避免本机地址被封禁 --delay 可以设定两个HTTP(S)请求间的延迟防止发送过快导致被封ip --random-agent 使用–random-agnet参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候会尝试对User-Angent进行注入 --referer 在请求目标的时候可以自己伪造请求包中的referer –-level 参数设定为3或者3以上的时候会尝试对referer注入 --scope 利用正则过滤目标网址把数据以POST方式提交当参数写在url里会当成get方式–data可以用post方式提交并进行检测python sqlmap.py -u http://www.baidu.com/students.php --dataid1 -f --banner --dbs --users–banner指纹信息–dbs数据库–users表名利用正则过滤目标网址python sqlmap.py -l burp_http.log --scope(www)?\.tagdet\.(com|net|org)burp_http.log从bp中加载的日志文件避免过多的错误请求被屏蔽sql注入的过程也可以理解成爆破的过程在这么多的请求中也会有大量的报错请求而有的网站会有一些保护机制使用这个参数可以避免发送过多的错误请求导致ip被封掉参数–safe-url,–safe-freq--safe-url提供一个安全不错误的链接每隔一段时间都会去访问一下 --safe-freq提供一个安全不错误的链接每次测试请求之后都会在访问一遍安全连接3️⃣Optimization优化-o 开启所有优化开关4️⃣Injection注入-p 想要测试的参数 -skip 不想要测试的参数 --dbms 指定数据库节省sqlmap的检测时间 --os 指定数据库服务系统节省sqlmap的检测时间 --tamper 使用sqlmap自带的tamper脚本或者自己写的tamper来混淆payload通常用来绕过waf和ips测试参数-p指定测试的参数-p id,user-anget–skip指定要跳过的参数--skipuser-agent,referer指定数据库服务器系统参数–OS一方面可以提速另一方面降低被发现的可能性指定大数字来使值无效参数–invalid-bignum当用户想指定一个报错的数值时可以使用这个参数比如指定id9999999999指定逻辑运算来使值无效参数–invalid-logical原理同上比如指定id1 and 1819结果为假从而引起报错让你查不到内容5️⃣Detection探测等级--level1 执行测试的等级1~5默认为1 --risk 共有四个风险等级0~3慎用探测等级参数–level共有5个等级默认为1最大为51级不会探测http header2级探测加上cookie3级探测加上HTTP User-Agent/Refere总之在不确定哪个payload或者参数为注入点时为了保证全面性建议使用高的level值风险等级参数–risk共有3个风险等级默认是11会测试大部分的测试语句2会增加基于事件的测试语句3会增加or语句的SQL注入测试有时候例如在updata、delete的语句中注入一个or的测试语句可能导致更新或删除整个表造成很大的风险在工作中–risk谨慎使用会对业务造成伤害6️⃣fingerprint指纹-f --fingerprint 执行检查广泛的dbms版本指纹7️⃣enumeration枚举-a--all 获取所有信息 -b--banner 获取数据库挂你系统的表示 --current-user 获取数据库管理系统当前数据库 --hostname 获取数据库服务器的主机名称 --is-dba 检测DBMS当前用户是否是DBA数据库管理员 --users 枚举数据库管理系统用户 --passwords 枚举数据库管理系统用户密码哈希 --privieges 枚举数据库管理系统用户的权限 --roles 枚举数据库管理系统用户的角色 --dbs 枚举数据库管理系统数据库 --tables 枚举DBMS数据库中的表 --columns 枚举DBMS数据库中的表 --schema 枚举数据库架构 --count 检索表的项目数 --dump 转储数据库表项即下载 --dump-all 转储数据库所有表项 --search 搜索列s表s和/或数据库名称s --comments 获取DBMS注释 -D 要进行枚举的指定数据库名 -T DBMS数据库表枚举 -C DBMS数据库表列枚举 -X DBMS数据库表不进行枚举 -U 用来进行枚举的数据库用户 --exclude-sysdbs 枚举表时排除系统数据库 --pivot-columnp.. privot columnname --whereDUMPWHERE USE WHEREcondition while table dumping --startLIMITSTART 获取第一个查询输出数据位置 --stopLIMITSTOP 获取最后查询的输出数据 --firstFIRSTCHAR 第一个查询输出字的字符获取 --lastLASTCHAR 最后查询的输出字字符获取 --sql-queryQUERY 要执行的SQL语句 --sql-shell 提示交互式SQL的shell --sql-fileSQLFILE 要执行的SQL文件标识参数-b-banner数据库版本信息当前用户参数–current-user当前数据库参数–current-db当前用户是否为管理员参数–is-dba列出数据库管理用户参数–users列出并破解数据库用户的hash值参数–passwords列出数据库系统中的数据库参数–dbspython sqlmap.py -r 1.txt --dbs列举数据库表参数–tables、–exclude-sysdbs、-D列举数据库表中的字段参数–columns-C-T-D8️⃣Brute force爆破--common-tables 检查存在共同表 --common-columns 检查存在共同列 --shared-libSHLIB 共享库的本地路径9️⃣file system access访问文件系统--file-read 从后端的数据库管理系统读取文件 --file-writeE上传文件到后端的数据库管理系统 --file-dest 后端的数据库管理系统写入文件的绝对路径读文件前提要知道读这个文件的路径写文件要指定上传文件指定上传文件路径Operating system access访问操作系统--os-cmdOSCMD 执行操作系统命令 --os-shell 交互式的操作系统的shell --os-pwn 获取一个OOB shellmeterpreter或VNC --os-smbrelay 一键获取一个OOB shellmeterpreter或VNC --os-bof 存储过程缓冲区溢出利用 --priv-esc 数据库进程用户权限提升 --msf-pathMSFPATH Metasploit Framework本地的安装路径 --tmp-pathTMPPATH 远程临时文件目录的绝对路径获取整个表的数据参数-dump-C-T-D–start–stop–first–last获取所有数据库表的内容参数–dump-all–exclude-sysdbs–dump-all获取所有数据库表的内容可同时加上–exclude-sysdbs排除系统数据库只获取用户数据库的表即业务数据字段、表、数据库参数–search -C-T-D运行任意操作系统命令参数–os-cmd–os-shell–os-shell直接拿到操作系统的命令行爬取网站url参数–crawlsqlmap可以收集潜在的可能存在漏洞的链接后面跟的参数是爬行的深度此时的url可以不带参数python sqlmap.py -u http://www.baidu.com --crawl3忽略在会话文件中存储的查询结果参数–fresh-queries如果不想让历史的缓存数据影响到本次缓存结果就加上这个参数自定义输出的路径参数–output-dir默认把缓存结果保存在output文件夹下可以通过这个参数进行修改03、实际利用DVWA当给sqlmap一个url时它会判断可注入的参数判断可以使用哪种SQL注入技术来注入识别出哪种数据库根据用户选择读取哪些数据dvwa使用sqlmap工具注入流程如果你想看到sqlmap发送的测试payload最好的等级就是3# 判断注入点因系统需要登录所以要加cookie python sqlmap.py -u http://127.0.0.1:8080/vulnerabilities/sqli/?id1SubmitSubmit# --cookiePHPSESSIDisgvp2rv4uts46jbkb9bouq6ir; securitylow -p id # 检测站点包含哪些数据库 python sqlmap.py -u http://127.0.0.1:8080/vulnerabilities/sqli/?id1submitsubmit# --cookiePHPSESSIEisgvp2rrv4uts46jbkb9bouq6ir; securitylow -p id --dbs技巧在实际检测过程中sqlmap会不停的询问需要手工输入“Y/N”来进行下一步操作可以使用参数–batch命令来自动答复和判断查看数据库管理系统中有哪些数据库查看dvwa库下的所有表查看users表中的字段获取所有数据如何系统学习网络安全/黑客网络安全不是「速成黑客」而是守护数字世界的骑士修行。当你第一次用自己写的脚本检测出漏洞时那种创造的快乐远胜于电影里的炫技。装上虚拟机从配置第一个Linux环境开始脚踏实地从基础命令学起相信你一定能成为一名合格的黑客。如果你还不知道从何开始我自己整理的282G的网络安全教程可以分享我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的网安资源希望能帮到你。需要的话可以V扫描下方二维码联系领取~如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享1.从0到进阶主流攻防技术视频教程包含红蓝对抗、CTF、HW等技术点2.入门必看攻防技术书籍pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里3.安装包/源码主要攻防会涉及到的工具安装包和项目源码防止你看到这连基础的工具都还没有4.面试试题/经验网络安全岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要需要的话可以V扫描下方二维码联系领取~因篇幅有限资料较为敏感仅展示部分资料添加上方即可获取如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享