一、分段代碼審計(jì)(3)

十一、sql閉合繞過(guò)

<?php
if($_POST[user] && $_POST[pass]) {
    $conn = mysql_connect("*******", "****", "****");
    mysql_select_db("****") or die("Could not select database");
    if ($conn->connect_error) {
        die("Connection failed: " . mysql_error($conn));
} 
$user = $_POST[user];
$pass = md5($_POST[pass]);
//select user from php where (user='admin')#
//exp:admin')#
$sql = "select user from php where (user='$user') and (pw='$pass')";
$query = mysql_query($sql);
if (!$query) {
    printf("Error: %s\n", mysql_error($conn));
    exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);
//echo $row["pw"];
  if($row['user']=="admin") {
    echo "<p>Logged in! Key: *********** </p>";
  }
  if($row['user'] != "admin") {
    echo("<p>You are not admin!</p>");
  }
}
?>

很簡(jiǎn)單的登陸sql閉合繞過(guò),閉合掉'和)然后將后面的東西注釋掉。payload:admin')#

十二、X-Forwarded-For繞過(guò)指定IP地址

<?php
function GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
    $cip = $_SERVER["HTTP_CLIENT_IP"];
else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
    $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if(!empty($_SERVER["REMOTE_ADDR"]))
    $cip = $_SERVER["REMOTE_ADDR"];
else
    $cip = "0.0.0.0";
return $cip;
}
$GetIPs = GetIP();
if ($GetIPs=="1.1.1.1"){
echo "Great! Key is *********";
}
else{
echo "錯(cuò)誤!你的IP不在訪問(wèn)列表之內(nèi)!";
}
?>

如果HTTP_CLIENT_IP不存在就使用HTTP_X_FORWARDED_FOR獲取ip,如果也不存在就使用REMOTE_ADDR獲取ip。
REMOTE_ADDR是比較靠譜的獲取ip的方式,無(wú)法通過(guò)http請(qǐng)求頭偽裝。HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR都可以通過(guò)偽造請(qǐng)求頭偽裝,只要合適使用http請(qǐng)求頭就可以使$GetIPs=="1.1.1.1"。這里可以HTTP頭添加X-Forwarded-For:1.1.1.1

十三、md5加密相等繞過(guò)

<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "nctf{*****************}";
} else {
    echo "false!!!";
}}
else{echo "please input a";}
?>

這道題的問(wèn)題在于$md51 == $md52這里使用的使==而不是===。
==對(duì)比的時(shí)候會(huì)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,0eXXXXXXXXXX 轉(zhuǎn)成0了(科學(xué)記數(shù)法)。QNKCDZO的md5值為0e830400451993494058024219903391,只要再找一個(gè)加密后0e開(kāi)頭的字符串就好,可以寫(xiě)個(gè)小程序跑一下,這里用?a=240610708240610708的md5值為0e462097431906509019562988736854。

十四、intval函數(shù)四舍五入


<?php
if($_GET[id]) {
  mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $id = intval($_GET[id]);
  $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }
}
?>

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

這個(gè)題為啥叫四舍五入不是很懂,intval()函數(shù)不是直接去掉小數(shù)位嗎?這里繞過(guò)也很容易直接id=1024.1就可以了,這樣$_GET[id]不等于1024而intval($_GET[id])等于1024

十五、strpos數(shù)組繞過(guò)NULL與ereg正則%00截?cái)?/h1>
<?php
$flag = "flag";
    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ù)努力吧啊~';
    }
 ?>

方法一 %00截?cái)?ereg()可以被%00截?cái)啵ㄔ斠?jiàn)例五)

使用%00截?cái)嗪蠹由?code>#biubiubiu,payload:?nctf=1%00#biubiubiu

方法二 strpos(),ereg()出錯(cuò)返回null

當(dāng)輸入數(shù)組strpos(),ereg()出錯(cuò)返回null,又因?yàn)閚ull!==false,所以可以滿足條件返回flag,payload:?nctf[]=

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 新銀報(bào)到,多多指教,如有錯(cuò)誤,多謝指出 extract變量覆蓋 第一次遇到extract()函數(shù),百度一波含義(回...
    yangc隨想閱讀 4,379評(píng)論 5 2
  • PHP:include()``include_once()``require()``require_once() ...
    尋夢(mèng)xunm閱讀 926評(píng)論 1 4
  • 運(yùn)動(dòng)真的會(huì)讓人快樂(lè),而跑步是最簡(jiǎn)單的運(yùn)動(dòng)。
    與自己戰(zhàn)斗的人閱讀 226評(píng)論 0 0
  • 詞法作用域是指聲明的作用域是根據(jù)程序正文在編譯時(shí)就確定的,也稱(chēng)為靜態(tài)作用域。而動(dòng)態(tài)作用域是在運(yùn)行的時(shí)候確定的。詞法...
    尾巴尾巴尾巴閱讀 459評(píng)論 0 0
  • 文/許三觀賣(mài)血 這一屆奧斯卡獎(jiǎng),小李子萊昂納多終于憑借《荒野獵人》拿到了奧斯卡小金人,總算摘掉了專(zhuān)業(yè)陪跑22年,備...
    許三觀賣(mài)血閱讀 985評(píng)論 0 0

友情鏈接更多精彩內(nèi)容