cyberpunk
<p>[TOC]</p>
<h1>🌓分析</h1>
<p>题目给定了一个VxWorks虚拟机
先跑起来看一看
<img src="https://pic.imgdb.cn/item/638c3d7616f2c2beb158a82a.png" alt="Img" />
键入help看一下有没有帮助信息
<img src="https://pic.imgdb.cn/item/638c3da216f2c2beb158d4dc.png" alt="Img" />
发现有个特殊指令flag,键入试试
<img src="https://pic.imgdb.cn/item/638c3dc716f2c2beb158fb67.png" alt="Img" />
<img src="https://pic.imgdb.cn/item/638c3dfd16f2c2beb1592f90.png" alt="Img" />
找到关键信息,flag在系统image同级目录中,而且支持标准C语言,先看一下有哪些设备
<img src="https://pic.imgdb.cn/item/638c3e4516f2c2beb1597b26.png" alt="Img" />
ata0a应该就是系统image的目录,直接用chdir函数进入该目录
<img src="https://pic.imgdb.cn/item/638c3e8416f2c2beb159ca1f.png" alt="Img" />
找到了flag文件,用open,read来读取</p>
<pre><code class="language-c">> f = open("flag")
> buf = malloc(0x100)
> memset(buf, 0, 0x100)
> read(f, buf, 0x100)</code></pre>
<p><img src="https://pic.imgdb.cn/item/638c3f2416f2c2beb15adce2.png" alt="Img" />
这时候已经读取成功了,有83个字节,用xor函数进行处理,然后打印出来</p>
<pre><code class="language-c">> printf("%s\n", xor(buf, 83))</code></pre>
<p><img src="https://pic.imgdb.cn/item/638c3f7416f2c2beb15b2f65.png" alt="" />
发现是base64加密</p>
<pre><code>ZmxhZ3thZGFtX3NtYXNoZXJfa21sbGVkX2FfdGhvdXNhbmRfdG1tZXNfaXNfbm90X3Rvb19tdWNofQ==</code></pre>
<p>解密后得到</p>
<pre><code>flag{adam_smasher_kmlled_a_thousand_tmmes_is_not_too_much}</code></pre>
<p>输入中间的试试是否正确
<img src="https://pic.imgdb.cn/item/638c3fe916f2c2beb15bafc4.png" alt="Img" />
可能base64中间有部分出错了,但是VxWorks支持ctrl+D自动补全命令函数
<img src="https://pic.imgdb.cn/item/638c403216f2c2beb15bfb75.png" alt="Img" /></p>
<pre><code>adam_smasher_killed_a_thousand_times_is_not_too_much</code></pre>
<p><img src="https://pic.imgdb.cn/item/638c404c16f2c2beb15c16e2.png" alt="Img" />
销毁成功,flag就为</p>
<pre><code>flag{adam_smasher_killed_a_thousand_times_is_not_too_much}</code></pre>
<h1>🌓附件</h1>
<p><a href="https://cowtransfer.com/s/6af7f8e5c25b4d">https://cowtransfer.com/s/6af7f8e5c25b4d</a></p>