SECCON 2014 quals Online éãã¦ã¿ãã Writeup
SECCON 2014 quals Onlineã«åå ãã¾ãããä»åã¯ãã®ãã¼ã§ã解ããåé¡ãããããåºé¡ãããã¨ãããã¨ã§ãå°ãã¯è²¢ç®ã§ããããªï¼ã¨æãã¾ãããã人権æ¶æ» ãããã¦ã¾ãã
ãã¼ã ã¯wasamusumeã§ããä»åããã¼ã ã¡ã³ãã¼ã®çãããã¹ããã¨è§£æ±ºãã¦ãã¾ããããããã
amidaãä¸éå端ã ããä»ã®åé¡ã¯ã¡ã³ãã¼ãããå¼·ããã¦ã¿ã¤ãã³ã°ãªãã£ãã®ã§æ¬å½ã¯å¼å¸Writeupã«ãªãããã ã£ããã§ãããã¹ããã縫ã£ã¦Flagæåºãããã®ãããã®ã§æ¸ãã¦ãããã¨æãã¾ãã
Prog100
éãã¦ã¿ãã
ã¸ã£ã³ã«ï¼ããã°ã©ãã³ã°
ç¹æ°ï¼100
åé¡æï¼afterimage.gif
afterimage.gifãããããã®ã§ãéãã¨GIFã¢ãã¡ã®ããã
ã©ãè¦ã¦ãQRã³ã¼ããªã®ã§ãPythonã§ã¹ã¯ãªããæ¸ãã¾ããã
# -*- coding: utf-8 -*- from PIL import Image X = 164 Y = 164 canvas = Image.new("RGB", (X, Y), (255, 255, 255)) for i in range(1, 50): Â Â Â print("img/img_{0:02d}.png".format(i)) Â Â Â base = Image.open("./img/img_{0:02d}.png".format(i)) Â Â Â pixels = base.load() Â Â Â for x in range(X): Â Â Â Â Â Â for y in range(Y): Â Â Â Â Â Â Â Â Â if pixels[x, y] == 1: Â Â Â Â Â Â Â Â Â Â Â Â canvas.putpixel((x, y), (0,0,0)) canvas.save('ans.png', 'PNG')
GIFã¢ãã¡ãé©å½ãªãã¼ã«ï¼ä»åã¯Giamï¼ã§ã¤ãã£ã¨æ½åºãã¦ãimg/ãã£ã¬ã¯ããªã«ä¿åã
PILã©ã¤ãã©ãªã使ã£ã¦ä¸åä¸åéãã¤ã¤ãç½ãé¨åã ããã£ã³ãã¹ã«è»¢åãã¦ããã¾ããï¼ä¸ã®ã¹ã¯ãªããã¯ç½ãé¨åãé»ã«ãã¦è»¢åãã¦ãã¾ãï¼
ååã®è¨äºãä»ã®CTFã§äºç¿ãã¦ãã®ã§èª¿åº¦è¯ãã£ãã
åºåãããã§ããèªã¿åãã¨
FLAG{Many dot makes a QR code}
ãã§ã¾ããã
 ä»åã¯ããã¤ãã®åé¡ããæãä»ãã¦ããªãã®ã§ã復ç¿ãã¦ãããªãããªã¨æã£ã¦ã¾ãã
ã¨ãã«ãã¿ã ããã¯ãã¡ããã¡ãæããã®ã§ãªãã³ã¸ãã¦ããã¾ãï¼è§£ãããè¨äºã«ãããããªã
Â