1 2 3<!DOCTYPE html> 4<html lang="zh-CN" data-default-color-scheme=auto> 5 6 7 8<head> 9 <meta charset="UTF-8"> 10 <link rel="apple-touch-icon" sizes="76x76" href="/img/head.jpg"> 11 <link rel="icon" href="/img/head.jpg"> 12 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no"> 13 <meta http-equiv="x-ua-compatible" content="ie=edge"> 14 15 <meta name="theme-color" content="#2f4154"> 16 <meta name="author" content="Zjacky"> 17 <meta name="keywords" content="Zjacky"> 18 19 <meta name="description" content="å¼å - CodeScanåè¨è¿éæ¯è¯¦ç»è§£éä¸CodeScançç¨æ³ï¼ä¹åååäºå¿«éç代ç 审计ï¼äºæ¯å°±åäºä¸ä¸ªè¿ç§å¿«éå¹é Sinkç¹çå·¥å ·ï¼ççæ¯æ¬¡ç¹ç¹ç¹ææç´¢äºï¼Pythonå±å®ä¸ä¼é ï¼å°±æ¿goåäºä¸ä¸ï¼é¾åº¦ä¸å¤§ï¼ç»ç»æç项ç®ï¼å®¡è®¡ä¹ä¸è½ä¸æä¸åçæ»ç£ï¼å©ç¨ä¸äºè¾ å©å·¥å ·ä¼äºåååï¼ä»¥ä¸ä¸ºå®å ¨è¯¦è§£ï¼æä»»ä½é®é¢åBugå¯ä»¥Github䏿Issueæè å¨Blogçå ³äºé¡µé¢æ¾æçèç³»æ¹å¼è¿è¡ç§èï¼å¯¹å¸"> 20<meta property="og:type" content="article"> 21<meta property="og:title" content="å¼å - CodeScan"> 22<meta property="og:url" content="https://zjackky.github.io/post/develop-codescan-zwcz53.html"> 23<meta property="og:site_name" content="Zjacky Blog"> 24<meta property="og:description" content="å¼å - CodeScanåè¨è¿éæ¯è¯¦ç»è§£éä¸CodeScançç¨æ³ï¼ä¹åååäºå¿«éç代ç 审计ï¼äºæ¯å°±åäºä¸ä¸ªè¿ç§å¿«éå¹é Sinkç¹çå·¥å ·ï¼ççæ¯æ¬¡ç¹ç¹ç¹ææç´¢äºï¼Pythonå±å®ä¸ä¼é ï¼å°±æ¿goåäºä¸ä¸ï¼é¾åº¦ä¸å¤§ï¼ç»ç»æç项ç®ï¼å®¡è®¡ä¹ä¸è½ä¸æä¸åçæ»ç£ï¼å©ç¨ä¸äºè¾ å©å·¥å ·ä¼äºåååï¼ä»¥ä¸ä¸ºå®å ¨è¯¦è§£ï¼æä»»ä½é®é¢åBugå¯ä»¥Github䏿Issueæè å¨Blogçå ³äºé¡µé¢æ¾æçèç³»æ¹å¼è¿è¡ç§èï¼å¯¹å¸"> 25<meta property="og:locale" content="zh_CN"> 26<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240928235812-5wlbnbb.png"> 27<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929002903-ypqa197.png"> 28<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929003143-7v37o9w.png"> 29<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929124102-qjfancc.png"> 30<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155237-imb68qu.png"> 31<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155756-ob60ahp.png"> 32<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155950-rnf1w3w.png"> 33<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160610-h206usc.png"> 34<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160326-n6xok99.png"> 35<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160725-a19hq1m.png"> 36<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161504-eys6pkt.png"> 37<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161613-ujiovc5.png"> 38<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161722-27awoxu.png"> 39<meta property="og:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161933-tsbc5fw.png"> 40<meta property="article:published_time" content="2024-09-28T15:32:13.000Z"> 41<meta property="article:modified_time" content="2024-09-29T04:19:40.000Z"> 42<meta property="article:author" content="Zjacky"> 43<meta property="article:tag" content="Zjacky"> 44<meta name="twitter:card" content="summary_large_image"> 45<meta name="twitter:image" content="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240928235812-5wlbnbb.png"> 46 47 48 <meta name="referrer" content="no-referrer-when-downgrade"> 49 50 51 <title>å¼å - CodeScan - Zjacky Blog</title> 52 53 <link rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" /> 54 55 56 57 <link rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" /> 58 59 <link rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" /> 60 61 <link rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" /> 62 63 64 65<!-- 主é¢ä¾èµç徿 åºï¼ä¸è¦èªè¡ä¿®æ¹ --> 66<!-- Do not modify the link that theme dependent icons --> 67 68<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_hj8rtnfg7um.css"> 69 70 71 72<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css"> 73 74 75<link rel="stylesheet" href="/css/main.css" /> 76 77 78 <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" /> 79 80 <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" /> 81 82 83 84 85 86
86<script id="fluid-configs"> 87 var Fluid = window.Fluid || {}; 88 Fluid.ctx = Object.assign({}, Fluid.ctx) 89 var CONFIG = {"hostname":"zjackky.github.io","root":"/","version":"1.9.7","typing":{"enable":true,"typeSpeed":70,"cursorChar":"$","loop":false,"scope":[]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":"â¡"},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"left","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":5},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":true,"follow_dnt":true,"baidu":null,"google":{"measurement_id":null},"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml","include_content_in_search":true}; 90 91 if (CONFIG.web_analytics.follow_dnt) { 92 var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; 93 Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on')); 94 } 95 </script>
95 96
96<script src="/js/utils.js" ></script>
96 97
97<script src="/js/color-schema.js" ></script>
97 98 99 100 101 102 103 <!-- Google tag (gtag.js) --> 104
104<script async> 105 if (!Fluid.ctx.dnt) { 106 Fluid.utils.createScript("https://www.googletagmanager.com/gtag/js?id=", function() { 107 window.dataLayer = window.dataLayer || []; 108 function gtag() { 109 dataLayer.push(arguments); 110 } 111 gtag('js', new Date()); 112 gtag('config', ''); 113 }); 114 } 115 </script>
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129<meta name="generator" content="Hexo 7.1.1"></head> 130 131 132<body> 133 134 135 <header> 136 137 138<div class="header-inner" style="height: 70vh;"> 139 <nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"> 140 <div class="container"> 141 <a class="navbar-brand" href="/"> 142 <strong>Zjacky's Blog</strong> 143 </a> 144 145 <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse" 146 data-target="#navbarSupportedContent" 147 aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 148 <div class="animated-icon"><span></span><span></span><span></span></div> 149 </button> 150 151 <!-- Collapsible content --> 152 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 153 <ul class="navbar-nav ml-auto text-center"> 154 155 156 157 158 159 <li class="nav-item"> 160 <a class="nav-link" href="/" target="_self"> 161 <i class="iconfont icon-home-fill"></i> 162 <span>é¦é¡µ</span> 163 </a> 164 </li> 165 166 167 168 169 170 171 <li class="nav-item"> 172 <a class="nav-link" href="/archives/" target="_self"> 173 <i class="iconfont icon-archive-fill"></i> 174 <span>彿¡£</span> 175 </a> 176 </li> 177 178 179 180 181 182 183 <li class="nav-item"> 184 <a class="nav-link" href="/categories/" target="_self"> 185 <i class="iconfont icon-category-fill"></i> 186 <span>åç±»</span> 187 </a> 188 </li> 189 190 191 192 193 194 195 <li class="nav-item"> 196 <a class="nav-link" href="/tags/" target="_self"> 197 <i class="iconfont icon-tags-fill"></i> 198 <span>æ ç¾</span> 199 </a> 200 </li> 201 202 203 204 205 206 207 <li class="nav-item"> 208 <a class="nav-link" href="/about/" target="_self"> 209 <i class="iconfont icon-user-fill"></i> 210 <span>å ³äº</span> 211 </a> 212 </li> 213 214 215 216 217 218 219 <li class="nav-item"> 220 <a class="nav-link" href="/links/" target="_self"> 221 <i class="iconfont icon-link-fill"></i> 222 <span>åé¾</span> 223 </a> 224 </li> 225 226 227 228 <li class="nav-item" id="search-btn"> 229 <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search"> 230 <i class="iconfont icon-search"></i> 231 </a> 232 </li> 233 234 235 236 <li class="nav-item" id="color-toggle-btn"> 237 <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle"> 238 <i class="iconfont icon-dark" id="color-toggle-icon"></i> 239 </a> 240 </li> 241 242 </ul> 243 </div> 244 </div> 245</nav> 246 247 248 249<div id="banner" class="banner" parallax=true 250 style="background: url('/img/3.jpg') no-repeat center center; background-size: cover;"> 251 <div class="full-bg-img"> 252 <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)"> 253 <div class="banner-text text-center fade-in-up"> 254 <div class="h2"> 255 256 <span id="subtitle" data-typed-text="å¼å - CodeScan"></span> 257 258 </div> 259 260 261 262 <div class="mt-3"> 263 264 265 <span class="post-meta"> 266 <i class="iconfont icon-date-fill" aria-hidden="true"></i> 267 <time datetime="2024-09-28 23:32" pubdate> 268 2024å¹´9æ28æ¥ æä¸ 269 </time> 270 </span> 271 272 </div> 273 274 <div class="mt-1"> 275 276 <span class="post-meta mr-2"> 277 <i class="iconfont icon-chart"></i> 278 279 1.6k å 280 281 </span> 282 283 284
285 <span class="post-meta mr-2"> 286 <i class="iconfont icon-clock-fill"></i> 287 288 289 290 14 åé 291 292 </span> 293 294 295 296 297 298 <span id="busuanzi_container_page_pv" style="display: none"> 299 <i class="iconfont icon-eye" aria-hidden="true"></i> 300 <span id="busuanzi_value_page_pv"></span> 次 301 </span> 302 303 304 305 </div> 306 307 308 309 </div> 310 311 312 </div> 313 </div> 314</div> 315 316</div> 317 318 </header> 319 320 <main> 321 322 323 324<div class="container-fluid nopadding-x"> 325 <div class="row nomargin-x"> 326 <div class="side-col d-none d-lg-block col-lg-2"> 327 328 <aside class="sidebar" style="padding-left: 2rem; margin-right: -1rem"> 329 <div id="toc"> 330 <p class="toc-header"> 331 <i class="iconfont icon-list"></i> 332 <span>ç®å½</span> 333 </p> 334 <div class="toc-body" id="toc-body"></div> 335</div> 336 337 338 339 </aside> 340 341 342 </div> 343 344 <div class="col-lg-8 nopadding-x-md"> 345 <div class="container nopadding-x-md" id="board-ctn"> 346 <div id="board"> 347 <article class="post-content mx-auto"> 348 <h1 id="seo-header">å¼å - CodeScan</h1> 349 350 351 <div class="markdown-body"> 352 353 <h1 id="å¼å-CodeScan"><a href="#å¼å-CodeScan" class="headerlink" title="å¼å - CodeScan"></a>å¼å - CodeScan</h1><h1 id="åè¨"><a href="#åè¨" class="headerlink" title="åè¨"></a>åè¨</h1><p>è¿éæ¯è¯¦ç»è§£éä¸CodeScançç¨æ³ï¼ä¹åååäºå¿«éç代ç 审计ï¼äºæ¯å°±åäºä¸ä¸ªè¿ç§å¿«éå¹é Sinkç¹çå·¥å ·ï¼ççæ¯æ¬¡ç¹ç¹ç¹ææç´¢äºï¼Pythonå±å®ä¸ä¼é ï¼å°±æ¿goåäºä¸ä¸ï¼é¾åº¦ä¸å¤§ï¼ç»ç»æç项ç®ï¼å®¡è®¡ä¹ä¸è½ä¸æä¸åçæ»ç£ï¼å©ç¨ä¸äºè¾ å©å·¥å ·ä¼äºåååï¼ä»¥ä¸ä¸ºå®å ¨è¯¦è§£ï¼æä»»ä½é®é¢åBugå¯ä»¥Github䏿Issueæè å¨Blogçå ³äºé¡µé¢æ¾æçèç³»æ¹å¼è¿è¡ç§èï¼å¯¹å¸å 们æå¸®å©çè¯å¯ä»¥ç¹ç¹Starsæã</p> 354<p>â</p> 355<h1 id="CodeScan"><a href="#CodeScan" class="headerlink" title="CodeScan"></a>CodeScan</h1><h2 id="å·¥å ·æ¦è¿°"><a href="#å·¥å ·æ¦è¿°" class="headerlink" title="å·¥å ·æ¦è¿°"></a>å·¥å ·æ¦è¿°</h2><p>è¯¥å·¥å ·ç®çä¸ºå¯¹å¤§å¤æ°ä¸å®æ´ç代ç 以åä¾èµå¿«éè¿è¡Sinkç¹å¹é æ¥å¸®å©çº¢éå®æå¿«é代ç 审计ï¼å¼åè¯¥å·¥å ·çåè¡·æ¯ä»¥<code>Sink</code>âå°<code>Source</code>âçæè·¯æ¥å¼åï¼ä¸ºäºå°ææå¯ççSinkç¹å¹é åºæ¥å¹¶ä¸ååç¬¬å æè¿è¡å¿«éæ¼æ´ææï¼å¹¶ä¸è¯¥å·¥å ·å¼å坿©å±æ§å¼ºï¼ææ¬æä½ï¼ç®åå·¥å ·æ¯æçè¯è¨æPHPï¼Java(JSP)</p> 356<p>â</p> 357<h2 id="ç¼è¯"><a href="#ç¼è¯" class="headerlink" title="ç¼è¯"></a>ç¼è¯</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">./build.sh<br><br><span class="hljs-comment"># ä¼çæææçæ¬å¨releasesä¸</span><br></code></pre></td></tr></table></figure> 358 359<p>â</p> 360<h2 id="åè½"><a href="#åè½" class="headerlink" title="åè½"></a>åè½</h2><ol> 361<li><p>æ¡æ¶è¯å«</p> 362</li> 363<li><p>æ¶µç大é¨åæ¼æ´çSinkç¹çå¹é (å¦å¾)</p> 364<p> <img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240928235812-5wlbnbb.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 365</li> 366<li><p>å¯èªå®ä¹å®å¶åä¿®æ¹é»ç½ååå 容</p> 367</li> 368<li><p>夿¨¡ååå¤è¯è¨å代ç 审计</p> 369</li> 370<li><p>è¿è¡èäºé´æä»£ç çå¿«éå¹é æå</p> 371</li> 372<li><p>æ ¹æ®Jarè¿è¡éæåæ(é»è®¤åæ)</p> 373</li> 374</ol> 375<ul> 376<li>mysqlconnectâ>jdbc</li> 377<li>Xstream â> xml/json</li> 378</ul> 379<p>â</p> 380<h2 id="使ç¨">
380<a href="#使ç¨" class="headerlink" title="使ç¨"></a>使ç¨</h2><p>â</p> 381<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><code class="hljs bash">Usage of ./CodeScan_darwin_arm64:<br> -L string<br> 审计è¯è¨<br> -d string<br> è¦æ«æçç®å½<br> -h string<br> 使ç¨å¸®å©<br> -lb string<br> è¡é»åå<br> -m string<br> è¿æ»¤çå符串<br> -pb string<br> è·¯å¾é»åå<br> -r string<br> RCEè§å<br> -u string<br> æä»¶ä¸ä¼ è§å<br><br><br>Example:<br> CodeScan_windows_amd64.exe -L java -d ./net<br> CodeScan_windows_amd64.exe -L php -d ./net<br> CodeScan_windows_amd64.exe -d ./net -m <span class="hljs-string">"CheckSession.jsp"</span><br></code></pre></td></tr></table></figure> 382 383<p>â</p> 384<h2 id="é«çº§ç¨æ³"><a href="#é«çº§ç¨æ³" class="headerlink" title="é«çº§ç¨æ³"></a>é«çº§ç¨æ³</h2><p><code>以ä¸å以Javaä½ä¸ºç¤ºä¾</code>â</p> 385<h3 id="髿©å±æ§"><a href="#髿©å±æ§" class="headerlink" title="髿©å±æ§"></a>髿©å±æ§</h3><p>å¾ç®åçèªå®ä¹ï¼å¦æéè¦èªå®ä¹ä¸äºå¹é è§åï¼é¦å å¯ä»¥å¨è¿éå å ¥</p> 386<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929002903-ypqa197.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 387<p>â</p> 388<p>å ¶æ¬¡å¦æéè¦æ°å¢æ¼æ´ç±»åï¼åªéè¦ä¸æ¥(è¿é以Sql为ä¾)</p> 389<ol> 390<li>æ°å»ºSQLç®å½</li> 391<li>å®ä¹ä¸ä¸ªæ¹æ³å« SqlCheck</li> 392<li>åä¸ä¸ªsqlcheck.txt(çæçæä»¶å) + ä½ èªå®ä¹çè§å</li> 393<li>æåå¨è¿éå å ¥å å+æ¹æ³åå³å¯</li> 394</ol> 395<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929003143-7v37o9w.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 396<p>â</p> 397<figure class="highlight go"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs go"><span class="hljs-keyword">package</span> SqlTest<br><br><span class="hljs-keyword">import</span> (<br> <span class="hljs-string">"CodeScan/FindFile"</span><br> <span class="hljs-string">"fmt"</span><br>)<br><br><span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">SqlCheck</span><span class="hljs-params">(dir <span class="hljs-type">string</span>)</span></span> {<br> FindFile.FindFileByJava(dir, <span class="hljs-string">"fastjson.txt"</span>, []<span class="hljs-type">string</span>{<span class="hljs-string">".parseObject("</span>})<br> fmt.Println(<span class="hljs-string">"SqlCheckåæå®æ"</span>)<br><br>}<br><br></code></pre></td></tr></table></figure> 398 399<p>â</p> 400<h3 id="æ«æä½ç½®"><a href="#æ«æä½ç½®" class="headerlink" title="æ«æä½ç½®"></a>æ«æä½ç½®</h3><p>卿ä¸äºéæºä»£ç çæ¶åç»å¸¸å°±ä¸ä¸ªJaræè Classï¼åç¼è¯çæ¶å伿ä¾èµè¿è¡ä¸èµ·åç¼è¯ï¼æä»¥ä¸ºäºé¿å æ«æä¸äºä¾èµç误æ¥ï¼å¨å·¥å ·ä¸èªå¸¦çé»ååä¸ä¼è¿æ»¤æå¦ä¸é»ååçå åï¼
400éè¦èªå®ä¹çæ¶åå¯èªè¡ä¿®æ¹ï¼ä½ç½®å¨<code>CommonVul/Rule/MatchPathRule.go</code>â</p> 401<figure class="highlight go"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs go"><span class="hljs-keyword">var</span> PathBlackJava = []<span class="hljs-type">string</span>{<br> <span class="hljs-string">"apache"</span>, <span class="hljs-string">"lombok"</span>, <span class="hljs-string">"microsoft"</span>, <span class="hljs-string">"solr"</span>,<br> <span class="hljs-string">"amazonaws"</span>, <span class="hljs-string">"c3p0"</span>, <span class="hljs-string">"jodd"</span>, <span class="hljs-string">"afterturn"</span>, <span class="hljs-string">"hutool"</span>,<br> <span class="hljs-string">"javassist"</span>, <span class="hljs-string">"alibaba"</span>, <span class="hljs-string">"aliyuncs"</span>, <span class="hljs-string">"javax"</span>, <span class="hljs-string">"jackson"</span>,<br> <span class="hljs-string">"bytebuddy"</span>, <span class="hljs-string">"baomidou"</span>, <span class="hljs-string">"google"</span>, <span class="hljs-string">"netty"</span>, <span class="hljs-string">"redis"</span>, <span class="hljs-string">"mysql"</span>,<br> <span class="hljs-string">"logback"</span>, <span class="hljs-string">"ognl"</span>, <span class="hljs-string">"oracle"</span>, <span class="hljs-string">"sun"</span>, <span class="hljs-string">"junit"</span>, <span class="hljs-string">"reactor"</span>, <span class="hljs-string">"github"</span>,<br> <span class="hljs-string">"mchange"</span>, <span class="hljs-string">"taobao"</span>, <span class="hljs-string">"nimbusds"</span>, <span class="hljs-string">"opensymphony"</span>, <span class="hljs-string">"freemarker"</span>, <span class="hljs-string">"java"</span>, <span class="hljs-string">"apiguardian"</span>, <span class="hljs-string">"hibernate"</span>, <span class="hljs-string">"javassist"</span>, <span class="hljs-string">"jboss"</span>, <span class="hljs-string">"junit"</span>, <span class="hljs-string">"mybatis"</span>,<br> <span class="hljs-string">"springframework"</span>, <span class="hljs-string">"slf4j"</span>,<br>}<br></code></pre></td></tr></table></figure> 402 403<p>æä»¥è¿ä¹å¯¼è´äºä¸ä¸ªé®é¢ï¼ä¸è½ä»é¡¶å±ä¸ç´æ¥æ«æ</p> 404<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240929124102-qjfancc.png" srcset="/img/loading.gif" lazyload alt="image"></p> 405<p><code>请æCodeScanæ¾å¨Netå级ç®å½ä¸æ«æ(å¦åä¼å¿½ç¥æç´æ¥ä¸ä¸ªJavaç®å½)</code>â</p> 406<p>请<code>-d</code>âåé¢çåæ°å°½éå¨<code>/src/main/java</code>âä¹åï¼æ¯å¦è¿éå°±éè¦æCodeScanæ¾å°<code>net</code>âç®å½ä¸å¼å§æ«æ</p> 407<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">CodeScan_windows_amd64.exe -L java -d ./net<br></code></pre></td></tr></table></figure> 408 409<h3 id="è¿æ»¤å符串-åªåäºJSP-PHP"><a href="#è¿æ»¤å符串-åªåäºJSP-PHP" class="headerlink" title="è¿æ»¤å符串(åªåäºJSP + PHP)"></a>è¿æ»¤å符串(åªåäºJSP + PHP)</h3><p>æ¯å¦ç°å¨æä¸ä¸ªä»£ç ç¾åç¾ä¸ºé´æä»£ç å¨JSPä¸</p> 410<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs java"><%@ include file=<span class="hljs-string">"../../common/js/CheckSession.jsp"</span>%><br></code></pre></td></tr></table></figure> 411 412<p>æ¤æ¶å¯ä»¥ç¨ä¸ä¸åè½æ¥è¿è¡å¿«éè·åæªé´æä»£ç </p> 413<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">CodeScan_windows_amd64.exe -d ./yuan -m <span class="hljs-string">"CheckSession.jsp"</span><br></code></pre></td></tr></table></figure> 414 415<p>æ¤æ¶ä¼å°ä¸åå¨è¿ä¸ªä»£ç çæä»¶é½æ¾å°<code>NoAuthDir</code>âç®å½ä¸ï¼ç¶åå¯ä»¥åæ«ä¸éå°±å¯ä»¥ç«å»å®ä½å°å卿ªé´æå¹¶ä¸åå¨Sinkç¹ç彿°æä»¶äº</p> 416<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">CodeScan_windows_amd64.exe -L java -d ./NoAuthDir<br></code></pre></td></tr></table></figure> 417 418<p>â</p> 419<h3 id="éæåæä¾èµæ åµ"><a href="#éæåæä¾èµæ åµ" class="headerlink" title="éæåæä¾èµæ åµ"></a>éæåæä¾èµæ åµ</h3><p>åªéè¦å¨CodeScançç®å½ä¸æ¾å ¥EvilJarList.txtå³å¯å¹é åºæ¥</p> 420<p><code>EvilJarList.txt</code>â å 容为åå¨å¯ææ¼æ´ç<code>Jar</code>â,模çå¦ä¸</p> 421<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs bash">fastjson-1.2.47.jar<br>resin-4.0.63.jar<br>jackson-core-2.13.3.jar<br>c3p0-0.9.5.2.jar<br>commons-beanutils-1.9.4.jar<br>commons-beanutils-1.9.3.jar<br>commons-beanutils-1.9.2.jar<br>commons-collections-3.2.1.jar<br>mysql-connector-java-8.0.17.jar<br>commons-collections4-4.0.jar<br>shiro-core-1.10.1.jar<br>aspectjweaver-1.9.5.jar<br>rome-1.0.jar<br>xstream-1.4.11.1.jar<br>sqlite-jdbc-3.8.9.jar<br>vaadin-server-7.7.14.jar<br>hessian-4.0.63.jar<br></code></pre></td></tr></table></figure> 422 423<p>â</p> 424<h2 id="TODO"><a href="#TODO" class="headerlink" title="TODO"></a>TODO</h2><ul> 425<li>å°ç»æä»TXT转为Excel</li> 426<li>Sinkç¹ç»§ç»å®å</li> 427<li>ASP</li> 428</ul> 429<h2 id="æ¯æé¡¹ç®"><a href="#æ¯æé¡¹ç®" class="headerlink" title="æ¯æé¡¹ç®"></a>æ¯æé¡¹ç®</h2><ul> 430<li>妿æå¸å åç°Bugæè ææ´å¥½ç建议请æissueæè°¢</li> 431<li>è¦æ¯åä½å¸å éè¿æ¬äººçå°å·¥å ·æå°ä¸äºå¥½æ´è®°å¾å头ç¹ç¹Stars诶</li> 432</ul> 433<p>â</p> 434<p>â</p> 435<h2 id="详ç»ä½¿ç¨æç« -å éæ¡ä¾"><a href="#详ç»ä½¿ç¨æç« -å éæ¡ä¾" class="headerlink" title="详ç»ä½¿ç¨æç« (å éæ¡ä¾)"></a>详ç»ä½¿ç¨æç« (å éæ¡ä¾)</h2><h3 id="æ¡ä¾"><a href="#æ¡ä¾" class="headerlink" title="æ¡ä¾"></a>æ¡ä¾</h3><p>è¿éå°±å±ç¤ºä¸ä¸äºç®åç代ç ï¼åªæèªå·±ç¨äºæç¥éçé¦</p> 436<h4 id="NginxWebui"><a href="#NginxWebui" class="headerlink" title="NginxWebui"></a>NginxWebui</h4><p>å æ¡æ¶åæä¸ºSpring</p> 437<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155237-imb68qu.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 438<p>â</p> 439<h5 id="ä»»ææä»¶ä¸ä¼ "><a href="#ä»»ææä»¶ä¸ä¼ " class="headerlink" title="ä»»ææä»¶ä¸ä¼ "></a>ä»»ææä»¶ä¸ä¼ </h5><p>å·¥å ·æ«æåºç»æä¸º</p> 440<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155756-ob60ahp.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 441<p>ææ¶å代ç å°±æ¯å¯ä»¥ç´æ¥ç§çï¼è¿éåç°<code>transferTo</code>â è¿ä¸ªsinkç¹å°±å¨æ§å¶å±</p> 442<p>â</p> 443<p>æ¾å°<code>src/main/java/com/cym/controller/adminPage/MainController.java</code>â</p> 444<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406155950-rnf1w3w.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 445<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160610-h206usc.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 446<p>è¿ç§ååå¯ä»¥è¿è¡è·¨ç®å½ä¸ä¼ </p> 447<p>ç´æ¥ä¼ å³å¯ä¸ä¼ æå</p> 448<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160326-n6xok99.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 449<p>æ¥æ</p> 450<figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-string">POST</span> <span class="hljs-string">/admiNPage/main/upload</span> <span class="hljs-string">HTTP/1.1</span><br><span class="hljs-attr">Host:</span> <span class="hljs-string">localhost:8080</span><br><span class="hljs-attr">Accept:</span> <span class="hljs-string">application/json,</span> <span class="hljs-string">text/javascript,</span> <span class="hljs-string">*/*;</span> <span class="hljs-string">
450q=0.01</span><br><span class="hljs-attr">Accept-Encoding:</span> <span class="hljs-string">gzip,</span> <span class="hljs-string">deflate,</span> <span class="hljs-string">br,</span> <span class="hljs-string">zstd</span><br><span class="hljs-attr">Accept-Language:</span> <span class="hljs-string">zh-CN,zh;q=0.9</span><br><span class="hljs-attr">Content-Length:</span> <span class="hljs-number">0</span><br><span class="hljs-attr">Origin:</span> <span class="hljs-string">http://localhost:8080</span><br><span class="hljs-attr">Referer:</span> <span class="hljs-string">http://localhost:8080/adminPage/monitor</span><br><span class="hljs-attr">Sec-Fetch-Dest:</span> <span class="hljs-string">empty</span><br><span class="hljs-attr">Sec-Fetch-Mode:</span> <span class="hljs-string">cors</span><br><span class="hljs-attr">Sec-Fetch-Site:</span> <span class="hljs-string">same-origin</span><br><span class="hljs-attr">User-Agent:</span> <span class="hljs-string">Mozilla/5.0</span> <span class="hljs-string">(Windows</span> <span class="hljs-string">NT</span> <span class="hljs-number">10.0</span><span class="hljs-string">;</span> <span class="hljs-string">Win64;</span> <span class="hljs-string">x64)</span> <span class="hljs-string">AppleWebKit/537.36</span> <span class="hljs-string">(KHTML,</span> <span class="hljs-string">like</span> <span class="hljs-string">Gecko)</span> <span class="hljs-string">Chrome/123.0.0.0</span> <span class="hljs-string">Safari/537.36</span><br><span class="hljs-attr">X-Requested-With:</span> <span class="hljs-string">XMLHttpRequest</span><br><span class="hljs-attr">sec-ch-ua:</span> <span class="hljs-string">"Google Chrome"</span><span class="hljs-string">;v="123",</span> <span class="hljs-string">"Not:A-Brand"</span><span class="hljs-string">;v="8",</span> <span class="hljs-string">"Chromium"</span><span class="hljs-string">;v="123"</span><br><span class="hljs-attr">sec-ch-ua-mobile:</span> <span class="hljs-string">?0</span><br><span class="hljs-attr">sec-ch-ua-platform:</span> <span class="hljs-string">"Windows"</span><br><span class="hljs-attr">Content-Type:</span> <span class="hljs-string">multipart/form-data;</span> <span class="hljs-string">boundary=----WebKitFormBoundarye8FPHsIAq9JN8j2A</span><br> <br><span class="hljs-string">------WebKitFormBoundarye8FPHsIAq9JN8j2A</span><br><span class="hljs-attr">Content-Disposition:</span> <span class="hljs-string">form-data;</span> <span class="hljs-string">name="file";filename="../3.jsp"</span><br><span class="hljs-attr">Content-Type:</span> <span class="hljs-string">image/jpeg</span><br> <br><%<span class="language-ruby">out.print(<span class="hljs-string">"test"</span>);</span>%><br><span class="hljs-string">------WebKitFormBoundarye8FPHsIAq9JN8j2A--</span><br><br></code></pre></td></tr></table></figure> 451 452<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406160725-a19hq1m.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 453<p>â</p> 454<h5 id="RCE"><a href="#RCE" class="headerlink" title="RCE"></a>RCE</h5><p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161504-eys6pkt.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 455<p>ç´æ¥å»æ¾äºä¸æ§å¶å±ç代ç </p> 456<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161613-ujiovc5.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 457<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161722-27awoxu.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 458<p>emmmè¿ä»£ç å¯çå¼±æºï¼åå»è°ç¨æ§å¶å±ç代ç ããã</p> 459<p><img src="https://zjacky-blog.oss-cn-beijing.aliyuncs.com/image-20240406161933-tsbc5fw.png" srcset="/img/loading.gif" lazyload alt="image">â</p> 460<p>â</p> 461<p>ç±äºä¸äºéæºä»£ç ä¸éåæ¾ï¼å æ¤å°±æ¿ä¸ªå¼æºçndayæ¥è¿è¡åæå§ï¼å ¶å®åçæäºä¹ååªæ¯åéè¾ å©ç½¢äºï¼ä½æç弿ºä¸é½æ²¡æäººåè¿ï¼ä¹æ¯å°±é ä¸è½®å弿ºåºæ¥äº</p> 462<p>â</p> 463 464 465 </div> 466 467 <hr/> 468 <div> 469 <div class="post-metas my-3"> 470 471 472</div> 473 474 475 476 477 478 <div class="license-box my-3"> 479 <div class="license-title"> 480 <div>å¼å - CodeScan</div> 481 <div>https://zjackky.github.io/post/develop-codescan-zwcz53.html</div> 482 </div> 483 <div class="license-meta"> 484 485 <div class="license-meta-item"> 486 <div>ä½è </div> 487 <div>Zjacky</div> 488 </div> 489 490 491 <div class="license-meta-item license-meta-date"> 492 <div>åå¸äº</div> 493 <div>2024å¹´9æ28æ¥</div> 494 </div> 495 496 497 498 <div class="license-meta-item"> 499 <div>许å¯åè®®</div> 500 <div> 501 502 503 504 <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by/4.0/">
505 <span class="hint--top hint--rounded" aria-label="BY - ç½²å"> 506 <i class="iconfont icon-by"></i> 507 </span> 508 </a> 509 510 511 </div> 512 </div> 513 514 </div> 515 <div class="license-icon iconfont"></div> 516 </div> 517 518 519 520 521 <div class="post-prevnext my-3"> 522 <article class="post-prev col-6"> 523 524 525 </article> 526 <article class="post-next col-6"> 527 528 529 <a href="/post/java-security-yangcheng-web-title-readns-1mzaln.html" title="CTF - ç¾åWebé¢è§£(è¿åµ)"> 530 <span class="hidden-mobile">CTF - ç¾åWebé¢è§£(è¿åµ)</span> 531 <span class="visible-mobile">ä¸ä¸ç¯</span> 532 <i class="iconfont icon-arrowright"></i> 533 </a> 534 535 </article> 536 </div> 537 538 </div> 539 540 541 542 543 <article id="comments" lazyload> 544 545
545<script type="text/javascript"> 546 Fluid.utils.loadComments('#comments', function() { 547 var light = 'github-light'; 548 var dark = 'github-dark'; 549 var schema = document.documentElement.getAttribute('data-user-color-scheme'); 550 if (schema === 'dark') { 551 schema = dark; 552 } else { 553 schema = light; 554 } 555 window.UtterancesThemeLight = light; 556 window.UtterancesThemeDark = dark; 557 var s = document.createElement('script'); 558 s.setAttribute('src', 'https://utteranc.es/client.js'); 559 s.setAttribute('repo', 'Zjackky/Zjackky.github.io'); 560 s.setAttribute('issue-term', 'pathname'); 561 562 s.setAttribute('label', 'utterances'); 563 564 s.setAttribute('theme', schema); 565 s.setAttribute('crossorigin', 'anonymous'); 566 document.getElementById('comments').appendChild(s); 567 }) 568 </script>
568 569 <noscript>Please enable JavaScript to view the comments</noscript> 570 571 572 </article> 573 574 575 576 </article> 577 </div> 578 </div> 579 </div> 580 581 <div class="side-col d-none d-lg-block col-lg-2"> 582 583 584 </div> 585 </div> 586</div> 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 <a id="scroll-top-button" aria-label="TOP" href="#" role="button"> 620 <i class="iconfont icon-arrowup" aria-hidden="true"></i> 621 </a> 622 623 624 625 <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" 626 aria-hidden="true"> 627 <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"> 628 <div class="modal-content"> 629 <div class="modal-header text-center"> 630 <h4 class="modal-title w-100 font-weight-bold">æç´¢</h4> 631 <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"> 632 <span aria-hidden="true">×</span> 633 </button> 634 </div> 635 <div class="modal-body mx-3"> 636 <div class="md-form mb-5"> 637 <input type="text" id="local-search-input" class="form-control validate"> 638 <label data-error="x" data-success="v" for="local-search-input">å ³é®è¯</label> 639 </div> 640 <div class="list-group" id="local-search-result"></div> 641 </div> 642 </div> 643 </div> 644</div> 645 646 647 648 649 </main> 650 651 <footer> 652 <div class="footer-inner"> 653 654 <div class="footer-content"> 655 <a href="https://github.com/Zjackky/Zjackky.github.io" target="_blank" rel="nofollow noopener"><span>My Github</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> <div style="font-size: 0.85rem"> <span id="timeDate">è½½å ¥å¤©æ°...</span> <span id="times">è½½å ¥æ¶åç§...</span>
655<script src="/js/duration.js"></script>
655 </div> 656 </div> 657 658 659 <div class="statistics"> 660 661 662 663 664 665 <span id="busuanzi_container_site_pv" style="display: none"> 666 æ»è®¿é®é 667 <span id="busuanzi_value_site_pv"></span> 668 次 669 </span> 670 671 672 <span id="busuanzi_container_site_uv" style="display: none"> 673 æ»è®¿å®¢æ° 674 <span id="busuanzi_value_site_uv"></span> 675 人 676 </span> 677 678 679 680</div> 681 682 683 684 685</div> 686 687 </footer> 688 689 <!-- Scripts --> 690 691
691<script src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script>
691 692 <link rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" /> 693 694
694<script> 695 NProgress.configure({"showSpinner":false,"trickleSpeed":100}) 696 NProgress.start() 697 window.addEventListener('load', function() { 698 NProgress.done(); 699 }) 700 </script>
700 701 702
703<script src="https://lib.baomitu.com/jquery/3.6.4/jquery.min.js" ></script>
vendor: 1 bytes, line 703
703
704<script src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script>
vendor: 1 bytes, line 704
704
705<script src="/js/events.js" ></script>
vendor: 1 bytes, line 705
705
706<script src="/js/plugins.js" ></script>
706 707 708 709
709<script src="https://lib.baomitu.com/typed.js/2.0.12/typed.min.js" ></script>
709 710
710<script> 711 (function (window, document) { 712 var typing = Fluid.plugins.typing; 713 var subtitle = document.getElementById('subtitle'); 714 if (!subtitle || !typing) { 715 return; 716 } 717 var text = subtitle.getAttribute('data-typed-text'); 718 719 typing(text); 720 721 })(window, document); 722 </script>
722 723 724 725 726 727 728
728<script src="/js/img-lazyload.js" ></script>
728 729 730 731 732 733 734
735<script> 736 Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.20.1/tocbot.min.js', function() { 737 var toc = jQuery('#toc'); 738 if (toc.length === 0 || !window.tocbot) { return; } 739 var boardCtn = jQuery('#board-ctn'); 740 var boardTop = boardCtn.offset().top; 741 742 window.tocbot.init(Object.assign({ 743 tocSelector : '#toc-body', 744 contentSelector : '.markdown-body', 745 linkClass : 'tocbot-link', 746 activeLinkClass : 'tocbot-active-link', 747 listClass : 'tocbot-list', 748 isCollapsedClass: 'tocbot-is-collapsed', 749 collapsibleClass: 'tocbot-is-collapsible', 750 scrollSmooth : true, 751 includeTitleTags: true, 752 headingsOffset : -boardTop, 753 }, CONFIG.toc)); 754 if (toc.find('.toc-list-item').length > 0) { 755 toc.css('visibility', 'visible'); 756 } 757 758 Fluid.events.registerRefreshCallback(function() { 759 if ('tocbot' in window) { 760 tocbot.refresh(); 761 var toc = jQuery('#toc'); 762 if (toc.length === 0 || !tocbot) { 763 return; 764 } 765 if (toc.find('.toc-list-item').length > 0) { 766 toc.css('visibility', 'visible'); 767 } 768 } 769 }); 770 }); 771</script>
771 772 773 774
774<script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>
774 775 776
776<script>Fluid.plugins.codeWidget();</script>
776 777 778 779
780<script> 781 Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/4.3.1/anchor.min.js', function() { 782 window.anchors.options = { 783 placement: CONFIG.anchorjs.placement, 784 visible : CONFIG.anchorjs.visible 785 }; 786 if (CONFIG.anchorjs.icon) { 787 window.anchors.options.icon = CONFIG.anchorjs.icon; 788 } 789 var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(','); 790 var res = []; 791 for (var item of el) { 792 res.push('.markdown-body > ' + item.trim()); 793 } 794 if (CONFIG.anchorjs.placement === 'left') { 795 window.anchors.options.class = 'anchorjs-link-left'; 796 } 797 window.anchors.add(res.join(', ')); 798 799 Fluid.events.registerRefreshCallback(function() { 800 if ('anchors' in window) { 801 anchors.removeAll(); 802 var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(','); 803 var res = []; 804 for (var item of el) { 805 res.push('.markdown-body > ' + item.trim()); 806 } 807 if (CONFIG.anchorjs.placement === 'left') { 808 anchors.options.class = 'anchorjs-link-left'; 809 } 810 anchors.add(res.join(', ')); 811 } 812 }); 813 }); 814</script>
814 815 816 817
818<script> 819 Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() { 820 Fluid.plugins.fancyBox(); 821 }); 822</script>
822 823 824 825
825<script>Fluid.plugins.imageCaption();</script>
825 826 827
827<script src="/js/local-search.js" ></script>
827 828 829
829<script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>
829 830 831 832 833 834 835<!-- 主é¢çå¯å¨é¡¹ï¼å°å®ä¿æå¨æåºé¨ --> 836<!-- the boot of the theme, keep it at the bottom -->
837<script src="/js/boot.js" ></script>
837 838 839 840 841 842 <noscript> 843 <div class="noscript-warning">å客å¨å 许 JavaScript è¿è¡çç¯å¢ä¸æµè§æææ´ä½³</div> 844 </noscript> 845</body> 846</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.