日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

REVERSE-PRACTICE-CTFSHOW-3

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 REVERSE-PRACTICE-CTFSHOW-3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

REVERSE-PRACTICE-CTFSHOW-3

    • 簽退
    • 神光
    • 簽到
    • baby_gay

簽退

.pyc文件,uncompyle6反編譯,得到python源碼,分析寫在源碼注釋中
先變表base64,再凱撒加密,向后移動2位

import string c_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '()' flag = 'BozjB3vlZ3ThBn9bZ2jhOH93ZaH9' #encode為變表base64 table為c_charset def encode(origin_bytes):c_bytes = [ ('{:0>8}').format(str(bin(b)).replace('0b', '')) for b in origin_bytes ]resp = ''nums = len(c_bytes) // 3remain = len(c_bytes) % 3integral_part = c_bytes[0:3 * nums]while integral_part:tmp_unit = ('').join(integral_part[0:3])tmp_unit = [ int(tmp_unit[x:x + 6], 2) for x in [0, 6, 12, 18] ]resp += ('').join([ c_charset[i] for i in tmp_unit ])integral_part = integral_part[3:]if remain:remain_part = ('').join(c_bytes[3 * nums:]) + (3 - remain) * '0' * 8tmp_unit = [ int(remain_part[x:x + 6], 2) for x in [0, 6, 12, 18] ][:remain + 1]resp += ('').join([ c_charset[i] for i in tmp_unit ]) + (3 - remain) * '.'return rend(resp)#rend為凱撒加密,字母向后移動2位,數字不變 def rend(s):def encodeCh(ch):f = lambda x: chr((ord(ch) - x + 2) % 26 + x)if ch.islower():return f(97)if ch.isupper():return f(65)return chreturn ('').join(encodeCh(c) for c in s)

用工具CTFCrackToolsKt-3.2.4.jar得到凱撒加密前的字符串

再用工具加密解密小玩具解base64,即可得到flag

神光

exe程序,運行后輸入key,ida分析
main函數,獲取輸入后check

跟進check,簡單的將輸入和明文字符串"wangzherongyao"比較

運行exe,輸入"wangzherongyao",打印出一段不明意義的中文字符

繼續向下走,在彈窗MessageBoxA后,sub_4113CF->sub_415770
input已知是"wangzherongyao",兩段運算,然后打印

調試一下,如圖所示,在call ds:MessageBoxA指令處下斷點,因為程序有反調試,執行這條指令時會直接退出
執行流斷在這里后,在ida中選中lea eax, [ebp+input]這條指令,右鍵->Set IP,將該指令設置為下一跳即將執行的指令,即可繞過反調試

繞過反調試后,在打印完成返回的地方下斷點,F9運行到此處,在黑窗即可看到flag

簽到

elf文件,ida分析
main函數,重點是第49行,輸入與下標以及已知的v9數組進行運算
最后要求v6==0,由異或運算的特性可知,input=index ^ (index + (index ^ v9[index]))

取出v9元素,寫腳本即可得到flag

v9=[102,109,99,98,127,58,85,106,57,82,122,55,81,19,51,35,67,70,41,61,41,32,127,28,38,77,49,20,80,94,-24] flag="" for i in range(len(v9)):flag+=chr(i^(i+(i^v9[i]))) print(flag) #flag{A_s1mpLe&E4sy_RE_i5Nt_1t}

baby_gay

elf文件,ida分析
main函數,verifyPwd函數驗證輸入是否為"ZGFuaXU=",驗證成功后會打印另一段字符串

然后就沒有其他邏輯了,看了網上其他師傅的wp,說是解RC4,不過沒看出來要解,比較迷惑

總結

以上是生活随笔為你收集整理的REVERSE-PRACTICE-CTFSHOW-3的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。