ギークな思考

CTFのWiteUpを書きます。

SQLインジェクションの手順

SQLインジェクションができるかの確認

1. ' を入力してエラーが返ってくるか

2. ページをリロードした際にステータスコードが正しい入力のときは200、間違った入力のときは500になっている(開発者ツールのネットワークタブで確認)

3. 未知のSQL文が select * from users where id={$input}  などの数字を求めている場合

 1と2を入力するとステータスコードが200であることを確認し、1+2を入力したときにステータスコードが200で、1,2のときと違う出力がされている

4. 未知のSQL文が select * from users where name={$input} などの文字列を求めている場合、tana || ka と入力(MySQL以外で有効。MySQLでは or として動作)

5. sleep()を利用する。レスポンスが返ってくるまでの時間で判断

 select * from users where {$input} に対して ' union select sleep(10)

 

②