首页 > 其他分享 >ctfshow刷题笔记-misc入门

ctfshow刷题笔记-misc入门

时间:2023-05-29 09:02:33浏览次数:58  
标签:脚本 十六进制 hex misc flag ctfshow crcbp 刷题 图片

ctfshow-misc入门

图片篇(文件结构)

misc24

1.在010Editor中打开文件,根据鼠标自动提示找到图片宽高对应的地方

biWidth

指定图象的宽度,单位是象素。

biHeight

指定图象的高度,单位是象素。

2.修改图片高度为250px并另存

3.打开后得到flag

misc25

1.从网上找到的脚本(将脚本和图片放在同一个文件夹中更加方便)

https://blog.csdn.net/m0_58030673/article/details/128794368
`import binascii
import struct

crcbp = open("misc25.png", "rb").read() #打开图片
crc32frombp = int(crcbp[29:33].hex(),16) #读取图片中的CRC校验值
print(crc32frombp)

for i in range(4000): #宽度1-4000进行枚举
for j in range(4000): #高度1-4000进行枚举
data = crcbp[12:16] +
struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
# print(crc32)
if(crc32 == crc32frombp): #计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
print(i, j)
print('hex:', hex(i), hex(j))
exit(0)`

2.得到下列结果,结果与宽高对应,根据结果修改

3.修改完后另存文件

4.打开文件后得到flag

misc26

1.步骤与25类似,只是最后结果中要求找到图片真实的高,hex代表十六进制,求出来为25e

misc27

在010editor中查找高宽度可以先看图片属性的高和宽,在转换成十六进制,在010中搜索找到,一般尽量往大了改

将这个宽0096改成00FF


misc28

1.这个题出现了十六进制x86低位在前高位在后,所有查找的时候我查的9600

2.找到flag

misc29

1.多处改高度,可以选择全部替换

2.打开后是动图,flag藏在里面,用StegSolve逐帧查看图片


misc30

题目提示图片宽度为950,转成十六进制是3B6
在010中改下就可以看到flag了
![](/i/l/?n=23&i=blog/3197645/202305/3197645-20230528200858279-63363641.jpg

misc31

题目提示图片宽度不对,84 03改成39 04就可以看见倾斜的flag了

misc32

1.脚本得到宽高

2.修改宽得到flag

misc33

同上用脚本得宽高改宽高

misc34

根据题目提示,crc改了,不能通过脚本爆破,所以通过慢慢改宽趋近于正确值0463得到结果

misc35

高0296宽03E4

misc36

根据题目提升宽在398-3B6间,同上更改高宽度

37

stegslove中翻看




misc38

Honeyview工具查看



misc39

在kali中安装identify

sudo apt-get install imagemagick
输入命令
identify -format "%T " misc39.gif > 1.txt
提取出

将37换成1,36换成0,使用脚本得出flag

misc40

先安装工具apngdisassembler
分解APNG图片,分解APNG动画图片中每一帧,并且把帧导出保存为图片文件。
处理后,每一帧图片还带有一个 txt 文件
链接:https://sourceforge.net/projects/apngdis/files/latest/download
用网上的脚本处理得到flag

misc42

chr(x):用一个数值作参数,返回一个对应的unicode字符,该参数的有效范围是从0到1114111(16进制时为0x10FFFF),参数可以是十进制,也可以是十六进制。
查看网上大佬们的wp,并借用其脚本将IDAT的length值进行char转化(难道提示中说的长度=2cm是length中第二板块IDAT的值转化而成?(个人乱猜的想法))

misc43

先在kali中安装PCRT在执行命令

提取出错误crc---chunk crc

在converter中转换

misc50

用Stegslove查看文件


标签:脚本,十六进制,hex,misc,flag,ctfshow,crcbp,刷题,图片
From: https://www.cnblogs.com/zxqt/p/17437684.html

相关文章

  • 算法刷题记录:乒乓球
    题目链接https://ac.nowcoder.com/acm/contest/19306/1033题目分析这题好坑,乒乓球的比分如果相差<2,还得继续比下去,但是题目里面没有说qwq。看了眼题解才发现这个点。AC代码#include<iostream>usingnamespacestd;//统计11分制和21分制的比分strings;intmain(......
  • 算法刷题记录:回行矩阵(未AC,TLE了)
    题目链接:https://ac.nowcoder.com/acm/contest/19306/1026题目分析这种题,画个图,模拟就对啦。TLE代码#include<iostream>usingnamespacestd;intn,cnt;intw[25][25];intmain(){cin>>n;//构建框架intdx=1,dy=1;while(1)......
  • CTFSHOW
    RCE挑战1<?phperror_reporting(0);highlight_file(__FILE__);$code=$_POST['code'];$code=str_replace("(","括号",$code);$code=str_replace(".","点",$code);eval($code);?>把"."和&quo......
  • MySQL刷题记录
    1. select*fromemployeesorderbyhire_datedesclimit1; 笔记: limit 0,1;使用limit关键字从第0条记录向后读取一个,也就是第一条记录  2.select*fromtestLIMIT 3OFFSET 1;(在mysql 5以后支持这种写法)当limit和offset组合使用的时候,limit后面只......
  • 343. Integer Break刷题笔记
    题目描述难点主要是考虑整数拆成两个数之后不继续拆分的情况classSolution:defintegerBreak(self,n:int)->int:dp=[0]*(n+1)dp[2]=1foriinrange(3,n+1):forjinrange(1,i-1):dp[i]=max(dp[i],max......
  • 63. Unique Paths II刷题笔记
    问题描述主要是稀奇古怪的边界条件,例如左上角是1,最左边和最上边是1,有多个1,输入为行,或者列classSolution:defuniquePathsWithObstacles(self,obstacleGrid:List[List[int]])->int:m=len(obstacleGrid)n=len(obstacleGrid[0])dp=[0]*m......
  • 62. Unique Paths刷题笔记
    问题描述用动态规划做的,注意最左边和最上边的情况设置从0到n-1的列表可以用list(range(n))classSolution:defuniquePaths(self,m:int,n:int)->int:dp=[1]*mforiinrange(1,n):forjinrange(1,m):dp[j]+=dp[j......
  • 74. Search a 2D Matrix刷题笔记
    题目描述用了两个二分查找法。当然也可以把matrix转为数组来索引classSolution:defsearchMatrix(self,matrix:List[List[int]],target:int)->bool:low=0high=len(matrix)-1mid=0whilelow<=high:mid=(high......
  • 746. Min Cost Climbing Stairs刷题笔记
    题目描述出bug的时候输出打印dp就行classSolution:defminCostClimbingStairs(self,cost:List[int])->int:n=len(cost)+1ifn<=3:returnmin(cost[0],cost[1])dp=[0]*ncost.append(0)foriinrange(2......
  • 70. Climbing Stairs刷题笔记
    问题描述该题考察的是动态规划classSolution:defclimbStairs(self,n:int)->int:dp=[0]*nifn==1:return1dp[0]=1dp[1]=2foriinrange(2,n):dp[i]=dp[i-1]+dp[i-2]ret......