一、分段代碼審計(5)

二十一背苦、數(shù)字驗證正則繞過 *

<?php
error_reporting(0);
$flag = 'flag{test}';
if  ("POST" == $_SERVER['REQUEST_METHOD']) 
{ 
    $password = $_POST['password']; 
    if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password)) //preg_match — 執(zhí)行一個正則表達式匹配
    { 
        echo 'Wrong Format'; 
        exit; 
    } 
    while (TRUE) 
    { 
        $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; 
        if (6 > preg_match_all($reg, $password, $arr)) 
            break; 
        $c = 0; 
        $ps = array('punct', 'digit', 'upper', 'lower'); //[[:punct:]] 任何標點符號 [[:digit:]] 任何數(shù)字  [[:upper:]] 任何大寫字母  [[:lower:]] 任何小寫字母 
        foreach ($ps as $pt) 
        { 
            if (preg_match("/[[:$pt:]]+/", $password)) 
                $c += 1; 
        } 
        if ($c < 3) break; 
        //>=3互捌,必須包含四種類型三種與三種以上
        if ("42" == $password) echo $flag; 
        else echo 'Wrong password'; 
        exit; 
    } 
}
?>

$reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; 
if (6 > preg_match_all($reg, $password, $arr)) 
意為匹配到的次數(shù)要大于6次

$ps = array('punct', 'digit', 'upper', 'lower'); //[[:punct:]] 任何標點符號 [[:digit:]] 任何數(shù)字  [[:upper:]] 任何大寫字母  [[:lower:]] 任何小寫字母 
foreach ($ps as $pt) 
{ 
    if (preg_match("/[[:$pt:]]+/", $password)) 
        $c += 1; 
} 
if ($c < 3) break; 
意為必須要有大小寫字母,數(shù)字行剂,字符內容三種與三種以上

if ("42" == $password) echo $flag; 
意為必須等于42

答案:

42.00e+00000000000 
或
420.000000000e-1

正則還不是很熟秕噪,先引用別人的解題思路。

二十二厚宰、弱類型整數(shù)大小比較繞過

<?php
error_reporting(0);
$flag = "flag{test}";
$temp = $_GET['password'];
is_numeric($temp)?die("no numeric"):NULL;    
if($temp>1336){
    echo $flag;
} 
?>

要求很簡單腌巾,不能是數(shù)字且大于1336,只要使用PHP弱類型即可铲觉,php當一個其它類型的數(shù)據(jù)和數(shù)值類型的數(shù)據(jù)比較大小時澈蝙,會先將其他類型的數(shù)據(jù)轉換成數(shù)值類型,這里我們只要輸入類似9999a的數(shù)據(jù)即可滿足條件撵幽。

二十三灯荧、md5函數(shù)驗證繞過

<?php
error_reporting(0);
$flag = 'flag{test}';
$temp = $_GET['password'];
if(md5($temp)==0){
    echo $flag;
}
?>

要求md5值加密后為0,據(jù)我所知有一下方法:

  • 弱類型法 弱類型比較NULL == 0,可以輸入空的password盐杂,加密后結果為null逗载。也可以輸入一個數(shù)組,php對數(shù)組進行hash運算后得到的結果為null
  • 科學記數(shù)法法 前面的題目提到過 0exxx==0链烈,只要找到一個md5加密后0e開頭的數(shù)據(jù)就可以滿足數(shù)值為0

二十四厉斟、md5函數(shù)true繞過注入

error_reporting(0);
$link = mysql_connect('localhost', 'root', 'root');
if (!$link) { 
  die('Could not connect to MySQL: ' . mysql_error()); 
} 
// 選擇數(shù)據(jù)庫
$db = mysql_select_db("security", $link);
if(!$db)
{
  echo 'select db error';
  exit();
}
// 執(zhí)行sql
$password = $_GET['password'];
$sql = "SELECT * FROM users WHERE password = '".md5($password,true)."'";
var_dump($sql);
$result=mysql_query($sql) or die('<pre>' . mysql_error() . '</pre>' );
$row1 = mysql_fetch_row($result);
var_dump($row1);
mysql_close($link);
?>

