下载 sqlmap:https://github.com/sqlmapproject/sqlmap
下载 python:https://www.python.org/downloads/
以 windows 版为例:
安装 python;
解压缩 sqlmap;
“在终端中打开 / 在命令行中打开” sqlmap.py 文件所在目录;
执行命令
python sqlmap.py -u "网址" --data="POST数据" --tables需要注意的是,sqlmap 会记录探测过的网址的结果信息,修复网站漏洞后要再次检测是否安全时,应删除缓存文件,位置在:
C:\Users\用户\AppData\Local\sqlmap\output\
| 操作系统 | 版本 | 发布时间 | 支持设备 |
| macOS ??? | 26 | 2025年6月 | |
| macOS Sequoia | 15 | 2024年6月 | iMac (2019 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年及后续机型) Mac Studio (2022 年及后续机型) MacBook Air (2020 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2018 年及后续机型) |
| macOS Sonoma | 14 | 2023年秋 | iMac (2019 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年机型) Mac Studio (2022 年及后续机型) MacBook Air (2018 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2018 年及后续机型) |
| macOS Ventura | 13 | 2022年10月 | iMac (2017 年及后续机型) Mac Pro (2019 年及后续机型) iMac Pro (2017 年机型) Mac Studio (2022 年机型) MacBook Air (2018 年及后续机型) Mac mini (2018 年及后续机型) MacBook Pro (2017 年及后续机型) MacBook (2017 年机型) |
| macOS Monterey | 12 | 2021年6月8日 | iMac (2015 年末及后续机型) Mac Pro (2013 年末及后续机型) iMac Pro (2017 年及后续机型) Mac mini (2014 年末及后续机型) MacBook Air (2015 年初及后续机型) MacBook (2016 年初及后续机型) MacBook Pro (2015 年初及后续机型) |
| macOS Big Sur | 11 | 2020年6月23日 | MacBook (2015 年或后续机型) MacBook Air (2013 年或后续机型) MacBook Pro (2013 年后期或后续机型) Mac mini (2014 年或后续机型) iMac (2014 年或后续机型) iMac Pro (2017 年或后续机型) Mac Pro (2013 年或后续机型) |
| macOS Catalina | 10.15 | 2019年10月8日 | MacBook (2015 年前期或之后的机型) MacBook Air (2012 年中期或之后的机型) MacBook Pro (2012 年中期或之后的机型) Mac mini (2012 年后期或之后的机型) iMac (2012 年后期或之后的机型) iMac Pro (2017 年) Mac Pro (2013 年后期或之后的机型) |
| macOS Mojave | 10.14 | 2018年6月5日 | MacBook (2015 年前期或之后的机型) MacBook Air (2012 年中期或之后的机型) MacBook Pro (2012 年中期或之后的机型) Mac mini (2012 年后期或之后的机型) iMac (2012 年后期或之后的机型) iMac Pro (2017 年) Mac Pro (2013 年后期的机型,以及支持特定 Metal 技术图形卡的 2010 年中期和 2012 年中期的机型) |
| macOS High Sierra | 10.13 | 2017年6月5日 | MacBook (2009 年后期或之后的机型) MacBook Pro (2010 年中期或之后的机型) MacBook Air (2010 年后期或之后的机型) Mac mini (2010 年中期或之后的机型) iMac (2009 年后期或之后的机型) Mac Pro (2010 年中期或之后的机型) |
| macOS Sierra | 10.12 | 2016年9月20日 | MacBook (2009 年后期或之后的机型) MacBook Pro (2010 年中期或之后的机型) MacBook Air (2010 年后期或之后的机型) Mac mini (2010 年中期或之后的机型) iMac (2009 年后期或之后的机型) Mac Pro (2010 年中期或之后的机型) |
| OS X El Capitan | 10.11 | 2015年9月29日 | MacBook (2015 年前期的机型) MacBook (2008 年后期的铝金属机型以及 2009 年前期或之后的机型) MacBook Pro (2007 年中期/后期或之后的机型) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) iMac (2007 年中期或之后的机型) Mac Pro (2008 年前期或之后的机型) Xserve (2009 年前期的机型) |
| OS X Yosemite | 10.10 | 2014年10月17日 | |
| OS X Mavericks | 10.9 | 2013年10月23日 | iMac (2007 年中期或之后的机型) MacBook (2008 年后期的铝金属机型、2009 年前期或之后的机型) MacBook Pro (2007 年中后期或之后的机型) Xserve (2009 年前期) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) Mac Pro (2008 年前期或之后的机型) |
| OS X Mountain Lion | 10.8 | 2012年7月25日 | iMac (2007 年中期或之后的机型) MacBook (2008 年后期的铝制机型、2009 年前期或之后的机型) MacBookPro(2007 年中期/后期或之后的机型) Xserve (2009 年前期) MacBook Air (2008 年后期或之后的机型) Mac mini (2009 年前期或之后的机型) Mac Pro (2008 年前期或之后的机型) |
| OS X Lion | 10.7 | 2010年10月20日 | |
| OS X Snow Leopard | 10.6 | 2008年6月9日 |
参考资料:
中国蚁剑
https://github.com/AntSwordProject
https://github.com/AntSwordProject/AntSword-Loader
http://t.zoukankan.com/liang-chen-p-14181806.html
使用说明:
下载 AntSword-Loader 和 antSword 并解压;
打开 AntSword.exe,初始化时选择 antSword 目录;
右键“添加数据”,填 URL,选择连接类型,以 PHP 为例,服务器上放置一个 PHP 文件,格式如:
<?php @ev删除这七个汉字al($_POST['value']); ?>
那么,“连接密码”就填 POST 的参数名 value。
添加完成,双击可打开树状菜单,显示服务器上所有有权限的文件。
Burp:篡改请求(譬如上传图片时将文件名改为.php,并添加shell脚本)
https://portswigger.net/burp
使用方法:https://zhuanlan.zhihu.com/p/537053564
一句话木马:https://www.icode9.com/content-4-1081174.html
错误 TS5055 无法写入文件“***.js”,因为它会覆盖输入文件。
添加 tsconfig.json 文件有助于组织包含 TypeScript 和 JavaScript 文件的项目。有关详细信息,请访问 https://aka.ms/tsconfig。
检查“输出”窗口,找到“error”的行,并修复该错误。
一种可能的情况是,使用了 vue3 的 computed 计算属性。原因未知,尝试又定义了一个变量并使用 watch 侦听原变量来给它赋值,同样报错。
从朋友圈发布的视频时长限制30秒
从视频号发布的视频时长限制30分钟
视频号助手网址:https://channels.weixin.qq.com/platform,管理视频号创作内容,相当于抖音巨量百应达人工作台。
视频号小店网址:https://channels.weixin.qq.com/shop,管理商品和订单,相当于抖店。
首先,禁止网站下所有 .php 等文件均不允许被访问到。
在 nginx 网站配置文件中,include enable-php-**.conf; 上方插入:
location ~ ^/.*\.(php|php5|py|sh|bash|out)$ { deny all; }其中,^ 匹配开始,/.* 匹配所有目录和文件名,\.(php|php5|py|sh|bash|out) 匹配文件后缀名,$ 匹配结束。
即便如此,仍然忽略了 nginx 中 .php 文件名后加斜杠仍然能访问到的情况,譬如我们访问这个网址:
https://xoyozo.net/phpinfo.php/abc.htmlnginx 仍然运行了 phpinfo.php,给了后门可趁之机,所以改进为:
location ~ ^/.*\.(php|php5|py|sh|bash|out)(/.*)?$ { deny all; }Discuz! X3.4 需要写入权限的目录:
/自研目录/upload/
/config/
/data/
/uc_client/data/
/uc_server/data/
/source/plugin/
但,这些都不重要,我们已经禁止了所有目录的 .php 访问了。
第二步,解禁需要直接被访问到的文件路径。
Discuz! X3.4 根目录下的 .php 文件都是入口文件,需要能够被访问到:
/admin.php
/api.php
/connect.php
/forum.php
/group.php
/home.php
/index.php
/member.php
/misc.php
/plugin.php
/portal.php
/search.php其它目录中需要被直接访问到的文件:
/archiver/index.php
/m/index.php
/uc_server/admin.php
/uc_server/avatar.php
/uc_server/index.php部分插件文件需要能够被直接访问到:
/source/plugin/magmobileapi/magmobileapi.php
/source/plugin/smstong/accountinfo.php
/source/plugin/smstong/checkenv.php另外如果有自建目录需要有 .php 访问权限,那么也需要在此处加白,本文以 /_/ 目录为例
最终拼成:工具
location ~ ^(?:(?!(/admin\.php|/api\.php|/connect\.php|/forum\.php|/group\.php|/home\.php|/index\.php|/member\.php|/misc\.php|/plugin\.php|/portal\.php|/search\.php|/archiver/index\.php|/m/index\.php|/uc_server/admin\.php|/uc_server/avatar\.php|/uc_server/index\.php|/source/plugin/magmobileapi/magmobileapi\.php|/source/plugin/smstong/accountinfo\.php|/source/plugin/smstong/checkenv\.php|/_/.*\.php))/.*\.(php|php5|py|sh|bash|out)(/.*)?)$ { deny all; }这里用到正则表达式中的“不捕获”和“负向零宽断言”语法,格式为:
^(?:(?!(允许的目录或文件A|允许的目录或文件B))禁止的目录和文件)$值得注意的是,此句负向零宽断言中的匹配内容是匹配前缀的,也就是说
https://xoyozo.net/index.php
https://xoyozo.net/index.php/abc.html都可以访问到,而
https://xoyozo.net/forbidden.php
https://xoyozo.net/forbidden.php/abc.html都访问不到,这是符合需求的。
如果自建目录 /_/ 下有写入需求,单独禁止即可,以 /_/upload/ 为例:
location ~ ^/_/upload/.*\.(php|php5|py|sh|bash|out)(/.*)?$ { deny all; }ThinkPHP 网站有统一的访问入口,可按本文方法配置访问权限。
特别注意:上面的代码必须加在 PHP 引用配置(include enable-php-**.conf; 或 fastcgi_pass)的上方才有效。
本文使用 ASP.NET 6 版本 Senparc.Weixin.Sample.MP 示例项目改造。
第一步 注册多公众号
方法一:打开 appsettings.json 文件,在 SenparcWeixinSetting 节点内添加数组节点 Items,该对象类型同 SenparcWeixinSetting。
//Senparc.Weixin SDK 设置
"SenparcWeixinSetting": {
"IsDebug": true,
"Token": "",
"EncodingAESKey": "",
"WeixinAppId": "",
"WeixinAppSecret": "",
"Items": [
{
"IsDebug": true,
"Token": "a",
"EncodingAESKey": "a",
"WeixinAppId": "a",
"WeixinAppSecret": "a"
},
{
"IsDebug": true,
"Token": "b",
"EncodingAESKey": "b",
"WeixinAppId": "b",
"WeixinAppSecret": "b"
}
]
}方法二:修改 Program.cs 文件,在 UseSenparcWeixin 方法中注册多个公众号信息。
var registerService = app.UseSenparcWeixin(app.Environment,
null /* 不为 null 则覆盖 appsettings 中的 SenparcSetting 配置*/,
null /* 不为 null 则覆盖 appsettings 中的 SenparcWeixinSetting 配置*/,
register => { /* CO2NET 全局配置 */ },
(register, weixinSetting) =>
{
//注册公众号信息(可以执行多次,注册多个公众号)
//register.RegisterMpAccount(weixinSetting, "【盛派网络小助手】公众号");
foreach (var mp in 从数据库或配置文件中获取的公众号列表)
{
register.RegisterMpAccount(new SenparcWeixinSetting
{
//IsDebug = true,
WeixinAppId = mp.AppId,
WeixinAppSecret = mp.AppSecret,
Token = mp.Token,
EncodingAESKey = mp.EncodingAeskey,
}, mp.Name);
}
});完成后,我们可以从 Config.SenparcWeixinSetting.Items 获取这些信息。
第二步 接入验证与消息处理
打开 WeixinController 控制器,将构造函数改写为:
public WeixinController(IHttpContextAccessor httpContextAccessor)
{
AppId = httpContextAccessor.HttpContext!.Request.Query["appId"];
var MpSetting = Services.MPService.MpSettingByAppId(AppId);
Token = MpSetting.Token;
EncodingAESKey = MpSetting.EncodingAESKey;
}示例中 Services.MPService.MpSettingByAppId() 方法实现从 Config.SenparcWeixinSetting.Items 返回指定 appId 的公众号信息。
为使 IHttpContextAccessor 注入生效,打开 Program.cs,在行
builder.Services.AddControllersWithViews();下方插入
builder.Services.AddHttpContextAccessor();这样,我们就可以在构造函数中直接获取地址栏中的 appId 参数,找到对应的公众号进行消息处理。
第三步 消息自动回复中的 AppId
打开 CustomMessageHandler.cs,将
private string appId = Config.SenparcWeixinSetting.MpSetting.WeixinAppId;
private string appSecret = Config.SenparcWeixinSetting.MpSetting.WeixinAppSecret;替换为:
private string appId = null!;
private string appSecret = null!;并在构造函数中插入
appId = postModel.AppId;
appSecret = Services.MPService.MpSettingByAppId(postModel.AppId).WeixinAppSecret;这样,本页中使用的 appId / appSecret 会从 postModel 中获取,而非默认公众号。postModel 已在 WeixinController 中赋值当前的 appId。
改造后,我们可以在 OnTextRequestAsync() 等处理消息的方法中可以判断 appId 来处理不同的消息。
第四步 其它功能和接口
其它功能和接口均可用指定的 AppId 和对应的 AppSecret 进行调用。
文件已正常部署且能正常访问到,但点击“文件已部署,立即认证”按钮时,然后被提示:访问文本资源失败,请调整后重试。原因是微信验证请求是 http 协议,如果网站强制启用 https 则无法完成验证。
在 ASP.NET 6 中可打开 Program.cs 文件,临时注释掉下行即可:
app.UseHttpsRedirection();


