WP-攻防世界misc_新手区

1 篇文章 0 订阅

WP-攻防世界misc_新手区

2、pdf

方法一:

用pdf打开时鼠标在图片上移动时,到有字的地方箭头就会变成I这种,说明有字, 直接ctrl+a全选,图片中间会有一条白色的,然后直接复制到txt中就是了

image-20210808183424714

方法二:

在线pdf转word,打开word,移开图片,下面就是flag

image-20210808183520765

flag{security_through_obscurity}

3、如来十三掌

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rsm4DTO4-1629108028065)(C:/Users/86155/AppData/Roaming/Typora/typora-user-images/image-20210808183617273.png)]

在线与佛论禅编码解码后,

image-20210808183753319

MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9

猜测base64,在线解码之后错误,结合题目如来十三掌,猜测rot-13编码,得到:

ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9

再次base64解码,得到flag

flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}

总结:rot13编码

rot13编码:特殊的凯撒加密,偏移13位。

特殊性:英文字符为26个,26=13+13,所以字母通过rot13编码两次后不变,

——即:ROT13函数是它自己的逆反,对任何字元x:ROT13(ROT13(x))=ROT26(x)=x

换句话说,两个连续的ROT13应用函式会回复原始文字(在数学上,这有时称之为对合(involution);在密码学上,这叫做对等加密(reciprocalcipher))。

4、give_you_flag

文件为一个gif文件,观看发现最后几帧有显示二维码。

Stegsolve.jar打开,找到出现二维码的那一帧。

image-20210809004753165

image-20210809004511235

二维码缺少定位符,可以用PS给他p上去。

我用的Excel粘上去的,注意放大一点,似乎易识别一点。

image-20210809004652082

总结:二维码

百度百科:二维码

编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。

所以,二维码中的黑白色正好映射二进制中的0和1,且二维码也有很多编码集。

