You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用eval()函数注入hack()函数完成任务,是否需要修改eval()函数?

问题解答

1. 是否需要修改eval()函数?

不需要修改eval()函数本身。当前代码的漏洞在于字符串格式化拼接eval参数的写法:eval(f"login('{user_input}')"),这种方式会将用户输入直接拼接到待执行的代码字符串中,天然存在代码注入风险。我们只需构造恶意的user_input内容,就能利用该漏洞执行注入代码,无需改动eval函数本身。

2. 如何注入hack()函数?

根据hack1.py的逻辑,当hack3.txt文件存在时,程序会读取该文件内容作为user_input传入eval。我们只需在hack3.txt中构造特定内容,即可让eval执行时自动调用hack()。

构造hack3.txt的内容:

'); hack(); #

原理说明:

程序读取该内容后,eval的参数会被拼接为:

eval("login(''); hack(); #')")
  • '); 闭合login('的单引号和括号,让login('')先执行(返回空字符串,不影响原有流程)
  • hack(); 就是我们要注入执行的函数调用
  • # 注释掉后续的'),避免出现语法错误

程序执行到eval语句时,就会自动触发hack()函数,完成注入目标。


内容的提问来源于stack exchange,提问作者SAI CHARAN KATKAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:12:53