1. 程式人生 > >實驗吧CTF刷題記錄(web篇二)

實驗吧CTF刷題記錄(web篇二)

8.上傳繞過

直接上傳.php會被攔截。嘗試上傳圖片馬,能上傳但不符合題目要求。

嘗試bp抓包改字尾名無果,並非在客戶端javascript驗證。

嘗試截斷路徑繞過,上傳1.jpg檔案,bp抓包,路徑upload後新增1.php空格,將hex中空格20改為00,forward,成功繞過。

9.FALSE

PHP程式碼審計

hint:sha1函式你有認真瞭解過嗎?聽說也有人用md5碰撞o(╯□╰)o

格式:CTF{}

原始碼:

<?php
if (isset($_GET['name']) and isset($_GET['password'])) {
    if ($_GET['name'] == $_GET['password'])
        echo '<p>Your password can not be your name!</p>';
    else if (sha1($_GET['name']) === sha1($_GET['password']))
      die('Flag: '.$flag);
    else
        echo '<p>Invalid password.</p>';
}
else{
echo '<p>Login first!</p>';
?>

按程式碼中的思路非常難找出碰撞,但是sha1()函式預設的傳入引數型別是字串型。加上題目標題false可以想到構造FALSE===FALSE拿到flag

位址列修改name[]=xxx,password[]=zzz;

10.Guess Next Session

寫個演算法沒準就算出來了,23333

hint:你確定你有認真看判斷條件?

格式:CTF{}

<?php
session_start(); 
if (isset ($_GET['password'])) {
    if ($_GET['password'] == $_SESSION['password'])
        die ('Flag: '.$flag);
    else
        print '<p>Wrong guess.</p>';
}

session在判斷時是沒有值的,構造第二個if語句左右均為空值。

bp抓包,將PHPSESSID刪除,並將輸入的密碼置空,拿到flag。

11.Once More

題目提示2 科學記數法,由於要使密碼長度小於8或值大於9999999,可以使用1e8或1e9滿足條件。 正確pass:1e9%00*-* 得到flag。

12.忘記密碼了

<meta name="admin" content="[email protected]" />
<meta name="editor" content="Vim" />
管理員郵箱以及使用的是vim編輯器。 看了大神writeup,得知讀取.submit.php.swp (看評論說burpsuite抓包可以看到submit - - 無奈我沒找到。) 訪問http://ctf5.shiyanbar.com/10/upload/.submit.php.swp
if(!empty($token)&&!empty($emailAddress)){
	if(strlen($token)!=10) die('fail');
	if($token!='0') die('fail');
	$sql = "SELECT count(*) as num from `user` where token='$token' AND email='$emailAddress'";
	$r = mysql_query($sql) or die('db error');
	$r = mysql_fetch_assoc($r);
	$r = $r['num'];
	if($r>0){
		echo $flag;
	}else{
		echo "澶辮觸浜嗗憖";
	}
}
	
可以看到token需要滿足長度為10且==‘0’   構造弱型別0000000000 http://ctf5.shiyanbar.com/10/upload/[email protected]&token=0000000000 得到flag。