在许多种类的二维条码中,常用的码制有:Data Matrix、MaxiCode、Aztec、[QR Code](https://baike.baidu.com/item/QR Code)、Vericode、PDF417、Ultracode、[Code 49](https://baike.baidu.com/item/Code 49)、[Code 16K](https://baike.baidu.com/item/Code 16K)等,

矩阵式二维码原理

图中三个角相同的黑白相交正方形为二维码的定位符,保证即使东倒西歪也能定位正确扫描识别

每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能及处理图形旋转变化等特点。

5、stegano

拿到一个flag,打开后没有什么,

image-20210809132209633

Ctrl+A全选后复制到记事本里,发现特别字符串

image-20210809132813074

BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB

猜测为摩斯电码的映射。(存在两种映射关系,这里猜测一种即可)

用python跑一下

s= "BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB"
str1 = s.replace('B','-' )
str2 = str1.replace('A', '.')
print(str2)

得到:

-.-. --- -. --. .-. .- - ..- .-.. .- - .. --- -. ... --..-- ..-. .-.. .- --. ---... .---- -. ...- .---- ..... .---- -... .-.. ...-- -- ...-- ..... ..... ....- --. ...--

在线解密一下,摩斯电码转化,得到:CONGRATULATIONS,FLAG:1NV151BL3M3554G3

提交flag时注意转换为小写:flag{1nv151bl3m3554g3}

总结:摩尔斯点码

百度百科:摩尔斯电码

表示方法:其实有两种“符号”是用来表示字元的:那就是划和点,或是长和短。而发报的速度是由点的长度来决定的,而且被当作是发报的时间参考。

摩斯电码是一种二进制编码集,利用二叉树进行构造。

img

似乎条形码二维码都可以看做摩斯电码的延伸,都是抽象成二进制进行编码。

6、坚持60s

拿到的是一个jar文件,因为熟悉一点安卓逆向,所以直接用jd-gui反编译出java源码,

找到对应的逻辑函数,flag就在其中。

image-20210809234206447

flag{RGFqaURhbGlfSmlud2FuQ2hpamk=}

直接提交发现不对,对应字符串结尾为‘=’,很显然是经过base64编码的,直接在线base64解码即可。

flag{DajiDali_JinwanChiji}

(后来看wp,返现原来jar文件可以直接运行,原来是一个小游戏,尝试玩一下,结果不超过20s就死了,靠!😅)

7、gif

压缩包,解压后是104张黑白图片,并且名字有序号。

image-20210810015313287

猜测黑白图片正好对应二进制的0和1。

直接得到其二进制编码

01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101

然后分别8位二进制转ascll即可得到flag。

也可以写python脚本跑出来

flag_b = ''
white = open(r"D:\\user\Desktop\\攻防世界\\misc\\7-gif\\gif\\0.jpg",'rb').read()
print(type(white))
black = open(r"D:\\user\Desktop\\攻防世界\\misc\\7-gif\\gif\\1.jpg",'rb').read()

for i in range(104):
    with open(r"D:\user\Desktop\攻防世界\misc\7-gif\gif\%d.jpg"%i , 'rb') as f:
        if f.read() == white:
            flag_b += '0'
        else:
            flag_b += '1'
print(flag_b)
flag = ''
for i in range(len(flag_b)//8):
    flag += chr( int(flag_b[i*8:(i+1)*8],2) )

print(flag)

image-20210810015842268

flag{FuN_giF}

8、掀桌子

题目给了一串字符串:c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2

仔细一看,发现只有字母ae和数字09,

猜测为16进制,因为1个16字节数代表4bit,所以两个16进制代表一个字节。

将上述字符串两两分割,得到:

c8 e9 ac a0 c6 f2 e5 f3 e8 c4 ef e7 a1 a0 d4 e8 e5 a0 e6 ec e1 e7 a0 e9 f3 ba a0 e8 ea fa e3 f9 e4 ea fa e2 ea e4 e3 ea eb fa eb e3 f5 e7 e9 f3 e4 e3 e8 ea f9 ea f3 e2 e4 e6 f2

发现每个字节都大于0x7f,而ascll码表示的范围为00x7f(0127)。

所以尝试把每个字节减去128,再转为ascll码。正好得到flag。

#python脚本
a = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
flag = ""
for i in range(0,len(a),2):
    temp = a[i:i+2]
    flag += chr(int(temp,16)-128)
    print(temp,end=' ')
print()
print(flag)

image-20210810142158195

flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}

9、ext3

题目描述:今天是菜狗的生日,他收到了一个linux系统光盘

提示是一个linux系统光盘。

上网查了下,百度百科:ext3。是linux的日志文件系统。

看了网上的wp跟着做。

linux中file f1fc23f5c743425d9e0073887c846d23查看文件类型。

Linux rev 1.0 ext3 filesystem data, UUID=cf6d7bff-c377-403f-84ae-956ce3c99aaa

从ext3文件系统的镜像中恢复文件。使用工具ext3grep

安装:apt-get install ext3grep

先从目标二进制文件中搜索flag相关的字符串,

strings f1fc23f5c743425d9e0073887c846d23 | grep -i flag

.flag.txt.swp
flag.txtt.swx
~root/Desktop/file/O7avZhikgKgbF/flag.txt
.flag.txt.swp
flag.txtt.swx
.flag.txt.swp
flag.txtt.swx

确定关键路径为O7avZhikgKgbF/flag.txt

所以使用ext3grep f1fc23f5c743425d9e0073887c846d23 --restore-all恢复所有目录。目录中很多文件夹,进入到O7avZhikgKgbF文件夹,cat flag.txt

ZmxhZ3tzYWpiY2lienNrampjbmJoc2J2Y2pianN6Y3N6Ymt6an0=

在线base64解码,得到flag:

flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}

也可以通过mount指令安全挂载文件系统。同样能恢复出目录,得到flag.exe。

10、SimpleRAR

拿到一个rar压缩包,常规打开,里面只有一个flag.txt,打开显示flag is not here

010editor打开查看rar的二进制数据

image-20210812235031441

这么多二进制数据,解压出来却只有一个一句话的txt,

