extract變量覆蓋

我們看到extract函數(shù)沒有設(shè)置extract_rules,而extract默認的規(guī)則是如果有沖突則覆蓋掉已有的變量,因此我們可以構(gòu)造? 120.24.86.145:9009/1.php?shiyan=&flag=
還有另一種方法
看到file_get_contents函數(shù),我們可以通過php://input為其賦值

strcmp比較字符串
strcmp是比較字符串的函數(shù),構(gòu)造數(shù)組即可繞過
payload:120.24.86.145:9009/6.php?a[]=1
urldecode二次編碼繞過
解讀源碼
1、id不等于hackerDJ
2、傳入的id url解碼后等于hackerDJ
因為瀏覽器自身會對id解碼一次,所以我們只要傳入兩次url編碼后的hackerDJ即可
payload:120.24.86.145:9009/10.php?id=hacker%2544J
md5()函數(shù)

解讀源碼:
1、username不等于password
2、md5(username) === md5(password)
因此0e開頭的字符串不能繞過了,但是我們可以構(gòu)造數(shù)組繞過
payload:120.24.86.145:9009/18.php?username[]=a&password[]=b
數(shù)組返回NULL繞過
ereg、strops是處理字符串的函數(shù),在處理數(shù)組時會返回null,即可繞過
payload: 120.24.86.145:9009/19.php?password[]=
弱類型整數(shù)大小比較繞過
is_numeric是檢測數(shù)字及數(shù)字字符串的,因此我們只需要在我們傳進去的數(shù)字后面加入非數(shù)字字符即可繞過
payload:?120.24.86.145:9009/22.php?password=1377a
sha()函數(shù)比較繞過
解讀源碼:
1、name不等于password
2、他們的sha1值相等
sha1不能處理數(shù)組,因此構(gòu)造數(shù)組即可繞過
payload:?120.24.86.145:9009/7.php?name[]=1&password[]=2
md5加密相等繞過
常見的md5比較漏洞,就不多說了
payload:?120.24.86.145:9009/13.php?a=s878926199a
十六進制與數(shù)字比較
ord()返回字符串首字母的ascii值,結(jié)合題目,傳入3735929054的十六進制即可getflag
payload:?http://120.24.86.145:9009/20.php?password=0xdeadc0de
變量覆蓋
這題和第一題一模一樣的,就不多說了,兩種方法任選一種都可以
ereg正則%00截斷
ereg存在%00漏洞,因此這里可以用%00繞過,而passowrd長的要小于8但是數(shù)值又要大于9999999,因此可以用科學(xué)計數(shù)法繞過
payload:http://120.24.86.145:9009/5.php?password=9e8%00*-*
strpos數(shù)組繞過
利用ereg和strops處理數(shù)組時的漏洞
payload: 120.24.86.145:9009/15.php?ctf[]=1
數(shù)字驗證正則繞過

preg_match('/^[[:graph:]]{12,}$/', $password) 即匹配password中除空格和tab鍵之外的字符12次以上,那如果我們傳進去的password長度小于12或者是數(shù)組的話,preg_match 返回的就是0,就能輸出flag

簡單的waf
要求傳入abcde,a中不能包含php,因此a不能用php://input來為其賦值了,但是可以通過遠程文件包含來為其賦值,即在自己的服務(wù)器上寫一個txt文件,e可以用php://input來賦值,然后就會看到返回hello admin

但是c和d不知道有什么作用,看到c中不能包含flag,d不能包含base64,于是猜測題目可能存在flag.php之類的,需要通過d去讀取?嘗試訪問flag.php看到flag on my head,訪問flag,發(fā)現(xiàn)會下載一個文件,里面說Please call admin to get flag,令c=flag.php會觸發(fā)他的waf,但是令c=Flag.php可以繞過,但是也沒有返回其他的東西,搖頭.gif不知道怎么操作了,希望有大佬會的話帶帶我Orz
作者水平有限,若有錯誤請指出Orz