Misc Challenge
08 June 2020
interkosenctf_2020
limited
pcap / web / crypto
這題給定一個pcap封包,要設法找出attacker攻擊手法並分析得到flag。
步驟
- 分析後發現有非常多http query,而且很明顯就是SQL Injection的query,因此就很確定大概跟http封包有關,所以先filter掉非http封包
- 發現他每個指令都是這種形式:
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
- EX:
- 透過分析,基本上就知道secret就是flag,而每次得到的search max就是secret[index]%n的結果
- 接著分析每個這種http request對應的http response發現,search max參數就是決定了回傳的頁面中table的item數量
- 因此我們把封包中的http requests/response抓來記錄每個secret[index]%n和他對應item個數存下來
- 發現每個secret[index]有多個n跟對應的search_max值
- EX: secret[1] % 19 = 18, secret[1] % 13 = 10, secret[1] % 11 = 9
- 合理懷疑這是要用中國剩餘定理(CRT)來求得每個secret[index]的值,接著就求出flag
Conclusion
發現這種透過回傳的table大小和中國剩餘定理來推得每個flag的char的值為多少,是一種蠻猛的SQL Injection的方式,透過這樣針對每個flag的char做sql injection然後用中國剩餘定理求出該char為何。再依些網站中,沒辦法回傳字串只能回傳數字的sql injection可以達到這種攻擊。