چند روز پیش مسابقه TJCTF 2016برگزار شد.
مسابقه دبیرستانی بود و سوالاش از سطح پایین شروع میشد که برای ما تازهکارا مناسب بود. :)
راهحل چندتاشونو که حل کردم تو وبلاگ قرار میدم.
Basic Images - Forensics - 65 pt
Description :
Check out my shades! If you want the flag, I guess you should be basic like me. Good luck!
تصویر زیر داده شده بود و پرچم رو میخواستن :

کدهای RGB هر پیکسل عکس یکسانه :

در ادامه من با پایتون کدی نوشتم که مقدار RGB هر پیکسل رو بخونه و به کاراکتر تبدیلش کنه (Ascii Table) :from PIL import Image
قسمتی از خروجی برنامه :

به نظر میرسه Base64 باشه، با دیکد کردنش به یه تصویر png دیگه میرسیم :

f = Image.open('Shades.png')
(h,w) = f.size
new = []
for y in range(w):
for x in range(h):
rgb = f.convert('RGB')
r , g , b = rgb.getpixel((x,y))
new.append(chr(r))
g = open('Shades-out.txt', 'w')
g.write("\n".join(map(lambda x: str(x), new)))
g.close()
قسمتی از خروجی برنامه :

به نظر میرسه Base64 باشه، با دیکد کردنش به یه تصویر png دیگه میرسیم :

مثل تصویر اول عملیات قبل رو روش انجام میدیم و به همین ترتیب به تصاویر دیگهای میرسیم که در ادامه میبینیم :












این تصویر آخری رو که به برنامه بدیم، خروجیش میشه :
IHRqY3Rme2FzYzExX2MwbDByX2luYzNwdDFvbn0K
که با دیکد کردنش داریم :tjctf{asc11_c0l0r_inc3pt1on}
که همون پرچم مورد نظرمون هست.