找到
51
篇与
xioy
相关的结果
- 第 4 页
-
磐云被黑最惨的一次 好玩 进入目标后看到数据包中的域名,复制到浏览器里可以正常使用。 一通瞎点看到返回的数据包内容全都被加密了。 加密就没办法了,那就找找接口吧。在找接口的过程中找到了一段神秘密文:wsafkb@q124129&,并且这段代码十分的不简单。看样子是把请求的数据解密后再把数据发送到服务端的过程。 知道了密钥那就解密一下数据看看效果。随机选择了一个响应数据,把密钥填进去解密后果然获得了明文数据。 点击报告查询功能,看到请求包末尾是加密后的状态解密看看。 其中mrn对应的参数中文释义是病历号,再细看他的序号是有规律的,截至目前到我这是:25年第005416份报告。 知道了病历号的规律那查看一下其他人的报告试试。bp开启拦截功能,然后修改请求包后面的加密内容,直接可以越权查看到别人的体检报告。后续尝试了一下,这个小程序所有功能点都是同样这种加解密的方式来获取数据的,这边就不一一演示了。 磐云:玩呢! 你以为到这里就结束了吗,不可能,根本停不下来。注意到响应包的头是360的磐云。众所周知防火墙都是要靠数据包内容来判断是否有威胁的,但是这个小程序的数据包内容都被加密了磐云肯定检测不出来请求是否有威胁性,但也不能排除磐云有没有单独的为这个单位经行定制适配,如果适配了那么我们在请求包中带有威胁函数的请求就会被识别并拉黑。 随机选个一功能点,bp拦截请求包,在请求里面添加一个'看看有没有sql注入漏洞 解密响应包的内容,果然有sql注入 这不就来了吗。并且能够getshell。 代码分析 以下是完整的代码 "6f54": function(e, t, n) { "use strict"; n("7a82"), Object.defineProperty(t, "__esModule", { value: !0 }), t.Decrypt = r, t.Encrypt = function(e) { var t = a.enc.Utf8.parse(e) , n = a.RC4.encrypt(t, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }); return n.ciphertext.toString().toUpperCase() } , t.isDecrypt = function(e) { try { r(e) } catch (t) { return !1 } return !0 } , n("d401"), n("d3b7"), n("25f0"); n("786d"); var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() } },其中最主要的代码是这段: var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }这段代码首先定义加密库和密钥。a是加密库,o和i是密钥和初始化向量,字符串为:wsafkb@q124129&的UTF-8格式。 var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&");这段是定义解密函数,主要是对输入的字符串e进行解密。解密步骤:先把输入的字符串e解析为十六进制格式,再把十六进制数据转换为Base64格式。然后使用RC4算法解密,密钥为o(就是上面o定义的值),初始化向量为i,模式为CBC,填充方式为PKCS7。最后把解密结果转换为UTF-8字符串并返回。 function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }磐云 你加密数据包干什么呀?啊!你这种操作会把我的作用给异化掉的懂吗?知不知道什么叫防火墙?啊!你能说我没有起到作用吗? 我跟你打个比方啊,比如说你倒车入库。你用自动泊车功能,成功入库后,哎呀!自动泊车得了MVP!一看激光雷达天天在那,就是测距、识物。躺赢狗!激光雷达就是躺赢狗!激光雷达的评分是3.0。自动泊车一键入库省时省力对吧,13.0carry局能这样算吗?啊!你告诉我激光雷达是不是躺赢狗啊!马勒戈壁的,真是神经病! 你加密数据包干嘛呢?那不是要具体看数据包内容,看它有什么行为吗?啊!我每天检查这些加密后的数据包我都不知道里面是啥,你还说我没起到作用!傻逼啊!要不让你们开发自己开发一个防火墙来检测数据,他们又不愿意。你说我怎么保护你啊。
-
我的第一只机械表 缘起 大学时期偶然一次问室友有没有科幻电影推荐,其中一个室友推荐了星际穿越这部电影。我记得这部电影上映时我去看了,不过很遗憾是剧情没有看懂,单纯觉得特效非常震撼。 到现在我已经忘记这是第几遍刷这部作品了,每次重温都会产生新的感悟。 手表 值得一提的就是剧中的手表,它作为贯穿整部电影的重要道具,你不想注意到它是做不到的。 我第一眼看到这只手表就被深深地吸引,大三针没有其他繁杂的设计,是我喜欢的简约风格。 反手百度搜索:星际穿越中出现的手表,令我没想到的是这手表还真有同款,是一个美国的品牌:汉密尔顿。 这只手表的表径有两种规格,分别是42和38毫米。42表径的秒针上有摩斯密码,38表径的秒针则没有。 腕表搭配清晰易读的黑色表盘、充满复古风尚的米色Super-LumiNova夜光涂层指针以及黑色皮革表带。 使用的机芯是H-10自动上链机芯,具备80小时动力储存。 我的腕围是17厘米适合38表径。6911价格让我犯难犹豫不决,经过好几天的辗转最终咬咬牙买了。这算是我工作后买的第一个奢侈品虽然它只有6911。 京东是真的快第二天就送到了。买38表径是正确的选择,不大不小刚好合适。带了一周误差大概快5秒左右,在正常范围内。 新的目标 自从买了这块表后抖音总是给我推手表相关的视频。在众多视频中我关注到了欧米茄的海马150。它集休闲与正装为一体实在是太喜欢了,不过5w起的价格让我又恢复了理智。
-
摸鱼大闯关(持续更新) 网站地址 https://p.hancel.org/ 闯关开始 第0关 直接地址输入/Stage1.html,进入第1关。 第1关 直接地址输入/Stage2.html,进入第2关。 第2关 查看网页源码,看到下一关的网页地址。 直接地址输入/nexts.html,进入第3关。 第3关 查看网页源码,看到下一关的网页地址。 直接地址输入/gogo.html,进入第4关。 第4关 查看网页源码,最下面的注释行。 直接地址输入/lang/mac.html,进入第5关。 第5关 企鹅图标是linux系统。 直接地址输入/lang/linux.html,进入第6关。 第6关 查看源代码,代码中有一个图片没有显示出来,可以通过修改图片大小就可以在前端显示,我这里就直接查看图片了。 直接地址输入/lang/ruby.php,进入第7关。 第7关 网页title:摸鱼大闯关 - Stage 7 - The password is here 密码就是:here,进入第8关。 第8关 网页提示:&????;,密码是一个五个字母的单词,网页title:摸鱼大闯关 - Stage 8 - HTML字符实体 可以想到空格的英文单词也是五个字母:space,进入第9关。 第9关 是一种加密方式,凯撒密码3位位移得到答案。 直接地址输入/helloworld/mathematic.html,进入第10关。 第10关 网页title:摸鱼大闯关 - Stage 10 - Hex Hex是十六进制,尝试把字符转成十六进制数得到最终答案。直接地址输入/helloworld/effaced.html,进入第11关。 第11关 网页title:摸鱼大闯关 - Stage 11 - base?? 一眼base64,解密后得到答案。密码是:storage,进入第12关。 第12关 给了一个坐标,转换后是天安门 密码是:tiananmen,进入第13关。 第13关 一眼摩斯密码,对照解码就行 密码是:HELLO.MORSE,进入第14关。 第14关 提示是个梗直接百度搜就知道了 密码是:4,进入第15关。 第15关 这段代码有问题,把id的值修改为id="",即可进入第16关。 第16关 网页缺少了一个确认按钮,添加一个按钮就行,进入第17关。 <input type="submit" name="Submit" value="确认密码" οnclick="return check()"> 第17关 网页限制了字符位数,修改maxlength值即可进入第18关。 第18关 网页缺少了一个确认按钮,添加一个按钮就行,进入第19关。 <input type="submit" name="Submit" value="确认密码" οnclick="return check()"> 第19关 网页提示请根据前3关的密码得出本关密码,前面几关的MD5解密后分别对应关卡的数字 所以第19关的密码:1f0e3dad99908345f7439f8ffabdffc4进入第20关。 第20关 这段代码的计算结果就是答案 直接地址输入:/face/110037296.html,进入第21关。 第21关 给出的代码是通过ASCII编码后的结果,解码后就知道答案了。 密码:vuejs,进入第22关。 第22关 可以通过浏览器的网络功能查看到密码。 密码:21fbd4a1acbdaf6f37e3eb01aebcf181ddcae1f8,进入第23关。 第23关 直接全局搜passwd就能查看到密码。 密码:e92e866852515cc028baea131ed1c160,进入第24关。 第24关 可以通过浏览器的网络功能查看到密码。 密码:3c3d014ed4f2eb778570a40642277e86,进入第25关。 第25关 提供的数字 5 11 14 22 4 17,url提示abc,标题提示letter,按照a-z找出这几个数字对应的字母为EKNVDQ,按照凯撒密码尝试解密后发现key为25(-1)时候可以组成单词flower. 密码:flower,进入第26关。 第26关 图片下载下来把后缀改成rar解压得到答案。 直接地址输入:/face/studio.html,进入第27关。 第27关 图片下载下来,用记事本打开就能看到答案。 直接地址输入:/face/which.html,进入第28关。 第28关 图片下载下来,放大看每个板块上都有个字母组合起来就是答案。 直接地址输入:/face/truth.html,进入第29关。 第29关 图片下载下来,用记事本打开拉到最下面可以看到一段代码。这是图片的base64代码,用工具转换就行。 密码:mistake,进入第30关。 第30关 浏览器全局搜passwd,就可以看到答案。 密码:change,进入第31关。 第31关 提示是html的全拼,其中language有删除线,url中单词为brother.html。众所周知html和htm在功能上来讲没区别,于是删掉html中的L直接访问brother.htm,发现直接跳转回了首页,而非提示正常的Page not found。换了种方式curl请求了一下发现返回结果是 curl https://p.hancel.org/family/brother.htm <script> //location = "/family/doctor.html"; location = "/"; </script>直接地址输入:/family/doctor.html,进入第32关。 第32关 还不知道怎么玩
-
搭建一个属于自己的随机一言api 效果演示 接口 如果你不想自己部署可以直接使用下方由TNT安全团队免费提供的api接口。 https://api.tntsec.com/dit/index.php参数说明 参数说明a动画b漫画c游戏d文学e原创f来自网络g其他h影视i诗词j网易云k哲学l抖机灵其他作为动画类型处理搭建 教程 第一步:创建一个名为dit的文件夹 第二步:然后在dit文件夹下在创建具体分类的文件(每个分类文件中存在对应类型的一言) 第三步:创建一个名为index.php文件,写入以下代码(这个文件就是api) 在dit文件夹下创建了a.txt、b.txt两个文件。假设a文件中放的都是动漫,b文件中放的都是漫画。 默认随机全部一言 地址/index.php 地址/index.php?type=all 随机动漫 地址/index.php?type=a 随机漫画 地址/index.php?type=b <?php // 设置默认type参数为'all' $type = isset($_GET['type']) ? $_GET['type'] : 'all'; // 定义文件路径数组,根据type参数选择文件 $files = [ 'all' => ['dit/a.txt', 'dit/b.txt'], 'a' => ['dit/a.txt'], 'b' => ['dit/b.txt'] ]; // 根据type参数选择文件列表 $selectedFiles = isset($files[$type]) ? $files[$type] : []; // 检查是否选择了有效的文件 if (empty($selectedFiles)) { die('无效参数'); } // 初始化一个SplPriorityQueue来存储行,优先级用于随机访问 $lineQueue = new SplPriorityQueue(); // 遍历选定的文件,逐行读取内容 foreach ($selectedFiles as $file) { if (file_exists($file)) { $fileObject = new SplFileObject($file); while (!$fileObject->eof()) { $line = $fileObject->fgets(); // 读取一行,包括换行符(如果需要可以去掉) $line = trim($line); // 去除行首行尾的空白字符,包括换行符 if (!empty($line)) { // 忽略空行 $lineQueue->insert($line, rand()); } } } } // 如果没有读取到任何内容,则输出错误信息并退出 if ($lineQueue->isEmpty()) { die('没有任何内容'); } // 正确的随机选择方法(替换上面的SplPriorityQueue部分) $allLines = []; foreach ($selectedFiles as $file) { if (file_exists($file)) { $fileObject = new SplFileObject($file); while (!$fileObject->eof()) { $line = trim($fileObject->fgets()); if (!empty($line)) { $allLines[] = $line; } } } } // 随机选择一条内容 if (!empty($allLines)) { $randomIndex = array_rand($allLines); $randomLine = $allLines[$randomIndex]; echo $randomLine; } else { die('没有任何内容'); } ?>资源获取 {card-default label="资源获取:6w条一言" width="100%"} 若链接错误或失效,请在下方留言告知! 隐藏内容,请前往内页查看详情 {/card-default}
-
搭建一个属于自己的随机壁纸api 效果演示 本案例使用是分类的第二种:以图片链接进行随机的效果演示,如果你不想自己部署可以直接使用下方由TNT安全团队免费提供的api接口。 https://api.tntsec.com/img/index.php 说明 问: 全部和分类是什么意思? 答: 想要省事就把所有图片全都堆到一个地方,访问接口直接在这个文件中随机抽取一个图片,这就是全部的意思。如果你不嫌麻烦可以把图片分类存放,例如动漫图片放在一起,风景图片放在一起。访问接口输入指定参数就可以查看到指定类型的图片。 全部 第一种:以图片源文件进行随机 第一步:创建一个名为img的文件夹(这个文件里放你需要的图片) 第二步:创建一个名为index.php文件,写入以下代码 (这个文件就是api) <?php // 缓存文件 $cacheFile = 'cache.txt'; // 检查缓存文件是否存在且未过期(1小时) $cacheValid = file_exists($cacheFile) && (time() - filemtime($cacheFile)) < 3600; if ($cacheValid) { // 从缓存文件中读取图片URL $images = file($cacheFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); } else { // 从img文件夹中读取所有图片 $images = glob('img/*.{jpg,jpeg,png,gif}', GLOB_BRACE); // 如果没有找到图片,则输出错误信息并退出 if (empty($images)) { die('没有图片'); } // 将图片列表写入缓存文件 file_put_contents($cacheFile, implode(PHP_EOL, $images)); } // 随机选择一个图片(不需要设置随机数种子) $randomImage = $images[array_rand($images)]; // 重定向到随机图片 header('Location: ' . $randomImage); exit; ?>第二种:以图片链接进行随机 第一步:创建一个名为img.txt文件 (在这个文件里放你储存的图片链接,一行一条) 第二步:创建一个名为index.php文件,写入以下代码(这个文件就是api) <?php // 放置图片URL的文件 $imageFilePath = 'img.txt'; // 检查文件是否存在 if (!file_exists($imageFilePath)) { die('缺少所需文件'); } // 从文件中读取图片URL $images = file($imageFilePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // 如果没有找到图片URL,则输出错误信息并退出 if (empty($images)) { die('没有图片'); } // 随机选择一个URL $randomImage = $images[array_rand($images)]; // 重定向到随机图片 header('Location: ' . $randomImage); exit; ?>分类 第一种:以图片源文件进行随机 第一步:创建一个名为img的文件夹 第二步:然后在img文件夹下在创建具体分类的文件夹(每个分类的文件夹里放对应分类的图片) 第三步:创建一个名为index.php文件,写入以下代码(这个文件就是api) 在img文件夹下创建了a、b两个文件夹。假设a文件夹中放的都是动漫图片,b文件夹中放的都是风景图片。 默认随机全部图片 地址/index.php 地址/index.php?img=all 随机动漫图片 地址/index.php?img=a 随机风景图片 地址/index.php?img=b <?php // 从GET请求中获取img参数,默认为'all' $img = isset($_GET['img']) ? $_GET['img'] : 'all'; // 文件夹数组,用于根据$img参数选择文件夹 $folders = [ 'all' => ['img/a', 'img/b'], 'a' => ['img/a'], 'b' => ['img/b'] ]; // 根据$img参数选择文件夹 $selectedFolders = $folders[$img]; // 初始化图片数组 $images = []; // 遍历选定的文件夹,读取所有图片 foreach ($selectedFolders as $folder) { $folderImages = glob("$folder/*.{jpg,jpeg,png,gif}", GLOB_BRACE); if (!empty($folderImages)) { $images = array_merge($images, $folderImages); } } // 如果没有找到图片,则输出错误信息并退出 if (empty($images)) { die('没有图片'); } // 随机选择一个图片(不需要设置随机数种子) $randomImage = $images[array_rand($images)]; // 重定向到随机图片 header('Location: ' . $randomImage); exit; ?>第二种:以图片链接进行随机 第一步:创建一个名为img的文件夹 第二步:然后在img文件夹下在创建具体分类的文件(每个文件中的内容一行一个) 第三步:创建一个名为index.php文件,写入以下代码(这个文件就是api) 在img文件夹下创建了a.txt、b.txt两个文件。假设a.txt文件中放的都是动漫图片链接,b.txt文件中放的都是风景图片链接。 默认随机全部图片 地址/index.php 地址/index.php?img=all 随机动漫图片 地址/index.php?img=a 随机风景图片 地址/index.php?img=b 文件少的时候 <?php // 从请求中获取img参数,默认为'all' $img = isset($_GET['img']) ? $_GET['img'] : 'all'; // 初始化图片路径数组 $imagePaths = []; // 根据img参数读取对应的文件内容 if ($img === 'all') { // 如果参数是'all',则读取所有txt文件 $files = ['a.txt', 'b.txt']; } else { // 否则只读取对应的txt文件 $files = [$img . '.txt']; } // 遍历文件数组,读取图片路径 foreach ($files as $file) { $filePath = 'img/' . $file; if (file_exists($filePath)) { $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if (!empty($lines)) { $imagePaths = array_merge($imagePaths, $lines); } } } // 如果没有找到图片路径,则输出错误信息并退出 if (empty($imagePaths)) { die('没有图片'); } // 随机选择一个图片路径 $randomImagePath = $imagePaths[array_rand($imagePaths)]; // 重定向到随机图片路径 header('Location: ' . $randomImagePath); exit; ?> 文件多的时候 <?php // 从请求中获取img参数,默认为'all' $img = isset($_GET['img']) ? $_GET['img'] : 'all'; // 根据img参数确定要读取的文件列表 $filesToRead = ($img === 'all') ? ['a.txt', 'b.txt'] : [$img . '.txt']; // 初始化图片路径数组 $imagePaths = []; // 遍历文件列表,读取图片路径 foreach ($filesToRead as $file) { $filePath = 'img/' . $file; if (file_exists($filePath)) { // 直接从文件读取每一行并添加到imagePaths数组中 $handle = fopen($filePath, 'r'); if ($handle) { while (($line = fgets($handle)) !== false) { // 去除行尾的换行符和空白字符,并跳过空行 $line = trim($line); if (!empty($line)) { $imagePaths[] = $line; } } fclose($handle); } else { // 如果无法打开文件,记录错误(这里简单处理为继续下一个文件) error_log("无法打开文件: $filePath"); } } else { // 如果文件不存在,记录错误(这里简单处理为继续下一个文件) error_log("文件不存在: $filePath"); } } // 如果没有找到图片路径,则输出错误信息并退出 if (empty($imagePaths)) { die('没有图片'); } // 随机选择一个图片路径 $randomImagePath = $imagePaths[array_rand($imagePaths)]; // 重定向到随机图片路径 header('Location: ' . $randomImagePath); exit; ?> 资源获取 {card-default label="资源获取:300张动漫壁纸" width="100%"} 若链接错误或失效,请在下方留言告知! 隐藏内容,请前往内页查看详情 {/card-default}