前提知識
- SQLi(SQLインジェクション)
解説
こちらはパスワードしかない。
そう言えばhidden属性でdebug=0というのをPOSTで送っていたので、これを1にしてみると実行クエリが表示される。
試すと以下の通り。
<pre>password: fd SQL query: SELECT * FROM admin where password = 'sq' </pre><h1>Login failed.</h1>
こんなヒントあったのかと思い、一般的なペイロードを投げてみる。
<pre>password: ' OR 1 -- SQL query: SELECT * FROM admin where password = '' BE 1 --' </pre>
ORがBEになるようだ。
さて、どう回避しようか。
- どっかの解説
- ORの代わりにBEを入れると、ORになってフラグが得られる
- なんだその仕様はと思ったがこっちを見ると、ROT13でずらされているようなので、全部で26なので、もっかいずらすと戻るってだけだった
- kusano_k先輩
- debug=1で見てみると
SELECT * FROM admin where password = ''!='' --'
と表示された - where後がpassword = '' != ''となっているが、うまく回避できるみたい
- 念の為teratailで聞いてみた
- debug=1で見てみると