本来不熟悉rar结构,后来百度查了下CSDN:RAR文件格式学习(了解)(rar4.0)

这道题的是4.0版本的rar,现在常用的是5.0(有细节上的差异)。

一般是rar压缩包中 文件块File Block的文件头File Header损坏,导致解压时无法识别。

这道题是第二个文件块中的Head_Type字段错误,导致的无法识别,也就是地址0x53的数据不应该是0x7A,而应该是0x74,代表这一块头区File Header

所以把地址0x53的数据0x7A改为0x74,即可正常识别解压。

image-20210813000113206

flag肯定与secret.png相关,解压之后打开,只有一张白底图片。

image-20210813000624385

010editor打开secret.png查看二进制数据,发现是一个gif文件,

image-20210813000538434

将其后缀名改为gif,打开后依然没有什么发现。

利用Stegsolve.jar分析gif文件,不断翻找之后只发现半截二维码!

image-20210813000902446

联想到题目提示双图层,所以应该是要分离图层。(利用PS:PhotoShop)

PS2021下载链接:http://www.91rjz.com/pcsoft/85216.html

ps打开后,可以看到的确是有双图层,

image-20210813001719115

分别单机右键导出图层。

然后再利用Stegsolve.jar打开,一帧一帧的看,即可看到两张半截的二维码,分别是上半部分和下半部分。

image-20210813001959194

虽然上半部分的定位符不完整,这个贴一下即可。

image-20210813002102598

扫描即可得到flag

flag{yanji4n_bu_we1shi}

总结:(1)用010editor时添加模板辅助分析文件结构

这道题可以利用rar的模板辅助分析rar结构

image-20210813002706510

这个功能尤其在分析windows的PE结构时,特别好用!!!

总结:(2)RAR文件结构的理解

入门了解:百度百科:RAR文件

当时看这篇文章,讲的很好,又正好是分析的这道题中的rar:RAR文件格式学习(了解)(这个是4.0版本)

因为有PE结构的基础,所以学习入门RAR结构这个也比较快,大概理解了4.0版本RAR的整体结构如下:

image-20210813010656991

5.0版本的rar结构在细节上有变化,整体框架上应该也差不多。

11、base64stego

拿到一个zip压缩包,正常解压,但是提示有密码。

第一想到的是,检查是否存在zip伪加密。

zip文件结构及zip伪加密:https://blog.csdn.net/weixin_41687289/article/details/82695801

image-20210814143840219

010editor打开zip压缩包查看二进制数据,选用zip模板辅助分析,

的确是zip伪加密,

image-20210814144122176

更改为00 00即可正常解压,得到stego.txt,打开后得到很多疑似base64编码:

image-20210814144440405

尝试在线解码无果。

image-20210814144527651

查了wp是base64隐写

base64隐写:https://www.tr0y.wang/2017/06/14/Base64steg/

所以写脚本提取隐写内容

#python
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open("D:\\user\Desktop\攻防世界\misc\\11-base64stego\stego.txt","rb") as f:
    txtlines = f.readlines()
    print(type(txtlines))
    flag = ''
    for line in txtlines:
        line = line.decode('utf-8')
        equalnum = line.count('=')
        if equalnum == 1:
            #print(line[-3:-2]) 
            x = ( b64chars.index(line[-3:-2]) ) & 0x3#base64隐写是查表前进行的隐写
            x = '{:02b}'.format(x)#十进制转二进制(2位)高位补零
            flag += x
        elif equalnum == 2:
            #print(line[-4:-3])
            x = ( b64chars.index(line[-4:-3]) ) & 0xf#base64隐写是查表前进行的隐写
            x = '{:04b}'.format(x)#十进制转二进制(4位)高位补零
            flag += x
    print(flag)
    for i in range(0,len(flag),8):
        print(chr(int(flag[i:i+8],2)) , end='')

image-20210814145055416

提交时要加上flag{}

flag{Base_sixty_four_point_five}

总结:(1)zip文件结构及其伪加密

