24年蓝桥杯及攻防天下赛题-MISC-1

海哥  论坛元老 | 2024-9-22 17:50:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1585|帖子 1585|积分 4755

2 What-is-this


AZADI TOWER
3 Avatar

题目

一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?隐藏内容即flag
解题

  1. ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess]
  2. └─$ outguess -r 035bfaa85410429495786d8ea6ecd296.jpg  flag1.txt
  3. Reading 035bfaa85410429495786d8ea6ecd296.jpg....
  4. Extracting usable bits:   28734 bits
  5. Steg retrieve: seed: 94, len: 41
  6.                                                                              
  7. ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess]
  8. └─$ cat flag1.txt
  9. We should blow up the bridge at midnight
  10.                                                                              
  11. ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess]
  12. └─$
复制代码
flag

We should blow up the bridge at midnight
4 base64stego

压缩包是否为伪加密的判断
1、无加密:
(1)压缩源文件数据区的全局加密标志应当为00 00
(2)且压缩源文件目次区的全局方式位标志应当为00 00
2、伪加密:
(1)压缩源文件数据区的全局加密标志应当为00 00
(2)且压缩源文件目次区的全局方式位标志应当为09 00
3、真加密
(1)压缩源文件数据区的全局加密标志应当为09 00
(2)且压缩源文件目次区的全局方式位标志应当为09 00

  1. 50 4B 03 04:文件头标记(0x04034B50)
  2. 14 03:解压文件所需 pkware 版本
  3. 00 00:全局方式位标记(判断真伪加密的重要标志)
  4. 08 00:压缩方式
  5. 68 BF:最后修改文件时间
  6. 9B 48:最后修改文件日期
  7. FE 32 7D 4B:CRC-32校验
  8. E9 0D 00 00:压缩后尺寸
  9. B5 1B 00 00:未压缩尺寸
  10. 09 00:文件名长度
  11. 00 00:扩展记录长度
复制代码

  1. 50 4B 01 02:目录中文件文件头标记(0x02014B50)
  2. 3F 03:压缩使用的 pkware 版本
  3. 14 03:解压文件所需 pkware 版本
  4. 09 00:全局方式位标记(数据区的加密标志为00 00,所以判断这是伪加密,将09 00 改为00 00即可)
  5. 08 00:压缩方式
  6. 68 BF:最后修改文件时间
  7. 9B 48:最后修改文件日期
  8. FE 32 7D 4B:CRC-32校验(1480B516)
  9. E9 0D 00 00:压缩后尺寸(25)
  10. B5 1B 00 00:未压缩尺寸(23)
  11. 09 00:文件名长度
  12. 24 00:扩展字段长度
  13. 00 00:文件注释长度
  14. 00 00:磁盘开始号
  15. 00 00:内部文件属性
  16. 20 80 ED 81:外部文件属性
  17. 00 00 00 00:局部头部偏移量
复制代码

将该压缩包的压缩源文件的全局方式位标志由09 00 改为00 00即可解压该文件,
通过解压文件我们可以得到一个文本文档。打开后可以看到是一些base64字符,我们写个脚本跑一下
  1. import base64
  2. bin_str=''
  3. b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  4. with open('stego.txt','r') as f:  # 这里要改成你的文件路径
  5. for line in f.readlines():
  6.   s64="".join(line.split())
  7.   r64="".join(str(base64.b64encode(base64.b64decode(s64)),'utf-8').split())
  8.   offset=abs(b64chars.index(s64.replace('=','')[-1])-b64chars.index(r64.replace('=', '')[-1]))
  9.   equal=line.count('=')
  10.   if equal:
  11.    bin_str += bin(offset)[2:].zfill(equal * 2)
  12. print(''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0,len(bin_str),8)]))
复制代码
Base_sixty_four_point_five
5 Guess-the-Number

下载附件后是一个jar文件,解压一下得到一个class文件,用 jd-gui反汇编得到guess.class文件源码。

  1. import java.math.BigInteger;
  2. public class guess
  3. {
  4.    
  5.   static String XOR(String _str_on
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表