2017湖湘杯Writeup
RE部分
0x01 Re4newer
解題思路:
Step1:die打開,發現有upx殼。
Step2:脫殼,執行upx -d 文件名即可。
Step3:IDA打開,shift+F12看字符串。
點進去,F5看偽代碼如圖。
Step4:逆算法。點進sub_401080可以看到關鍵函數的算法。
是簡單的取字節異或,比較對象是v4-v14的值。
可以看到,這裏可以分成44個兩位16進制的數,並且順序與箭頭所指的數的大小有關。
Step4:得到flag。
pyhon腳本如下:
a = [0x45,0x43,0x4E,0x44,
0x13,0x4A,0x76,0x59,
0x71,0x4B,0x7D,0x51,
0x54,0x7D,0x63,0x7D,
0x7D,0x5B,0x50,0x11,
0x52,0x4F,0x4B,0x51,
0x70,0x7D,0x47,0x4E,
0x67,0x67,0x70,0x70,
0x7D,0x57,0x7D,0x67,
0x71,0x51,0x63,0x52,
0x5F,0x56,0x13,0x7D]
flag = ‘‘
for i in range(11):
for j in [3,2,1,0]:
flag += chr( a[i*4+j]^0x22)
print(flag)
0x02 簡單的android
解題思路:
Step1:直接apk_tool打開,點jadx,得到flag。
MISC部分
0x03 流量分析
解題思路:
Step1:直接打開,文件->導出對象->HTTP,可以看到flag.zip,保存下來。
Step2:flag.zip裏面有很多數字,目測是RGB,於是寫腳本形成圖片。
Step3:從上圖可以猜想圖片是寬為887,長為111。
腳本如下:得到flag。
#-*- coding:utf-8 -*-
from PIL import Image
import re
x = 887 #x坐標 通過對txt裏的行數進行整數分解
y = 111 #y坐標 x*y = 行數
im = Image.new("RGB",(x,y))#創建圖片
file = open(‘ce.txt‘) #打開rbg值文件
#通過一個個rgb點生成圖片
for i in range(0,x):
for j in range(0,y):
line = file.readline()#獲取一行
rgb = line.split(",")#分離rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb轉化為像素
im.show()
0x04 MISC200
解題思路:
壓縮包裏一個apk和一個疑似被加密的flag,先把apk拖到apktools裏看下源碼,
可以看到一個EncryptImageActivity,貌似有點用
可以看到很useful的函數
繼續往下看
這就是對文件進行加密的具體函數了,可以看到,使用key對文件逐位異或得到cipherText,聯系上面的關鍵函數,可以得知,這個程序的工作流程:
1選擇一個文件
2輸入密碼
3使用密碼的md5值對原始文件進行逐位異或
4將加密後的cipherText寫入新文件並輸出
由於異或的特性,使用password的md5值對已經加密的文件再次加密能夠得到原來的文件,所以我們的任務就是逆向找到password了!!
上一句劃掉
那麽麻煩幹嘛,扔到手機裏運行一下(才不說我專心逆向找password,怕手機被加密另開了手機分身運行應用呢),發現密碼已經是“記住”狀態了,把flag.encrypted扔進去點擊encrypt就會提示成功的創建了文件,只要提出來在Linux裏直接能顯示出圖片了。
Flag:
出題人你出來,自己選磚頭!神?字跡辨認
0x05 Misc300
解題思路:
Step1:文件是pxl後綴,於是上網搜了一下。
>>> import pickle
>>> f = open(‘pixels.jpg.pkl‘)
>>> print(pickle.load(f))
用這個腳本打開文件,發現是一堆坐標,聯想到是黑白圖片的坐標,出現的位置為1,否則為0。
Step2:將這堆數據處理成如圖形式,執行第二張圖片所示的代碼,可以得到一張圖片。
將所得圖片倒置反色得到如圖
可知是一個卡通人物,是熟悉的Bill Watterson創造的,於是得到flag{小寫名字}。
WEB部分
0x06 Web200
解題思路:
Step1:看到題目是文件上傳,於是構造payload試試。
Step2:
http://118.190.87.135:10080/?op=php://filter/read=convert.base64-encode/resource=flag
得到flag的base64編碼,解碼得到flag。
總結
1.這次的Re主要就試了一下脫殼,最後那道400分的pyc懟不出來....
2.Misc部分第一次做流量包分析的題目,也算學習了一波,這次有兩道題都是要用腳本或庫形成圖片的;
0x03是需要將所給的RGB值轉換成圖片,0x05是需要將坐標轉換為黑白圖片中RGB為0或1;這裏附上M4x大佬的博客http://www.cnblogs.com/WangAoBo/p/6950547.html
3.Web部分太菜了就搞了一道,文件上傳之前也看到過類似的題,在鈿神的提示下拿flag.php的內容就A了。
Tips:
Re和Misc題目
鏈接:http://pan.baidu.com/s/1eSH9seY 密碼:wc0x
Upx脫殼和Apktool工具
鏈接:http://pan.baidu.com/s/1eRA72Ie 密碼:abch
作者: LB919
出處:http://www.cnblogs.com/L1B0/
該文章為LB919投入了時間和精力的原創;
如有轉載,榮幸之至!請隨手標明出處;
2017湖湘杯Writeup