mirror of
https://codeberg.org/mayx/pages
synced 2026-01-01 13:13:41 +08:00
357 lines
25 KiB
HTML
357 lines
25 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||
<title>记一次线下的信息安全比赛 | Mayx的博客</title>
|
||
<meta name="generator" content="Jekyll v3.9.5" />
|
||
<meta property="og:title" content="记一次线下的信息安全比赛" />
|
||
<meta name="author" content="mayx" />
|
||
<meta property="og:locale" content="zh_CN" />
|
||
<meta name="description" content="感觉还是现实中的渗透有意思……" />
|
||
<meta property="og:description" content="感觉还是现实中的渗透有意思……" />
|
||
<meta property="og:site_name" content="Mayx的博客" />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="article:published_time" content="2021-09-06T00:00:00+08:00" />
|
||
<meta name="twitter:card" content="summary" />
|
||
<meta property="twitter:title" content="记一次线下的信息安全比赛" />
|
||
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
|
||
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
|
||
<meta name="yandex-verification" content="fc0e535abed800be" />
|
||
<script type="application/ld+json">
|
||
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2021-09-06T00:00:00+08:00","datePublished":"2021-09-06T00:00:00+08:00","description":"感觉还是现实中的渗透有意思……","headline":"记一次线下的信息安全比赛","mainEntityOfPage":{"@type":"WebPage","@id":"/2021/09/06/offlinectf.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2021/09/06/offlinectf.html"}</script>
|
||
<!-- End Jekyll SEO tag -->
|
||
|
||
<link rel="canonical" href="https://mabbs.github.io/2021/09/06/offlinectf.html" />
|
||
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
|
||
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
|
||
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
|
||
<link rel="stylesheet" href="/assets/css/style.css?v=1767196818" />
|
||
<!--[if !IE]> -->
|
||
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
|
||
<!-- <![endif]-->
|
||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
|
||
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
|
||
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
|
||
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
|
||
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
|
||
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
|
||
<link rel="me" href="https://github.com/Mabbs" />
|
||
<script src="/assets/js/jquery.min.js"></script>
|
||
<!--[if lt IE 9]>
|
||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
|
||
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
<script>
|
||
var lastUpdated = new Date("Thu, 01 Jan 2026 00:00:18 +0800");
|
||
var BlogAPI = "https://summary.mayx.eu.org";
|
||
</script>
|
||
<script src="/assets/js/main.js"></script>
|
||
<!--[if !IE]> -->
|
||
|
||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
|
||
<script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
gtag('js', new Date());
|
||
gtag('config', 'UA-137710294-1');
|
||
</script>
|
||
|
||
<script src="/assets/js/instant.page.js" type="module"></script>
|
||
<!-- <![endif]-->
|
||
</head>
|
||
|
||
<body>
|
||
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript,这不影响你的浏览,但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
|
||
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer,这不影响你的浏览,但可能会有一些功能无法使用……</small></marquee><![endif]-->
|
||
<div class="wrapper">
|
||
<header class="h-card">
|
||
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
|
||
|
||
|
||
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
|
||
|
||
|
||
<p class="p-note">Mayx's Home Page</p>
|
||
|
||
<form action="/search.html">
|
||
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." /> <input type="submit" value="搜索" />
|
||
</form>
|
||
<br />
|
||
|
||
|
||
|
||
|
||
|
||
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
|
||
|
||
<ul class="downloads">
|
||
|
||
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
|
||
|
||
</ul>
|
||
</header>
|
||
<section class="h-entry">
|
||
|
||
<small><time class="date dt-published" datetime="2021-09-06T00:00:00+08:00">6 September 2021</time> - 字数统计:2753 - 阅读大约需要9分钟 - Hits: <span id="/2021/09/06/offlinectf.html" class="visitors">Loading...</span></small>
|
||
<h1 class="p-name">记一次线下的信息安全比赛</h1>
|
||
|
||
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
|
||
<div id="outdate" style="display:none;">
|
||
<hr /><p>
|
||
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
|
||
</p>
|
||
</div>
|
||
<script>
|
||
daysold = Math.floor((new Date().getTime() - new Date("Mon, 06 Sep 2021 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
|
||
if (daysold > 90) {
|
||
document.getElementById("outdate").style.display = "block";
|
||
document.getElementById("outime").innerHTML = daysold;
|
||
}
|
||
</script>
|
||
|
||
<hr />
|
||
|
||
<b>AI摘要</b>
|
||
<p id="ai-output">这篇文章记述了作者参加线下信息安全比赛的经历,主要分为两部分:CTF环节和内网渗透。作者虽然在网络工程背景下的知识面上与信息安全专业人员相抗衡,但在CTF环节遇到了挑战,对于Crypto和Misc问题感到困惑,认为CTF在现实中的实用性有限。在内网渗透方面,作者凭借实际经验显得更有优势,发现了一些实际运用中的漏洞。尽管如此,作者认为线下渗透比赛更有意思,强调在真实环境中进行渗透练习更有价值。最终作者所在的队伍获得了三等奖。</p>
|
||
|
||
<hr />
|
||
|
||
|
||
|
||
<ul><li><a href="#起因">起因</a></li><li><a href="#体验与过程">体验与过程</a><ul><li><a href="#ctf部分">CTF部分</a></li><li><a href="#内网渗透部分">内网渗透部分</a></li></ul></li><li><a href="#总结">总结</a></li></ul>
|
||
<hr />
|
||
|
||
|
||
<main class="post-content e-content" role="main"><p>感觉还是现实中的渗透有意思……<!--more--></p>
|
||
<h1 id="起因">
|
||
|
||
|
||
<a href="#起因"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 起因
|
||
|
||
|
||
</h1>
|
||
|
||
<p>近些年来,我体验过<a href="/2019/12/16/ctf.html">线上的CTF</a>,也体验过<a href="/2020/11/24/createctf.html">成为CTF的举办方</a>,但是由于各种各样的原因,我没有参加过线下的这种信息安全比赛。正好最近四川某学校组织了一场线下的信息安全比赛,我们学校就让我和同学们去参加了。 </p><p>
|
||
在我们的队伍中,除了我之外,其他人都是信息安全专业的,这让我这个网络工程的人怎么办😂。不过好歹我还<a href="/2021/05/15/vulnerability.html">发现过漏洞</a>,<a href="/2019/07/01/mabbs.html">自制过网站引擎</a>,也在维护网站的过程中<a href="/2019/02/17/break.html">对网络攻防有一定的了解</a>,加上上面的经验,至少我在知识面上还是能和信息安全专业的人比较的吧。</p>
|
||
<h1 id="体验与过程">
|
||
|
||
|
||
<a href="#体验与过程"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 体验与过程
|
||
|
||
|
||
</h1>
|
||
|
||
<p>在这次比赛中有两部分的内容,第一部分是CTF,第二部分是内网渗透。除此之外线下和线上的区别有一点就是每个队伍会单独给靶机,听说Flag好像有些题也是唯一的。另外有一个挺大的区别就是线下的电脑不允许联网,包括手机信号也会屏蔽。不过据说貌似屏蔽的只有4G以下的信号和2.4G的WiFi信号与蓝牙信号,5G移动网络和5GWiFi并没有受到影响,另外也提供一台可联网的电脑可以限时查资料。所以这整的我就有点看不懂这个操作了。另外我通过社工的办法偷偷的整到了他们校园网的密码,所以其实我可以正常连接到互联网。</p>
|
||
<h2 id="ctf部分">
|
||
|
||
|
||
<a href="#ctf部分"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> CTF部分
|
||
|
||
|
||
</h2>
|
||
|
||
<p>虽然我玩过CTF,但是实际上我对CTF还是一窍不通,Crypto部分的题看不懂,也不知道用什么工具,Misc题简直就是感觉能做可惜工具不够。Web题还好,至少会一点但是我还是不会SQL注入。其他什么Pwn会用Reverse之类的题就基本上和我们无缘了,反正我们小组的人都不会,另外也没工具。 </p><p>
|
||
其实说实话我到现在为止,都看不出来CTF在现实生活中有什么用,逆向和Web可能有点用,Crypto这种来个正常点的AES加密能有人不靠暴力破解?还有Misc那种是在考验什么?脑筋急转弯吗?我原创个加密算法就是有漏洞能有人会解? </p><p>
|
||
总之CTF感觉其实意思不大,不过说是那么说呢,我也还是分享些我能做出来然后有点意思的题吧。 </p><p>
|
||
在这次的Web题里面有一个挺有意思的就是MD5和它自身相等的一个题。不过目前貌似以人类的科技还没有找出这样的值。大概代码就是这样:</p>
|
||
<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><?php</span>
|
||
<span class="k">include</span> <span class="s1">'flag.php'</span><span class="p">;</span>
|
||
<span class="nb">highlight_file</span><span class="p">(</span><span class="s2">"index.php"</span><span class="p">);</span>
|
||
<span class="k">if</span><span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s2">"a"</span><span class="p">])){</span>
|
||
<span class="nv">$a</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s2">"a"</span><span class="p">];</span>
|
||
<span class="k">if</span><span class="p">(</span><span class="nv">$a</span> <span class="o">==</span> <span class="nb">md5</span><span class="p">(</span><span class="nv">$a</span><span class="p">)){</span>
|
||
<span class="k">echo</span> <span class="nv">$flag</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div></div>
|
||
<p>虽然和原题不太一样,不过大概意思就是这个意思。我看到之后最先想到的就是去百度找有没有这样的值,不过最后似乎发现人类还没找到。接下来我就去搜php中MD5常见的漏洞,最终发现就是在使用“==”判断的时候如果说后面的md5是“0e+一串数字”,PHP就会认为它是0。我本来想找0e开头的md5也为0e的,但是垃圾百度怎么找都只会找到像“QNKCDZO”这种垃圾值。那算了,反正知道原理了我就直接自己写一个脚本算吧,脚本内容如下:</p>
|
||
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">hashlib</span> <span class="kn">import</span> <span class="n">md5</span>
|
||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">999999999</span><span class="p">):</span>
|
||
<span class="n">a</span> <span class="o">=</span> <span class="n">md5</span><span class="p">((</span><span class="s">"0e"</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)).</span><span class="n">encode</span><span class="p">()).</span><span class="n">hexdigest</span><span class="p">()</span>
|
||
<span class="k">if</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s">"0e"</span><span class="p">:</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||
<span class="k">except</span><span class="p">:</span>
|
||
<span class="n">aaa</span> <span class="o">=</span> <span class="mi">0</span>
|
||
</code></pre></div></div>
|
||
<p>因为时间比较紧张,所以就随便写了一下,反正能用就行。最终算出来第一个值是“0e215962017”,然后就可以了,因为它的md5是“0e291242476940776845150308577824”,对于PHP来说相当于“0 = 0”。垃圾百度真的是除非直接搜这个值才能出现少量的结果,其他真的是怎么都搜不到…… </p><p>
|
||
其他题我都不会做,CTF就到这里吧。</p>
|
||
<h2 id="内网渗透部分">
|
||
|
||
|
||
<a href="#内网渗透部分"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 内网渗透部分
|
||
|
||
|
||
</h2>
|
||
|
||
<p>内网渗透相比CTF来说还是有点意思,尤其对我这种网络工程的人来说至少各种连接还是比较容易的。而且其实吧我也是在现实中玩过渗透的,像学校网络都比比赛中的网络渗透起来简单。另外我也写过<a href="/2021/05/07/ssh.html">任意连接两个网络</a>的文章,所以这一部分我做起来就会更加得心应手一些。 </p><p>
|
||
不过通过这次比赛,我还是发现比赛本身并没有多大意义,比如说我们比赛的时候进入的入口是一个叫做beescms的CMS,然而比赛举办方也不给代码,让我们盲猜,这倒也不是不行,在这个CMS的很多地方都能看到有可能会被SQL注入的点,然而我们队伍用了很多办法试都失败了。最后才在百度上找到<a href="https://www.anquanke.com/post/id/98574">一篇文章</a>说可以直接在主页POST一串:</p>
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>_SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999
|
||
</code></pre></div></div>
|
||
<p>这样的东西就可以直接修改Session绕过登录😓……我TM这东西不审计能找到这种漏洞?最终才成功在上面找到了4个flag然后进入下一个内网。 </p><p>
|
||
在下一个内网里面有两个MySQL数据库和一个Tomcat网站,另外还有一个网站上面写着后台管理但是看不出来是什么框架的。根据提示说那个Tomcat和数据库都是弱口令,最后猜出来Tomcat的用户名是“tomcat”,密码是“tomcat123”。数据库有个问题是我们能成功登录,但是相关的工具不知道咋回事连不上代理……我因为不是信息安全的所以没有什么工具,那个有工具的全局代理坏掉了,不知道为啥连不上……所以没办法……另外那个数据库进去之后竟然也不给个flag也真是够小气的,估计flag是在文件系统里面吧,听说用UDF提权就可以。Tomcat是进入第二层网络的跳板,我在上面搭了两层代理之后就可以进去那个网络了。在那个网络中有一个PHPOA的系统、一个Weblogic的网站和一个应该是Windows7的系统。 <del>看起来只开了SMB的端口,感觉好像应该是用永恒之蓝打……</del>(听大佬说好像是用IPC$?)不过具体的因为队友的工具连不上……所以就没办法。 </p><p>
|
||
PHPOA的那个资料不多,不过我还是通过百度搜到了<a href="https://blog.csdn.net/weixin_39788986/article/details/110226286">相关资料</a>说<code class="language-plaintext highlighter-rouge">/ntko/upLoadOfficeFile.php</code>这个路径有个任意文件上传的漏洞,我人麻了,这不给代码不给网络我难不成靠先知知道这个漏洞? </p><p>
|
||
Weblogic那个网上虽然搜到了教程,说可以用<code class="language-plaintext highlighter-rouge">/console/css/%252e%252e%252fconsole.portal</code>这个地址直接跳过登录,但是我没怎么用过那个平台不知道怎么部署也不知道怎么改密码所以最后也失败了…… </p><p>
|
||
到最后成绩还不错,做了6道题,给了1k多分,还拿了一个一血和二血。</p>
|
||
<h1 id="总结">
|
||
|
||
|
||
<a href="#总结"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 总结
|
||
|
||
|
||
</h1>
|
||
|
||
<p>最后比赛结束成绩还可以,我们队拿了个三等奖。不过这次比赛之后我发现还是在现实中去破解个认证啊啥的比CTF有用多了,去真实的环境搞渗透比在比赛中有意思多了,所以真想玩就在现实中玩吧。当然对于这次机会我感觉也是有意思的,通过Flag的方式在一定程度上来说能给我带来些乐趣,也是挺不错的经历了。</p></main>
|
||
|
||
|
||
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=CTF"><em>CTF</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E6%B8%97%E9%80%8F"><em>渗透</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8"><em>信息安全</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2021-09-06-offlinectf.md">查看原始文件</a></span></small>
|
||
|
||
|
||
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
|
||
<p id="suggest-container">Loading...</p>
|
||
<script>
|
||
var suggest = $("#suggest-container");
|
||
$.get(BlogAPI + "/suggest?id=/2021/09/06/offlinectf.html&update=" + lastUpdated.valueOf(), function (data) {
|
||
if (data.length) {
|
||
getSearchJSON(function (search) {
|
||
suggest.empty();
|
||
var searchMap = {};
|
||
for (var i = 0; i < search.length; i++) {
|
||
searchMap[search[i].url] = search[i];
|
||
}
|
||
|
||
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
|
||
for (var j = 0; j < data.length; j++) {
|
||
var item = searchMap[data[j].id];
|
||
if (item) {
|
||
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
|
||
var contentPreview = item.content.substring(0, 100);
|
||
if (item.content.length > 100) {
|
||
contentPreview += "……";
|
||
}
|
||
link.hover(
|
||
function(e) {
|
||
tooltip.text($(this).data('content'))
|
||
.css({
|
||
top: e.pageY + 10,
|
||
left: e.pageX + 10
|
||
})
|
||
.show();
|
||
},
|
||
function() {
|
||
tooltip.hide();
|
||
}
|
||
).mousemove(function(e) {
|
||
tooltip.css({
|
||
top: e.pageY + 10,
|
||
left: e.pageX + 10
|
||
});
|
||
}).data('content', contentPreview);
|
||
|
||
suggest.append(link);
|
||
suggest.append(' - ' + item.date + '<br />');
|
||
}
|
||
}
|
||
});
|
||
} else {
|
||
suggest.html("暂无推荐文章……");
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<br />
|
||
<div class="pagination">
|
||
|
||
<span class="prev">
|
||
<a href="/2021/08/15/blog.html">
|
||
上一篇:如何选择合适的博客平台
|
||
</a>
|
||
</span>
|
||
|
||
<br />
|
||
|
||
<span class="next">
|
||
<a href="/2021/09/28/cloudgame.html">
|
||
下一篇:云游戏的体验与感受
|
||
</a>
|
||
</span>
|
||
|
||
</div>
|
||
|
||
<!--[if !IE]> -->
|
||
<link rel="stylesheet" href="/assets/css/gitalk.css">
|
||
<script src="/assets/js/gitalk.min.js"></script>
|
||
|
||
<div id="gitalk-container"></div>
|
||
|
||
<script>
|
||
var gitalk = new Gitalk({
|
||
clientID: '36557aec4c3cb04f7ac6',
|
||
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
|
||
repo: 'mabbs.github.io',
|
||
owner: 'Mabbs',
|
||
admin: ['Mabbs'],
|
||
id: '/2021/09/06/offlinectf', // Ensure uniqueness and length less than 50
|
||
distractionFreeMode: false, // Facebook-like distraction free mode
|
||
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
|
||
})
|
||
gitalk.render('gitalk-container')
|
||
</script>
|
||
<!-- <![endif]-->
|
||
|
||
</section>
|
||
<!--[if !IE]> -->
|
||
<div id="landlord" style="left:5px;bottom:0px;">
|
||
<div class="message" style="opacity:0"></div>
|
||
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
|
||
<div class="live_talk_input_body">
|
||
<form id="live_talk_input_form">
|
||
<div class="live_talk_input_name_body" >
|
||
<input type="checkbox" id="load_this" />
|
||
<input type="hidden" id="post_id" value="/2021/09/06/offlinectf.html" />
|
||
<label for="load_this">
|
||
<span style="font-size: 11px; color: #fff;"> 想问这篇文章</span>
|
||
</label>
|
||
</div>
|
||
<div class="live_talk_input_text_body">
|
||
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
|
||
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<input name="live_talk" id="live_talk" value="1" type="hidden" />
|
||
<div class="live_ico_box" style="display:none;">
|
||
<div class="live_ico_item type_info" id="showInfoBtn"></div>
|
||
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
|
||
<div class="live_ico_item type_music" id="musicButton"></div>
|
||
<div class="live_ico_item type_youdu" id="youduButton"></div>
|
||
<div class="live_ico_item type_quit" id="hideButton"></div>
|
||
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
|
||
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
|
||
<input id="duType" value="douqilai" type="hidden" />
|
||
</div>
|
||
</div>
|
||
<div id="open_live2d">召唤伊斯特瓦尔</div>
|
||
<!-- <![endif]-->
|
||
<footer>
|
||
<p>
|
||
<small>Made with ❤ by Mayx<br />Last updated at 2026-01-01 00:00:18<br /> 总字数:614622 - 文章数:178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
|
||
</p>
|
||
</footer>
|
||
</div>
|
||
<script src="/assets/js/scale.fix.js"></script>
|
||
<!--[if !IE]> -->
|
||
<script src="/assets/js/main_new.js"></script>
|
||
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
|
||
<script src="/Live2dHistoire/live2d/js/message.js"></script>
|
||
<!-- <![endif]-->
|
||
</body>
|
||
</html>
|