ctf中php繞過,CTF之PHP黑魔法總結

2021-10-25 21:15:39 字數 1949 閱讀 7801

ctf之php黑魔法總結。

一、要求變數原值不同但md5或sha1相同的情況下

1.0e開頭的全部相等(==判斷)

240610708 和 qnkcdzo md5值型別相似,但並不相同,在」==」相等操作符的運算下,結果返回了true.

md5和sha1一樣

2.利用陣列繞過(===判斷)

md5和sha1對乙個陣列進行加密將返回null;而null===null返回true,所以可繞過判斷。

二、s trcmp利用陣列繞過

檢視php的手冊

int strcmp ( string $str1 , string $str2 )

return values

returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.

當輸入的兩個值為不是字串時就會產生不預期的返回值:

比如$password=$_get['password'];

if(strcmp('am0s',$password))else{

echo 'success!';

這樣一段**中,輸入password=1則返回success,成功繞過驗證

三、當有兩個is_numeric判斷並用and連線時,and後面的is_numeric可以繞過

$a=$_get['a'];

$b=$_get['b'];

$c=is_numeric($a) and is_numeric($b);

var_dump(is_numeric($a));

var_dump(is_numeric($b));

var_dump($c); //$b可以不是數字,同樣返回true

$test=false and true;

var_dump($test); //返回true

四、null,0,」0″,array()使用==和false比較時,都是會返回true的

五、 eregi匹配

陣列繞過

ereg是處理字串,傳入陣列之後,ereg是返回null

%00截斷繞過

六、接收引數$a得存在,並且$a==0可用.繞過(非數字都可繞過)

測試**:

$a=$_get['a'];

if ($a==0) {

echo "1";

if ($a) {

echo "must";

七、接收引數中不能出現某一字元,但下面又必須使用可以 php://偽協議繞過

目前遇到的是file_get_contents其他情況具體而定

八、 is_numeric繞過

空格、\t、\n、\r、\v、\f、+、-能夠出現在引數開頭,「點」能夠在引數任何位置,e、e只能出現在引數中間。

九、php5,3,29,這裡可以直接用%0b繞過\s(空白字元)的匹配

十、 既是0又是1的情況

$a==1&$test[$a]=t時

php精度(16以上)var_dump(9999999999999999999==1);//true

科學計數法 .1e1 echo $b[『.1e1』]//輸出t

.是字串所以在陣列裡面變成0,但在is_numeric中有點則正常輸出為數字

十一、 當switch沒有break時可以繼續往下執行

if (isset ( $_get ['which'] )) {

$which = $_get ['which'];

switch ($which) {

case 0 :

case 1 :

case 2 :

echo $which . '.php';

break;

default :

echo "1";

break;

$which進入迴圈時沒有break則按順序

ctf命令執行漏洞繞過方式小結

測試環境 本地 win10 phpstudy8.1 kali2020.2 外網 單位提供的linux靶機 一 命令分隔符 0a 換行符,0d 回車符,連續指令 二 空格 09 ifs 9 三 讀檔案 1 more 一頁一頁的顯示檔案內容 2 less 與 more 類似,但是比 more 更好的是,...

ctf特訓營 CTF小白入門 PHP語言特性(二)

因php核心是c語言實現的,當php字串處理遇到null x00 時,就會當作字串結束標誌來處理。在ctf比賽中,我們可以利用這個特點處理掉變數末尾我們不需要的字元。如果一段php 如下所示,file etc passwd 00即可讀到 passwd 檔案內容。當然,隨著php版本更新,這個漏洞已經...

CTF之SQL注入

github audi 1 sqli labs sqli labs 爆庫名select database 爆表名select group concat table name from information schema.tables where table schema database 爆列名s...