国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP CTF常見考題的繞過技巧

這篇具有很好參考價值的文章主要介紹了PHP CTF常見考題的繞過技巧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.==繞過

2.===繞過

3.intval()函數(shù)

4.strpos()函數(shù)

?5.in_array()函數(shù)

?6.preg_match()函數(shù)

?7.str_replace函數(shù)


1.==繞過

PHP比較運算符 ==在進(jìn)行比較的時候是弱類型比較,只需要比較兩個值相等就行,不會比較類型

繞過方法如:1=1.0,1=+1、

$a=1;

if($a==$_GET['x']){

??? echo $flag;

}

//使用1.0就可以繞過?

if($_GET['name'] != $_GET['password']){

??? if(MD5($_GET['name']) == MD5($_GET['password'])){

??????? echo $flag;

??? }

??? echo '?';

}

//MD5('QNKCDZO')==MD5('240610708')

//echo MD5('QNKCDZO');

//echo MD5('240610708');


PHP在處理哈希字符串時,會利用”!=””==”來對哈希值進(jìn)行比較,它把每一個以”0E”開頭的哈希值都解釋為0,所以如果兩個不同的密碼經(jīng)過哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會認(rèn)為他們相同,都是0。

2.===繞過

PHP比較運算符 ===在進(jìn)行比較的時候,會先判斷兩種字符串的類型是否相等,再比較值是否相等。只要兩邊字符串類型不同會返回false

繞過方法:使用數(shù)組繞過

if($_GET['name'] != $_GET['password']){

??? if(MD5($_GET['name']) == MD5($_GET['password'])){

??????? echo $flag;

??? }

??? echo '?';

}

//name[]=1&password[]=2