這個是思路是真沒見過,md5($password,true) 將md5后的hex轉換成字符串测垛,想要完成注入捏膨,不難看出我們需要一個可以轉換成'or'xxx的md5值,難就難在找到符合條件的字符串食侮,我這里就不寫代碼自己找了号涯,直接順手牽羊一個。

字符串:ffifdyop
md5后锯七,276f722736c95d99e921722cf9ed621c

二十五链快、switch沒有break 字符與0比較繞過

<?php
error_reporting(0);
if (isset($_GET['which']))
{
    $which = $_GET['which'];
    switch ($which)
    {
    case 0:
    case 1:
    case 2:
        require_once $which.'.php';
         echo $flag;
        break;
    default:
        echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false);
        break;
    }
}
?>

這題要求包含flag.php

直接使用?which=flag就成功了,為什么呢眉尸?
問題就在于 'flag' == 0 結果為true和沒有使用break域蜗,'flag' == 0是因為弱類型比較巨双,此處不再做過多解釋。因為'flag' == 0成立所以case 0 被執(zhí)行霉祸,又因為沒有使用break語句筑累,所以case1和case2也被執(zhí)行,所以直接輸入?which=flag就可以執(zhí)行成功丝蹭。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末慢宗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奔穿,更是在濱河造成了極大的恐慌镜沽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贱田,死亡現(xiàn)場離奇詭異缅茉,居然都是意外死亡,警方通過查閱死者的電腦和手機男摧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門蔬墩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人彩倚,你說我怎么就攤上這事筹我。” “怎么了帆离?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長结澄。 經(jīng)常有香客問我哥谷,道長,這世上最難降的妖魔是什么麻献? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任们妥,我火速辦了婚禮,結果婚禮上勉吻,老公的妹妹穿的比我還像新娘监婶。我一直安慰自己,他們只是感情好齿桃,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布惑惶。 她就那樣靜靜地躺著,像睡著了一般短纵。 火紅的嫁衣襯著肌膚如雪带污。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天香到,我揣著相機與錄音鱼冀,去河邊找鬼报破。 笑死,一個胖子當著我的面吹牛千绪,可吹牛的內容都是我干的充易。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼荸型,長吁一口氣:“原來是場噩夢啊……” “哼盹靴!你這毒婦竟也來了?” 一聲冷哼從身側響起帆疟,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鹉究,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后踪宠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體自赔,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年柳琢,在試婚紗的時候發(fā)現(xiàn)自己被綠了绍妨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡柬脸,死狀恐怖他去,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情倒堕,我是刑警寧澤灾测,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站垦巴,受9級特大地震影響媳搪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜骤宣,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一秦爆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憔披,春花似錦等限、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔗候,卻和暖如春怒允,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锈遥。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工纫事, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勘畔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓丽惶,卻偏偏與公主長得像炫七,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钾唬,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 2018/3/16 17:34:51 WEB題 1.簽到題 題目:key在哪里万哪? writeup:查看源代碼即可獲...
    Sec小玖閱讀 22,377評論 1 11
  • 我在午飯后,抱著被子曬太陽抡秆。猛地聽到某人的消息奕巍,心里緊的收縮,緩緩吐氣儒士,想要平靜下來的止。 午睡時,安眠藥就在桌子上着撩,...
    境南閱讀 174評論 0 0
  • 混蛋邏輯: 混蛋永遠不會考慮自己帶給別人的巨大傷害拖叙,而是執(zhí)著于自己一丁點的細微感受氓润。 在他們的...
    一只眼的世界閱讀 239評論 0 0
  • 這幾年咖气,我不止聽過一個媽媽說過這樣的話:想想這些年,除了養(yǎng)大了一個孩子挖滤,我好像什么都沒干采章。 說這句話時,這些媽媽的...
    花樣青春閱讀 278評論 2 6
  • 1. 一種簡單的快速排序 快速排序最重要的就是partition函數(shù)壶辜,即選定某一個數(shù)后,使得所有小于該數(shù)的數(shù)字都在...
    書呆子的復仇閱讀 960評論 1 0