第九题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. MySQL进阶篇(03):合理的使用索引结构和查询

    本文源码:GitHub·点这里 || GitEE·点这里 一.高性能索引 1.查询性能问题 在MySQL使用的过程中,所谓的性能问题,在大部分的场景下都是指查询的性能,导致查询缓慢的根本原因是数据量的 ...

  2. CentOS7系统管理与运维实战

    CentOS7系统管理与运维实战 下载地址 https://pan.baidu.com/s/1KFHVI-XjGaLMrh39WuhyCw 扫码下面二维码关注公众号回复100007 获取分享码 本书目 ...

  3. 嵌入式linux下获取flash分区大小

    在嵌入式系统中,由于flash存储空间有限,或者是存储数据,实现数据的循环删除,需要获取到分区的使用情况,可以通过系统下的函数statfs来获取使用情况:实现代码如下: flashInfo.cpp # ...

  4. android基本操作

    1.页面跳转 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androi ...

  5. “随手记”开发记录day17

    继续开发账单的图形展示这一部分,丰富“随手记”的显示方法,对我们的APP进行添砖加瓦.

  6. Linxu系统安装PHP详细教程

    安装centos源 yum install epel-release –y 下载php安装压缩包 wget https://www.php.net/distributions/php-7.3.15.t ...

  7. Vue watch 深层监听

    Vue中监听某个对象的属性 为了避免监听整个对象导致效率问题,可以监听某个对象的特定属性 watch: { 'deptModel.depts': { handler(newVal, oldVal) { ...

  8. JS实例-全选练习

    <!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8" ...

  9. DRF内置过滤组件与排序组件结合使用

    DRF内置过滤组件Filtering DRF提供了内置过滤组件Filtering,可以结合url路径的改变获取想要的数据,当然用户不可能在url访问路径中自己设置过滤条件,肯定是后端开发人员将前端页面 ...

  10. Node.js简易服务器,配合type="module" 实现html文件script标签 ES module引入模块

    相信大家在测试type="module" 在html文件中直接模块化引入 js时,会出现一个跨域问题. 当我们将<script ></scirpt> 标签t ...