戳上面的蓝字关注我吧!
之前一直有一个想法,就是用GPT来做代码审计和反混淆的事情,愈是跟对抗相关的事情愈有训练的意义。
还是用之前介绍过的工具Cursor来做
话术如下:
请将下面的字节码用Java代码重写,要求:
- 逻辑与原代码保持一致
- 使用更友好的变量名
- 不存在的函数不需要生成
- 不需要生成类,只要生成函数即可。
- 不要求代码能编译通过
- 不要删除或者省略任何代码
- 添加中文注释
嗯?混淆?我看不懂机器还看不懂吗!(手动狗头)
从推上看到一个提出使用Embeddings的方式将项目喂给GPT的构思图
!pip install llama-index
!pip install langchain
装好之后编写如下代码进行查询
from llama_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import sys
import os
from IPython.display import Markdown, display
def construct_index(directory_path):
# set maximum input size
max_input_size = 4096
# set number of output tokens
num_outputs = 2000
# set maximum chunk overlap
max_chunk_overlap = 20
# set chunk size limit
chunk_size_limit = 600
# define LLM
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=num_outputs))
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
documents = SimpleDirectoryReader(directory_path).load_data()
index = GPTSimpleVectorIndex(
documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper
)
index.save_to_disk('index.json')
return index
def ask_ai():
index = GPTSimpleVectorIndex.load_from_disk('index.json')
while True:
query = input("What do you want to ask? ")
response = index.query(query, response_mode="compact")
display(Markdown(f"Response: <b>{response.response}</b>"))
if __name__=='__main__':
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxx"
construct_index("context_data/src")
ask_ai()
其中construct_index的参数就是当前目录下需要审计的代码路径,"sk-xxxxxxxx"就是在OpenAI官网申请到的Token
执行进行查询
周一来公司上班后还是恋恋不忘,一直想将GPT结合在自动化漏洞发现上,但是不管怎么测试总感觉蠢蠢的。于是中午休息时间再看了下代码,直到我发现我模型选错了之后...
更换模型为code-davinci-002
终于成功了,虽然给出的demo中确实没有安全漏洞存在,于是乎我找一个存在安全漏洞的靶场来做。
当我又问它,有什么漏洞的时候,API给我挤爆了????
问了师傅得知是要用英文提问和回答,不过效果不太好,我这套是jspxcms,是有后台ssrf漏洞的,但是换了英文提问后还是提示没有安全风险(就算给出入口方法也没用,唉,累了),只好继续换Demo试试,看看能不能测出来。
Please provide a detailed analysis of the source code for any vulnerabilities, and if any are found, please specify the file path and line number.
非常正确!!!!
如果把关键逻辑改成工具类呢,比如下图中的HttpClient.URLConnection方法
GPT一样可以测出来