私はただCTFとハッキング全般に取り組んでいます。私が最後にアポストロフィを追加したときにこれが機能する理由について非常に混乱しています。 Burp Community Editionスイートを使用していて、HTTPライブヘッダーを使用しています。
http://example.com/page/edit/2'
が通常のページであるのに対して、http://example.com/page/edit/2
を追加するとフラグがどのように表示されるかを理解しようとはしていません。情報をいただければ幸いです
ここに見られるように
Burpを使用して、私がリクエストで見る唯一の違いは
と表示されます
GET /page/edit/2 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
そしてなしで、それは示しています
GET /page/edit/2' HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
したがって、唯一の違いはCache-Control HTTPヘッダーであると思われますが、それでよろしいですか?
Cache-Control: max-age=0
そしてHTTP Liveヘッダーから
http://example.com/page/edit/2'
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Upgrade-Insecure-Requests: 1
Connection: keep-alive
GET: HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Mon, 09 Sep 2019 16:18:40 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Content-Length: 76
SQLインジェクションの可能性があります。 '
はSQLの文字列を制限するために使用されるため、'
区切ります。
FLAG文字列が適切にエスケープされなかったようです。そのため、文字区切り文字を追加するとフラグが返されます。
これは、SQLiの脆弱性をテストする人々にとって一般的な手法です。 Web CTFには多くの推測が含まれているため、推測し続ける準備をしてください。