最近 ChatGPT 很火,笔者也进行了尝试,发现惊为天人,可谓颠覆性的产品。下面是通过 ChatGPT 进行一道简单的 CTF 逆向题的过程。
题目选取了攻防世界的一道简单逆向,题目名称为”logmein”。
首先拖动文件到 ida 打开,代码如下:
直接复制这部分代码发送给 ChatGPT
它会给你解释这段代码,这时候可以让它给你用 python 把代码写出来,便于理解
它给出的代码如下:
def main():
v9 = 0
v8 = ":\"AL_RT^L*.?+6/46"
v7 = "ebmarah"
v6 = 7
print("Welcome to the RC3 secure password guesser.")
print("To continue, you must enter the correct password.")
print("Enter your guess: ", end="")
guess = input()
v3 = len(guess)
if v3 < len(v8):
sub_4007C0(v8)
for i in range(len(guess)):
if i >= len(v8):
sub_4007C0()
if guess[i] != chr(ord(v7[i % v6]) ^ ord(v8[i])):
sub_4007C0()
sub_4007F0()
此时可以帮它优化一下代码:
def sub_4007C0():
print('error')
exit()
def sub_4007F0():
print('correct')
def main():
v9 = 0
v8 = ":\"AL_RT^L*.?+6/46"
v7 = "ebmarah"
v7 = v7[::-1]
v6 = 7
print("Welcome to the RC3 secure password guesser.")
print("To continue, you must enter the correct password.")
print("Enter your guess: ", end="")
guess = input()
v3 = len(guess)
if v3 < len(v8):
sub_4007C0(v8)
for i in range(len(guess)):
if i >= len(v8):
sub_4007C0()
if guess[i] != chr(ord(v7[i % v6]) ^ ord(v8[i])):
sub_4007C0()
sub_4007F0()
main()
然后可以运行一下看看,能不能运行,手动测试能运行之后,告诉 ChatGPT 我给它修正了代码:
接下来尝试引导它解出密码:
尝试一段时间无果,遂让它给我写成解密代码:
继续尝试让它运行代码,告诉我结果,然而并没有成功:
但是,现在已经可以通过它给我写的解密代码,手动运行解出答案了!
完整代码如下:
def decrypt(ciphertext: str, key: str, v7: str) -> str:
v7 = v7[::-1]
v6 = 7
plaintext = ""
for i in range(len(ciphertext)):
plaintext += chr(ord(v7[i % v6]) ^ ord(key[i]))
return plaintext
print(decrypt(":\"AL_RT^L*.?+6/46", ":\"AL_RT^L*.?+6/46", "ebmarah"))
从本次尝试中可以看出 ChatGPT 强大的能力,本次实验选用了一道简单的逆向题目,同时也进行了一些人工干预,但是毫无疑问 ChatGPT 成功写出了逆向代码,这对于逆向新手来说是一个巨大的帮助,相信随着不断的探索,ChatGPT 必然能发挥更大的作用。
最后,本文旨在讨论 ChatGPT 在逆向中的应用,请勿滥用 AI 影响比赛平衡。
原文地址:https://r0yanx.com/2022/12/09/%E4%BD%BF%E7%94%A8ChatGPT%E8%BF%9B%E8%A1%8C%E9%80%86%E5%90%91%E7%9A%84%E4%B8%80%E6%AC%A1%E5%B0%9D%E8%AF%95/
热文推荐