第九题SimpleRAR:

下载附件后得到一个压缩包打开后得到如下提示

文件头损坏,让我们打开winhex看一下

7a为子块而文件头为74,这里将7a改为74(这里我也不是很清楚,详细大家可以自行去查一下rar文件格式分析,等我搞明白会再给补上的)

改完后我们就能打开了

观察一下我们刚得到的图片,并没有发现什么奇怪的地方,也扔进winhex里看一下

看到此图片应为gif,改完后缀,后看题目有写着双图层,打开ps一看确实是有两个图层,这里用ps将两个图层分离(这里遇到很多问题,这道题有很多方法,可以用ps以及Stegsolve里的frame browser分离图层,但我前面两种方法都失败了,最后我用gif分离软件分离了图层,以后搞明白以后会进行补充)

分离出来两张空白图片

我们用Stegsolve将两个图片降低色域(软件下面的小箭头),得到以下来两张图片

再继续用Stegsolve将两张图片拼接(image combiner)

最后再用ps给二维码p上定位点扫描得到flag

第十题base64stego:

下载附件 得到一个压缩包,打开

得到一个stego.txt文件,打开得到如下界面

得到这么长一段base64的字符串,明显并不可能是直接的base64解码,那么应该就是base64隐写了

关于base64隐写:

先复习一下base64加密

众所周知一段字符串进行base64加密时,我们需要将每个字符串化为八位二进制数,并将所得的二进制字符串六位六位地分解,组合成新的字符串。

而六位六位分解后,不太可能每次都可以被正好分解,这时候就需要我们来加0来补位(这也就是我们base64加密后看到的=),补成既能被8整除(计算机中最小单位为字节,也就是8位二进制数,不能出现不为8位的情况)也能被6整除的个数(也就是加上8*n个0,结果是n为1,2)。

而(i为字节数)i*8%6有三种情况。余0的时候就是不用补位的情况,余2的时候我们需要补上16位0,前4位的0和刚刚剩下的两位正好组成一个六位,剩下两个六位正好组成两个等号,而余4的时候,只需加上8位0就可以了。只是说可能并不理解,这里举几个例子。

好说完base64加密的原理,我们来说一下

base64隐写的原理

我们来看看上面的第二个例子

第二个例子

没有标注的部分我们在解码(解码相当于加密的逆过程)的时候会将其丢掉,这样的话我们将0000,改成其他的数并不影响原先的密文,影响的只是加密后这个相应的字母会变化,但不会影响原先的密文。而如果改掉黄色标记部分的数字,如果改掉前面的数字就会改变密文,改掉后面的我们就会改变=的数量,从而影响解码,因此这里我们就可以改变未标注部分来隐藏一些信息,这样的话像第一个例子那种类型便不能隐写了。由于能隐藏的二进制数位最多为4位,所以我们需要许多句base64加密的密文来隐藏真正的信息,正如我们开始的时候看到的stego.txt一样,明白了这样的原理,我们可以用python写一个脚本来进行解密

# -*- coding: cp936 -*-
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt', 'rb') as f:
bin_str = ''
for line in f.readlines():
stegb64 = str(line, "utf-8").strip("\n")
rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
offset = abs(b64chars.index(stegb64.replace('=','')[-1])-b64chars.index(rowb64.replace('=','')[-1]))
equalnum = stegb64.count('=')
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
print (''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]))

解密得到flag

未完待续……

ps:本人新手一枚,写的题解呢也是以新人的口吻写的所以有许多地方不够专业,也可能还有许多错误,也请各位大佬多多包容,也欢迎各位大佬的指导。

攻防世界——Misc新手练习区解题总结<3>(9-10题)的更多相关文章

  1. 攻防世界——Misc新手练习区解题总结<2>(5-8题)

    第五题gif: 下载附件后,解压得到这样一个文件 几经寻找无果后,发现是不是可以将gif中的黑白图片看做二进制的数字,进而进行解密 最后用二进制转文本得到flag 第六题掀桌子: 看起来是16进制的密 ...

  2. 攻防世界——Misc新手练习区解题总结<1>(1-4题)

    第一题this_if_flag: 第一题就不多说了,题目上就给出了flag复制粘贴就可以了 第二题pdf: 下载附件后,得到如下界面 Ctrl+a全选文字,复制出来看看是什么,粘贴后恰好得到flag ...

  3. 攻防世界——web新手练习区解题记录<1>(1-4题)

    web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...

  4. 攻防世界——web新手练习区解题总结<3>(9-12题)

    第九题simple_php: 看题目说是php代码,那必定要用到php的知识,让我们先获取在线场景,得到如下网页 仔细看这个代码,意思大概是: 1.当a==0且a为真时输出flag1 2.当b为数字退 ...

  5. 攻防世界——web新手练习区解题总结<2>(5-8题)

    第五题cookie: 所需工具:burpsuite(需自行下载) 老规矩看完题,先获取在线场景,得到如下网页 那么什么是cookie呢?大体上就是网站为了识别用户身份而储存在用户本地终端上的数据,类型 ...

  6. 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup

    攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...

  7. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  8. 攻防世界 Misc 新手练习区 gif Writeup

    攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...

  9. 攻防世界 Misc 新手练习区 坚持60s Writeup

    攻防世界 Misc 新手练习区 坚持60s Writeup 题目介绍 题目考点 java反编译 jd-gui 的使用 Writeup 下载附件并打开 kali执行命令 java -jar 9dc125 ...

随机推荐

  1. Linux 下使用 killall 命令终止进程的 8 大用法

    Linux 的命令行提供很多命令来杀死进程.比如,你可以向 kill 命传递一个PID来杀死进程:pkill 命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死. 但是还有一个命令叫 ki ...

  2. heap相关算法的简单实现

    // 12:06 PM/09/28/2017 #pragma once //向下调整算法 主要用来make_heap 以及pop_heap inline void adjustDown(int* he ...

  3. 030_go语言中的通道关闭

    代码演示 package main import "fmt" func main() { jobs := make(chan int, 5) done := make(chan b ...

  4. Vue 父子组件之间的互相调用方法

    第一种方法 直接在子组件中通过this.$parent.event来调用父组件的方法 父组件 <template> <div> <child></child& ...

  5. JS 动画笔记

    动画实现原理     核心原理:通过定时器setInterval()不断地移动盒子的位置 缓动动画原理     缓动的核心算法~~~~~~~~~~(目标值-现在的位置)/10     停止的条件是~~ ...

  6. JS 鼠标、键盘事件对象

    鼠标事件对象     mouseEvent鼠标事件对象     e.clientX 在可视区的x和y的坐标     e.pageX 在页面文档的X和Y的坐标 <script> docume ...

  7. 微信公众号里面怎么添加xls

    微信公众号里面添加xls的教程 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号 ...

  8. Docker-Compose介绍,安装和使用

    Docker-Compose 介绍 有时候运行一个镜像需要大量的参数,可以通过Docker-Compose编写这些参数.而且Docker-Compose可以版主我们批量管理容器,这些信息值需要通过一个 ...

  9. RabbitMQ 基础概念进阶

    上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和其它的进阶的概念. 一.消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消 ...

  10. JavaScript 实用方法

    1.按时间显示问候语 2.强制光标停留位置 3.保存页面文本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN& ...