Misc Challenge

08 June 2020

interkosenctf_2020

limited

pcap / web / crypto

link

這題給定一個pcap封包,要設法找出attacker攻擊手法並分析得到flag。

步驟

  1. 分析後發現有非常多http query,而且很明顯就是SQL Injection的query,因此就很確定大概跟http封包有關,所以先filter掉非http封包
  2. 發現他每個指令都是這種形式: search_max = (select unicode (substr(secrect, index, 1)) FROM account WHERE name="admin") % n
    • EX: search_max = (select unicode (substr(secrect, 48, 1)) FROM account WHERE name="admin") % 11
  3. 透過分析,基本上就知道secret就是flag,而每次得到的search max就是secret[index]%n的結果
  4. 接著分析每個這種http request對應的http response發現,search max參數就是決定了回傳的頁面中table的item數量
  5. 因此我們把封包中的http requests/response抓來記錄每個secret[index]%n和他對應item個數存下來
  6. 發現每個secret[index]有多個n跟對應的search_max值
    • EX: secret[1] % 19 = 18, secret[1] % 13 = 10, secret[1] % 11 = 9
  7. 合理懷疑這是要用中國剩餘定理(CRT)來求得每個secret[index]的值,接著就求出flag
Conclusion

發現這種透過回傳的table大小和中國剩餘定理來推得每個flag的char的值為多少,是一種蠻猛的SQL Injection的方式,透過這樣針對每個flag的char做sql injection然後用中國剩餘定理求出該char為何。再依些網站中,沒辦法回傳字串只能回傳數字的sql injection可以達到這種攻擊。