个人说明
备赛半月后,因大多都是Web方向,于是自己将主要目标放在Misc和CryPto上,因为较之逆向和二进制更容易上手。
题目链接
1和0的故事 - Bugku CTF
题目简介如上,打开后是25X25的01字符串,先讲解正确高效做法,再说自己的错误思路。
正确做法
-
字符串放到word里用替换(Ctrl+H)把换行符(^p)和空格消除 【目的:Python处理方便
-
Python调整行数(MAX值),运行代码,代码如下
from PIL import Image MAX = 25#txt里的行数 img = Image.new("RGB",(MAX,MAX)) str="0000000001110010000000000000000000001111010000000000000000011100010000000000000000010111100000000000000000001010101000000000000000000011000101000000000000000010101010100000000000000000100000110000000011000111011101101000110000001000010110010010010100010011110100001110111001100111101001010110010010011000001001100001001101000111100011111101110010100010110111110011011111101111000110110010010101101100100011110011111111111011100000000101100011000101000000000010010100101010001000000001010101010001100100000000001001111111100100000000000011001011110111000000000100110010010000100000000110000110110110010000000011010000101110101" #上面为01字符串 i = 0 for y in range (0,MAX): for x in range (0,MAX): if(str[i] == '1'): img.putpixel([x,y],(0, 0, 0)) else: img.putpixel([x,y],(255,255,255)) i = i+1 img.show() img.save("flag.png")
-
生成图片为残缺二维码,缺失定位符,上网查找截图,拼图(推荐使用PPT)最好定位符不遮盖内部二维码信息,避免扫码失败 ,就是放的靠外点
-
扫码获得flag,二维码图如下
自己思路
哈哈,自己想的是错的:txt文件中每行01字符串末尾都有一个空格,于是以为26X25,想着也不是2n,于是瞎想以为化成hex或者什么编码。
知道是二维码后尝试直接在txt或word修改成空白和全黑框,失败,字符间距和行间距也不好调
尝试excel,粘贴进去有bug,而且还需要字符分割,不然每行都在第一列单元格,懒弃,选择Python,成功
参考博客
代码就是摘自这个博客:(150条消息) python下二进制流文件转二维码_百里小羊的博客-CSDN博客
(150条消息) 【CTF-MISC】图片隐写中补全二维码定位角的注意事项【详细步骤】_ATFWUS的博客-CSDN博客_二维码补全
条形码、二维码原理等科普:(150条消息) 二维码检测定位_studyeboy的博客-CSDN博客_二维码定位
利用excel,但自己没成功复现:1和0的故事 | 欢迎来到蛋炒饭的博客 (yyyyt.fun)