利用數(shù)組繞過(guò)問(wèn)題小總結(jié)

題外話

下面的每一個(gè)標(biāo)題都包含著一道ctf題目固逗,推薦一邊做題一邊看……

0x01 數(shù)組繞過(guò)md5判斷

if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) === md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}
md5函數(shù)傳入數(shù)組返回null

如果傳入md5函數(shù)的參數(shù)為數(shù)組類型,則返回null趾浅,null===null初肉,因此可以通過(guò)數(shù)組可以繞過(guò) === md5判斷

0x02 數(shù)組繞過(guò)strcmp

$pass=@$_POST['pass'];
$pass1=***********;//被隱藏起來(lái)的密碼
if(isset($pass))
{
if(@!strcmp($pass,$pass1)){
echo "flag:nctf{*}";
}else{
echo "the pass is wrong!";
}
}else{
echo "please input pass!";
}

strcmp函數(shù)用于字符串的比較

int strcmp ( string $str1 , string $str2 )

返回值:如果 str1 小于 str2 返回 < 0厢钧; 如果 str1 大于 str2 返回 > 0;如果兩者相等睹逃,返回 0盗扇。

  • 5.2 中是將兩個(gè)參數(shù)先轉(zhuǎn)換成string類型。
  • 5.3.3 以后沉填,當(dāng)比較數(shù)組和字符串的時(shí)候疗隶,返回是0。
  • 5.5 中如果參數(shù)不是string類型拜轨,直接return了

存在以下情況

strcmp("foo", array()) => NULL + PHP Warning

strcmp("foo", new stdClass) => NULL + PHP Warning

strcmp(function(){}, "") => NULL + PHP Warning

因此post提交pass[]=aa抽减,通過(guò)數(shù)組繞過(guò)strcmp。

0x03 數(shù)組繞過(guò)ereg

    if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必須輸入數(shù)字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '騷年橄碾,繼續(xù)努力吧啊~';
    }

ereg函數(shù)的漏洞

  • 存在%00截?cái)啵ㄒ驯籶reg_match替代)

  • 輸入?yún)?shù)為數(shù)組時(shí)返回值為null

ereg函數(shù)處理數(shù)組返回null

payload:

  • ?nctf=111%00%23biubiubiu
  • ?nctf[]=aa

0x04 php的弱類型+數(shù)組繞過(guò)正則

function is_valid($title, $data)
{
    $data = $title . $data;
    return preg_match('|\A[ _a-zA-Z0-9]+\z|is', $data);
}
function write_cache($title, $content)
{
    $dir = changedir(CACHE_DIR . get_username() . '/');
    if(!is_dir($dir)) {
        mkdir($dir);
    }
    ini_set('open_basedir', $dir);

    if (!is_valid($title, $content)) {
        exit("title or content error");
    }

    $filename = "{$dir}{$title}.php";

    file_put_contents($filename, $content);
    ini_set('open_basedir', __DIR__ . '/');
}

preg_match()返回 pattern 的匹配次數(shù)卵沉。 它的值將是0次(不匹配)或1次,因?yàn)閜reg_match()在第一次匹配后 將會(huì)停止搜索法牲。preg_match_all()不同于此史汗,它會(huì)一直搜索subject 直到到達(dá)結(jié)尾。 如果發(fā)生錯(cuò)誤preg_match()返回 FALSE拒垃。

preg_match本身并沒(méi)有什么問(wèn)題停撞,但是在正則匹配之前,$title$content進(jìn)行了字符串連接悼瓮。得益于PHP的弱類型特性戈毒,數(shù)組會(huì)被強(qiáng)制轉(zhuǎn)換成字符串,也就是Array横堡,Array肯定是滿足正則\A[ _a-zA-Z0-9]+\z的埋市,所以不會(huì)被攔截。

file_put_contents函數(shù)可以處理數(shù)組命贴,所以構(gòu)造payload:?title=s&content[]=<?php phpinfo();?>

此文章側(cè)重于數(shù)組繞過(guò)部分的講解道宅,本題完整題解詳見(jiàn) 國(guó)家保衛(wèi)者

>> 濃縮的都是精華

md5(array()) = null
sha1(array()) = null    
ereg(pattern,array()) = null vs preg_match(pattern,array) = false
strcmp(array(), "abc") = null
strpos(array(),"abc") = null
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末食听,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子污茵,更是在濱河造成了極大的恐慌樱报,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泞当,死亡現(xiàn)場(chǎng)離奇詭異迹蛤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)襟士,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)笤受,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人敌蜂,你說(shuō)我怎么就攤上這事〗蚋兀” “怎么了章喉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)身坐。 經(jīng)常有香客問(wèn)我秸脱,道長(zhǎng),這世上最難降的妖魔是什么部蛇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任摊唇,我火速辦了婚禮,結(jié)果婚禮上涯鲁,老公的妹妹穿的比我還像新娘巷查。我一直安慰自己,他們只是感情好抹腿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布岛请。 她就那樣靜靜地躺著,像睡著了一般警绩。 火紅的嫁衣襯著肌膚如雪崇败。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天肩祥,我揣著相機(jī)與錄音后室,去河邊找鬼。 笑死混狠,一個(gè)胖子當(dāng)著我的面吹牛岸霹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播檀蹋,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼松申,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼云芦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起贸桶,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舅逸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后皇筛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體琉历,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年水醋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旗笔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拄踪,死狀恐怖蝇恶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惶桐,我是刑警寧澤撮弧,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站姚糊,受9級(jí)特大地震影響贿衍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜救恨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一贸辈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肠槽,春花似錦擎淤、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筋栋,卻和暖如春炊汤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弊攘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工抢腐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人襟交。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓迈倍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捣域。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啼染,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容