Hello there, ('ω')ノ
ORDER BYフィールドを介してSQLインジェクションを実行してとのことで。
webgoat-prdサーバのIPアドレスを見つけて。
完全なIPアドレスは時間がかかるので、最後の部分はxxx.130.219.202ということで。
SQLインジェクションに対して脆弱ではないと。
まずは動作検証から。
すべてのボタンを押したり、ソートをしなおしたりと。
Burp Suiteのリクエストのパラメータを変更してみるとエラーが返ってきて。
エラー情報から下記がわかって。
列名:id、hostname、ip、mac、status、description
テーブル名:servers
したがって、下記のSQL文が実行できればよいのですが、そういうわけにもいかず。
select ip from servers where hostname='webgoat-prd'
現実的に実行できるパラメータは下記のようになって。
IPアドレスを1桁ずつ確認することになりますが。
case when (substring((select ip from servers where hostname='webgoat-prd'),1,1)=1 then id else hostname end
さらにBurp Suiteで送信するには、URLエンコードに変換する必要があって。
等号とスペースをトランスコードする必要があり。
column=(case+when+(substring((select+ip+from+servers+where+hostname%3d'webgoat-prd'),1,1)%3d1)+then+hostname+else+id+end)
上記を実行するとhostnameでソートされたのでIPアドレスの先頭1桁目は、1が正解で。
下記を実行するとidでソートされたのでIPアドレスの先頭1桁目は、2ではなく。
column=(case+when+(substring((select+ip+from+servers+where+hostname%3d'webgoat-prd'),1,1)%3d2)+then+hostname+else+id+end)
こんな感じで地味に確認していくのもありですが。
Intruder機能を使用することに。
変更したい箇所を追加するとマーキングされて。
攻撃タイプは、Cluster bombを選択して。
1番目のペイロードは、IPアドレスの桁目を1,2,3で設定して。
2番目のペイロードは、IPアドレスの数値を0~9で設定して。
レスポンスのソートからIPアドレスの先頭2桁目は、0が正解で。
レスポンスのソートからIPアドレスの先頭2桁目は、4が正解で。
ただ、確認するデータ量が多いと時間もかかるので。
Optionsタブでレスポンスのデータを表示させる方法もありかと。
レスポンスデータをソートすることで一つ一つ確認する必要もなく。
よって、下記のIPアドレスを入力するとクリアできた。
104.130.219.202
Best regards, (^^ゞ