お久しぶりです。授業でSQLインジェクションの

Writer: admin Type: このテヒョンのiPhone Date: 2018-12-15 00:00
お久しぶりです。授業でSQLインジェクションの攻撃を実際に体験しています。バージョンを取得する際に' union select @@version #と入力したのですが、「@@」はどのような意味があるのでしょうか?「@」を一つにすると結果はNULLになり、「@」をつけずに実行するとエラーが返ってきました。また、サイトを参考に攻撃をしていたのですが、「unionはフィールド数が揃っていないとエラーになる」と書いてあったのですが、どこのフィールドと合わせているのでしょうか?データベース名とユーザ名を取得する際に' union select database(),user() #と入力しました。この()の意味もわからないです。サイトで調べてみたのですが、思ったような結果を得ることができませんでした。http://it-hack.net/2016/05/13/post-1496/参考にしていたサイトです。この質問は、nor********さんに回答をリクエストしました。###回答されていますが@@はシステム変数ですshow variables;で表示されるものと値は同一です。@一つの場合はセッション変数になります。セッション変数はset @v := 1;などで値を設定可能です。セッションが異なれば、同名の変数でも独立しています。user()などはシステム関数と呼ばれるものですhttp://db.yulib.com/mysql/c8.html> 「unionはフィールド数が揃っていないとエラーになる」unionはselect unionselectのように使います。この場合連結するselectの項目リストの項目数、データ型が一致していないとエラーになります。ナイス0
###http://it-hack.net/2016/05/13/post-1496/の例ですが、・rdbmsがMySQL(MariaDB)が前提・preparedstatementを使用していないなどここまでチェックが甘い作り方はあまりないとは思いたいですね。SQLインジェクションではありませんがパスワードの扱いがどうなっているかも気になります。通常平文のパスワードをデータベースに格納するのは禁止です。必ずハッシュ関数を通した値を格納します。IPAのページに注意すべき点などがあるので参考にしてください。https://www.ipa.go.jp/security/awareness/vendor/programmingv1/intro...書籍だと新版が出た体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 https://www.amazon.co.jp/dp/4797393165/ref=cm_sw_r_cp_tai_o.XSBbAXE...もいいと思います。
###ありがとうございました。###@@var_name はシステム変数です。SHOW VARIABLESで表示されるものは@@var_nameで扱えますが、一部そうでないものもあります。https://dev.mysql.com/doc/refman/5.6/ja/using-system-variables.html---------- 引用ここからSHOW VARIABLES によって表示される一部の変数は、SELECT @@var_name 構文で使用できない場合があり、「不明なシステム変数です」と表示されます。その場合の回避方法として、SHOW VARIABLES LIKE 'var_name' を使用できます。 ---------- 引用ここまで>この()の意味もわからないです。database関数とuser関数ですから、関数の()です。https://dev.mysql.com/doc/refman/5.6/ja/information-functions.html>「unionはフィールド数が揃っていないとエラーになる」と>書いてあったのですが、どこのフィールドと合わせているの>でしょうか?最初のSQL文です(unionで結合する元の文)。そのSQLのwhere conditionの与える文字列を ' で無理矢理閉じて、union で繋いで別のSQL文を実行させようという話ですよね>SQLインジェクション。質問内容はSQLインジェクションとは別の話なので、切り分けて(単独でSQLを実行する環境で)試された方がいいと思います。#こんな古典的なSQLインジェクションの穴があいて#いるケースもあり得ないでしょうし(汗ナイス0

 

TAG