pigctf期末测评
pigctf期末测评
MISC 1
拿到图片,先binwalk一下,如下图
果然发现png图片后面跟了个ZIP,然后提取出来打开发现了一个flag.png,然后查看16进制文件没有发现什么问题,之后查看属性发现分辨率为986470,但是大小为200kb左右,显然是不相匹配的,通过16进制编辑器修改分辨率为9861376,然后在图片的左下角发现flag,
FLAG{5mall_L1_15_5tup1d}
MISC 2
http://drops.wooyun.org/tips/7828
一道CBC字节翻转攻击问题
<?php
$enc = "S9PsFp43k9VgyrggRHLbISjUAjwzSSPPajrF9Dzz0o/ieSZbxwGjTJ5xhAZEi5tDBjvwsQtH0BynlLC0p0F0zOZMx25M6iekcLvX//MNKSA=";
$enc = base64_decode($enc);
echo "<br>".($enc)."<br>";
$enc[47] = chr(ord($enc[47]) ^ ord("9") ^ ord ("1"));
echo "<br>".($enc)."<br>";
$c = base64_encode($enc);
$d = urlencode($c);
echo "Plaintext after attack : <br>$c<br>";
echo "Plaintext after attack : <br>$d<br>";
$e = @decrypt(base64_decode($c));
$uid = substr($e,strpos($e,"uid")+4,1);
echo 'uid:'.$uid.'<br/>';
if ($uid == 1){
echo "<br>get the flag!!!";
}
else {
echo "false!";
}
?>
得到翻转后的密文的base64加密值:
S9PsFp43k9VgyrggRHLbISjUAjwzSSPPajrF9Dzz0o/ieSZbxwGjTJ5xhAZEi5tLBjvwsQtH0BynlLC0p0F0zOZMx25M6iekcLvX//MNKSA=
修改COOKIE之后提交得到flag,
WEB 1
根据注释的提示,网页的源码由于使用extract,故存在变量覆盖,然后直接提交get请求http://45.78.61.235/web1/?auth=1,转到了一个新的页面,然后再响应头里面发现了flag
WEB 2
进入页面,看了源码、请求等待都没发现东西,然后试试robots.txt,也没有,然后想到备份文件,加上’~’发现了源码如下:
<?php
function checkIN($number){
for($i = 0; $i < strlen($number); $i++){
$dig = ord($number[$i]);
if(($digit >= ord('1')) && ($digit <= ord('9'))){
return false;
}
}
return $number == '3722304989';
}
if(eregi("hacker", $_GET[id])){
echo("<p> not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
echo $_GET[id];
if($_GET[id] == "hacker" && checkIN($_GET[num])){
echo "<p> Access granted! </p>";
echo "<p> flag:flag xxxxxxxxxxxxxxxxxx";
}
?>
<br><br>
can you bypass it???
阅读之后判断是松散比较,构造下属请求如下:
http://45.78.61.235/web2/index.php?id=%2568%2561%2563%256B%2565%2572&num=0xdddddddd
得到flag为
flag{Your_are_a_g00d_PHP_learner!}
REV 1
首先通过OD的关键字查找,发现了文本参考字串“wrong”
对该行附近的字串进行查看,发现跳转和获取输入的关键代码
通过输入,不同的数据,发现该算法实现的功能是将一段输入进行位置调换后异或,然后与程序自带文本进行比较。
通过几次实验输入,得到调换顺序和异或对象(斐波那契数列)。
得到最终结果:flag{H4ppyRev!}