Пример POC для SQLi с Python

Я пытаюсь создать простой POC SQLi с Python. Я использую известную строковую интерполяцию для запросов SQL в методе cursor.execute(), который неправильно экранирует входные параметры, если оператор sql объединен с указанным параметром. Вот мой пример кода:

import mysql.connector
from pip._vendor.distlib.compat import raw_input

cnx = mysql.connector.connect(user=username, password= secret_key, host=host, database=dbname, buffered=True)

def main():
    account = raw_input("Enter account no. or type 'quit' to end: ")
    check_bal(account)

def check_bal(account):
    sql = "SELECT  balance, status FROM Account WHERE account_no = '%s' " 
    cursor = cnx.cursor()
    cursor.execute(sql % (account))
    for row in cursor:
        print(row)

    cursor.close()

if __name__=="__main__":
    main()

Мне удалось использовать программу с помощью простых входных данных, таких как foo 'OR 1 = 1. Но когда я пытаюсь использовать немного сложные входные данные (например, foo'; select * from Customer; -), я получаю эту ошибку

mysql.connector.errors.InternalError: Непрочитанный результат найден.

Я использовал буферный курсор для решения проблемы (cnx.curson(buffered=True), но проблема сохраняется. Любая идея, что не так и как я могу заставить его работать? Я использую Python 3.6.5 .

Заранее спасибо!

0 ответов

Другие вопросы по тегам