如何通过类似SQL注入的方式让这段Python密码校验代码返回Access granted?
问题解答
- 你给出的这段Python密码校验代码不存在类似SQL注入的绕过可能,不输入正确的
1234密码的话,没有办法让程序输出Access granted。
要理解这个结论,只要对比SQL注入的成因就很清楚:SQL注入之所以成立,是因为用户输入的内容会被直接拼接到SQL语句里,作为SQL逻辑的一部分被数据库解析执行,进而篡改原本的校验逻辑。
但你这段代码里完全没有这类动态解析逻辑:
input()拿到的所有用户输入都会被直接转为普通字符串,不会被当作Python代码执行- 后续的
==判断只是单纯对比两个字符串的内容是否完全一致,不会识别输入里的任何特殊逻辑符号
- 只有当代码中存在
eval(user_pwd)、exec(user_pwd)这类把用户输入当成代码执行的操作时,才有可能出现类似注入的绕过风险,当前代码不存在这类问题。
内容的提问来源于stack exchange,提问作者klg
相关产品推荐
相关产品推荐

