Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 操作错误:(1292,';截断了不正确的双精度值:\&';1&&';更新foo SET text=LOAD#u文件(\';/something/something.txt\';&&&';&#_Python_Mysql_Sql Injection - Fatal编程技术网

Python 操作错误:(1292,';截断了不正确的双精度值:\&';1&&';更新foo SET text=LOAD#u文件(\';/something/something.txt\';&&&';&#

Python 操作错误:(1292,';截断了不正确的双精度值:\&';1&&';更新foo SET text=LOAD#u文件(\';/something/something.txt\';&&&';&#,python,mysql,sql-injection,Python,Mysql,Sql Injection,我想插入这个字符串,以便它将表foo中的文本更新为文件中的红色文本(我不在乎它对前面的delete语句做了什么) 在python代码中,id被设置为my string:(这不能更改,因为它是给定的) 编辑: 它是这样工作的(没有最后一个引号和#-而不是--): “1\”;UPDATE foo SET text=LOAD_FILE(\'/something/something.txt\);#-“您不需要反斜杠,如果id是整数,您也不需要”。你应该这样重写它: "DELETE FROM bar WH

我想插入这个字符串,以便它将表foo中的文本更新为文件中的红色文本(我不在乎它对前面的delete语句做了什么)

在python代码中,id被设置为my string:(这不能更改,因为它是给定的)

编辑: 它是这样工作的(没有最后一个引号和#-而不是--):
“1\”;UPDATE foo SET text=LOAD_FILE(\'/something/something.txt\);#-“

您不需要反斜杠,如果id是整数,您也不需要”。你应该这样重写它:

"DELETE FROM bar WHERE user_id = '%s' and bar_id = '%s';"%(str(user_id), str(id))
您应该使用准备好的语句来避免sql注入。您可以像这样使用准备好的语句(在这个语句中,您必须去掉')

编辑 如果您执行以下操作:

x="1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\'); --"
y="DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s" % (2,x)
你在y中得到的是

DELETE FROM bar WHERE user_id = '2' and bar_id = '1'; UPDATE foo SET text = LOAD_FILE('/something/something.txt'); --
它是这样工作的(没有最后一个引号和#-而不是--):


谢谢你的回复,但这不是我想要的。编程错误:(1064,‘您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在\’“--\’\”第1行附近使用的正确语法。)如果这样执行,我会得到语法错误。(我试着用两个\\或\或一个都没用,什么都没用)对不起,我以为你需要“-”最后,我修改了我的答案,因为我理解我确实需要mySQL代码注入--最后注释掉了“-”符号,至少我在其他示例中使用了它——据我所知,我确实需要mySQL代码注入——最后注释掉“符号”,至少我在其他示例中使用了它。7如果成功注入了该内容,Python MySQLdb
execute()
方法不会运行以分号分隔的多个语句,除非您使用
multi=True
选项。因此,客户端应用程序完全可以防止这种类型的SQL注入。请参阅,感谢您的回复。这是一项大学作业,注入应该在这个位置进行,因此应该可以工作。执行是后来打电话来。
cursor.execute("DELETE FROM bar WHERE user_id = %s and bar_id = %s;",(str(user_id), str(id),))
x="1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\'); --"
y="DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s" % (2,x)
DELETE FROM bar WHERE user_id = '2' and bar_id = '1'; UPDATE foo SET text = LOAD_FILE('/something/something.txt'); --
"1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\'); #- "