这篇文章写的好,zip文件结构及zip伪加密

细节的话有这篇:zip文件结构

zip文件结构

我主要关注一下他的整体框架,通过测试发现,zip文件虽然整体是分为上图三个部分,但是:

**重点:**假设压缩包里有n个文件,文件数据区中就有n个文件数据结构,中央目录结构区里也有n个中央目录结构。

只有中央目录结尾节区只有一个固定的结构。

下图是压缩3个文件的zip压缩包,

image-20210814151351112

所以zip文件的遍历是从尾部开始,依次向上遍历获得每个压缩文件对应的文件数据结构的偏移和一些基本信息。

中央目录结构的结构体大小是固定的,但是包含结构体包含指针指向一些字符串(比如文件名),由于中央目录结构也包含了文件名等字符串信息,所以大小有些许偏差,不过可以通过遍历正常区分。

文章中的总结

image-20210814151958799

总结:(2)base64隐写

这篇文章:Tr0y’s Blog :神奇的 Base64 隐写,也是这道misc的wp。

image-20210814153018912

原理看这篇博客就能很好理解。

主要注意的是:base64隐写,是在base64编码的过程中进行的,也就是得到6位二进制分组后、而在进行查表前,这个阶段进行隐写,塞入数据。

也就是说,在提取base64隐写的时候,先要获取到最后一个字符在码表中的序号,从这个序号中提取base隐写内容。

下面是我写的对应这道题提取base64隐写的python脚本。

#python3.8
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open("D:\\user\Desktop\攻防世界\misc\\11-base64stego\stego.txt","rb") as f:
    txtlines = f.readlines()
    print(type(txtlines))
    flag = ''
    for line in txtlines:
        line = line.decode('utf-8')
        equalnum = line.count('=')
        if equalnum == 1:
            #print(line[-3:-2]) 
            x = ( b64chars.index(line[-3:-2]) ) & 0x3#base64隐写是查表前进行的隐写
            x = '{:02b}'.format(x)#十进制转二进制(2位)高位补零
            flag += x
        elif equalnum == 2:
            #print(line[-4:-3])
            x = ( b64chars.index(line[-4:-3]) ) & 0xf#base64隐写是查表前进行的隐写
            x = '{:04b}'.format(x)#十进制转二进制(4位)高位补零
            flag += x
    print(flag)
    for i in range(0,len(flag),8):
        print(chr(int(flag[i:i+8],2)) , end='')

12、功夫再高也怕菜刀

拿到一个pcapng文件,wirshark打开发现里面有很多报文,没有什么有用信息。

linux下利用foremost分离一下文件,

#linux安装
apt-get install foremost

对应的命令是

foremost 文件名

windows也可以,windows上使用foremost

在同文件夹下生成output文件夹,存放分离出来的文件

image-20210816164338893

分离得到一个zip文件,解压需要密码。

image-20210816164418164

即:得到关键信息flag.txt

还是用wirshark打开,查找flag.txt

image-20210816165159392

符合的报文段有好几个,基本是这样,并为查到什么有用信息,

image-20210816165350924

知道查到序号No.1150的报文段

image-20210816165551272

有一张可疑jpg图片,

右键点击序号No.1150的报文段,选择追踪流,再选择tcp流

image-20210816165812077

这是为了提取jpg文件的二进制数据。

由于jpg文件格式规定,以FF D8 FF开头,以FF D9结尾。

image-20210816170141975

所以复制这段数据,写入文件。

我这里是先复制上述数据,再用的是010editor打开我们新建的空白jpg文件,

image-20210816170423800

即可写入二进制数据。

保存后打开jpg文件,得到zip压缩包解压密码

image-20210816170520949

解压压缩包之后得到flag.txt

打开即是flag。

image-20210816170603300

flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}

总结:(1)在010editor中写入16进制数据

image-20210816170423800

总结:(2)CTF中图片隐藏文件分离方法总结

这篇文章感觉还可以:CTF中图片隐藏文件分离方法总结

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值