PHPmd5()函數(shù)無法處理數(shù)組(會返回NULL

==的也可以用數(shù)組繞過

3.intval()函數(shù)

intval() 函數(shù)通過使用指定的進(jìn)制 base 轉(zhuǎn)換(默認(rèn)是十進(jìn)制),返回變量 var 的 integer 數(shù)值。 intval() 不能用于 object,否則會產(chǎn)生 E_NOTICE 錯誤并返回 1(注意這個通常配合preg_match來使用)

語法
int intval ( mixed $var [, int $base = 10 ] )
參數(shù)說明:

$var:要轉(zhuǎn)換成 integer 的數(shù)量值。
$base:轉(zhuǎn)化所使用的進(jìn)制。

如果 base為空,通過檢測 var 的格式來決定使用的進(jìn)制:

  • 如果字符串包括了 "0x" (或 "0X") 的前綴,使用 16 進(jìn)制 (hex);
  • 否則,如果字符串以 "0" 開始,使用 8 進(jìn)制(octal);
  • 否則,將使用 10 進(jìn)制 (decimal)。

繞過方法:通過使用0x或者0開始的格式來繞過不相等的判斷(像一些要先判斷不相等再判斷相等的題目)

$i='666';

$ii=$_GET['n'];

if(intval($ii==$i,0?)){

??? echo $flag;

}

//n=0x29a? ?666的二進(jìn)制是29a


通過檢測 $ii的格式來決定使用的進(jìn)制

4.strpos()函數(shù)

strpos() 函數(shù)查找字符串在另一字符串中第一次出現(xiàn)的位置(區(qū)分大小寫)。(函數(shù)返回查找到這個find字符串的位置,那么如果是0位置,就值得注意了)

注釋:strpos() 函數(shù)是區(qū)分大小寫的。

?strpos(string,find,start)

參數(shù) 描述
string 必需。規(guī)定被搜索的字符串。
find

必需。規(guī)定要查找的字符。

start 可選。規(guī)定開始搜索的位置

繞過方法:利用換行進(jìn)行繞過(%0a)?

$i='666';

$ii=$_GET['h'];

if(strpos($ii,$i,"0")){

??? echo $flag;

}

//?num=%0a666

?5.in_array()函數(shù)

in_array() 函數(shù)搜索數(shù)組中是否存在指定的值。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
參數(shù) 描述
needle 必需。規(guī)定要在數(shù)組搜索的值。
haystack 必需。規(guī)定要搜索的數(shù)組。
strict 可選。如果該參數(shù)設(shè)置為 TRUE,則 in_array() 函數(shù)檢查搜索的數(shù)據(jù)與數(shù)組的值的類型是否相同。

問題就出在第三個參數(shù),如果第三個參數(shù)不設(shè)置為true就不檢測類型,是弱比較,相當(dāng)于==號

繞過方法:與==一樣?

$whitelist = [1,2,3];

$page=$_GET['i'];

if (in_array($page, $whitelist)) {

??? echo "yes";

}

//?i=1ex

?6.preg_match()函數(shù)

preg_match 函數(shù)用于執(zhí)行一個正則表達(dá)式匹配。

詳細(xì)用法可以參考:https://www.runoob.com/php/php-preg_match.html

繞過方法:preg_match只能處理字符串,如果不按規(guī)定傳一個字符串,通常是傳一個數(shù)組進(jìn)去,這樣就會報錯,如果正則不匹配多行(/m)也可用上面的換行方法繞過

if(isset($_GET['num'])){

??? $num = $_GET['num'];

??? if(preg_match("/[0-9]/", $num)){[t1]?

??????? die("no no no!");

??? }

??? if(intval($num)){

??????? echo $flag;

??? }

}

//?num[]=1


上面介紹過了,intval() 不能用于 object,否則會產(chǎn)生 E_NOTICE 錯誤并返回 1

?7.str_replace函數(shù)

str_replace() 函數(shù)用于替換字符串中指定字符(區(qū)分大小寫)

<?php
echo str_replace("world","Peter","Hello world!");
?>

//輸出:Hello Peter!

str_replace(find,replace,string,count)

參數(shù) 描述
find 必需。規(guī)定要查找的值。
replace 必需。規(guī)定替換?find?中的值的值。
string 必需。規(guī)定被搜索的字符串。
count 可選。一個變量,對替換數(shù)進(jìn)行計數(shù)。

繞過方法:str_replace無法迭代過濾 ,可以通過雙寫繞過

$sql=$_GET['s'];

$sql=str_replace('select','',$sql);

echo $sql;

?>

//?s=sselectelect文章來源地址http://www.zghlxwxcb.cn/news/detail-466918.html

到了這里,關(guān)于PHP CTF常見考題的繞過技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • CTF之SSRF常見繞過

    CTF之SSRF常見繞過

    1.繞過localhost和127.0.0.1 當(dāng)程序中限制了我們使用localhost和127.0.0.1時,便可以利用進(jìn)制轉(zhuǎn)換來繞過 ip進(jìn)制轉(zhuǎn)換:https://tool.520101.com/wangluo/jinzhizhuanhuan 進(jìn)制轉(zhuǎn)換:https://www.sojson.com/hexconvert.html 2.CTFSHOW例題: 2.1 直接利用SSRF漏洞進(jìn)行本地讀取flag: 2.2 繞過localhost和127.0.0.1 2.3 繞過l

    2023年04月25日
    瀏覽(18)
  • CTF筆記:PHP函數(shù)is_numeric()繞過

    CTF筆記:PHP函數(shù)is_numeric()繞過

    在做CTF過程中遇到的is_numeric()函數(shù),作用是判斷輸入是不是數(shù)字或數(shù)字字符串。 思路1:數(shù)值-非數(shù)值 原題是[極客大挑戰(zhàn) 2019]BuyFlag,判斷代碼如下: 密碼是404,但是不能輸入數(shù)字,所以要考慮繞過的問題,這里記錄解題思路。 上網(wǎng)搜了一下,可以借助url編碼中的空字符,例

    2024年02月08日
    瀏覽(23)
  • 【完善中】CTF逆向Reverse題的玩法

    【完善中】CTF逆向Reverse題的玩法

    鏈接:https://pan.baidu.com/s/1yy3Wtg9sCY8IfFrrAOqOSg?pwd=pr1s? 提取碼:pr1s? ? 常見算法與數(shù)據(jù)結(jié)構(gòu) 二叉樹的恢復(fù)和推測 加密算法以及其魔改 可以通過ida7.7 2、。 3、識別加密算法與哈希算法代碼特征,識別算法中魔改的部分。 4、代碼混淆, 代碼虛擬化, 修改代碼流程, 反調(diào)試等。 5、軟

    2024年02月05日
    瀏覽(16)
  • 【算法】鏈表題的常用技巧及算法題(C++)

    【算法】鏈表題的常用技巧及算法題(C++)

    下面的技巧通過一些后面的例題可以較好的理解熟練。 常用技巧 畫圖 鏈表題通過畫圖可以較為直觀分析鏈表,方便分析如何進(jìn)行對鏈表的操作等 引入虛擬“頭”節(jié)點 虛擬節(jié)點適合處理一些邊界情況 同時放便我們進(jìn)行對鏈表的操作 多定義變量 多定義變量增強(qiáng)可讀性,也方

    2024年02月03日
    瀏覽(16)
  • 淺談CTF中各種花式繞過的小trick

    前言 在代碼審計的時候,我們不難發(fā)現(xiàn)很多很多的函數(shù)需要我們bypass,這些知識點很多又很小,基本上是一眼就明白,但是下一次遇見又不太清晰,需要反反復(fù)復(fù)查找,這篇文章淺淺做個匯總,如有不足,歡迎補(bǔ)充。 md5加密bypass 弱比較繞過 方法一:0e繞過 繞過原理 :PHP在

    2024年02月11日
    瀏覽(17)
  • 【CTF-web】備份是個好習(xí)慣(查找備份文件、雙寫繞過、md5加密繞過)

    【CTF-web】備份是個好習(xí)慣(查找備份文件、雙寫繞過、md5加密繞過)

    題目鏈接:https://ctf.bugku.com/challenges/detail/id/83.html 經(jīng)過掃描可以找到index.php.bak備份文件,下載下來后打開發(fā)現(xiàn)是index.php的原代碼,如下圖所示。 由代碼可知我們要繞過md5加密,兩數(shù)如果滿足科學(xué)計數(shù)法的形式的話,php會將其當(dāng)作科學(xué)計數(shù)法所得的數(shù)字來進(jìn)行比較,根據(jù)該原

    2024年02月12日
    瀏覽(17)
  • PHP之Base64+php://filter繞過、disabled_function繞過

    PHP之Base64+php://filter繞過、disabled_function繞過

    目錄 一、Base64+php://filter繞過 1.思路分析? 2.實踐驗證 二、disabled_function繞過 上課講了這樣一道題,一起來看下(以下代碼適用于PHP7.x及以上,5的版本會報錯) 前端就是一個上傳標(biāo)簽,沒啥可看的 題目要求只能上傳php文件,上傳普通的一句話肯定不行,直接被過濾掉 普通Webs

    2024年02月12日
    瀏覽(20)
  • php弱類型相等漏洞繞過

    長度一致性 :任意長度的數(shù)據(jù),計算出來的哈希值長度都是固定的128位。 不對稱性: 從原數(shù)據(jù)計算哈希值十分容易,但是知道哈希值去碰撞原數(shù)據(jù)十分困難。 PHP中有兩個相等操作符“==”和“===”。$a == $b,如果類型轉(zhuǎn)換后$a和$b相等,則輸出true。$a === $b,如果$a和$b相等,

    2023年04月26日
    瀏覽(50)
  • 網(wǎng)絡(luò)安全各類WAF繞過技巧

    網(wǎng)絡(luò)安全各類WAF繞過技巧

    即傳入一段長數(shù)據(jù)使waf失效,從而實現(xiàn)繞過waf。某些waf處理POST的數(shù)據(jù)時,只會檢測開頭的8K,后面選擇全部放過。 例如,當(dāng)發(fā)現(xiàn)某網(wǎng)站存在一個反序列化漏洞時,但是無回顯,被waf攔截了 利用臟數(shù)據(jù)插入5000個x字符,可以成功繞過。 對請求進(jìn)行并發(fā),攻擊請求會被負(fù)載均衡

    2024年02月09日
    瀏覽(19)
  • CTF之PHP基礎(chǔ)學(xué)習(xí)篇(一)

    CTF之PHP基礎(chǔ)學(xué)習(xí)篇(一)

    估摸著不少學(xué)計算機(jī)的同學(xué)以及其他專業(yè)的小部分同學(xué)都對于信息安全感興趣吧!那對于參加這相關(guān)的比賽就應(yīng)該更有興趣了。那么我們首先就了解一下下這相關(guān)的比賽—— CTF(Capture The Flag) CTF 是一種流行的信息安全競賽形式,其英文名可直譯為“奪得Flag”,也可意譯為

    2023年04月08日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包