flag.php

开卷看题

题干很重要,先记一记

经典的登录框

寻找线索

根据标题和URL路径提示,习惯性的访问了一下flag.php发现存在且只有一行,很可能是flag变量的定义

为求谨慎,扫描了一下目录,发现只有index和flag两个页面

看看题干,首先说点了login为什么没反应,看看源码呗

你个糟老头子坏得很,这要是有反应就见鬼了

看来这题要么就是爆破要么就是注入,为了方便起见我们先用BP自动修改HTML

搞定之后BP就会自动替换内容,方便操作

接下来就是尝试时间了,爆破注入全都不好使,看来应该不是从这里入手

陷入迷雾

题干的第一句话已经解决了(虽然没什么用)

看来破案的重点就是第二个提示:hint,这个单词究竟有什么深邃的含义呢?

就在万般无奈的时候,看了一眼桌上的A4纸,突然想到了一个单词:margin

记得以前的题目中margin是作为参数的,那么这次会不会也是

尝试提交hint参数

这hint可真够劲,GOOD,GOOD,six six six

代码分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
error_reporting(0);
include_once("flag.php");
$cookie = $_COOKIE['ISecer'];
if (isset($_GET['hint'])) {
show_source(__FILE__);
} elseif (unserialize($cookie) === "$KEY") {
echo "$flag";
} else {

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
<link rel="stylesheet" href="admin.css" type="text/css">
</head>
<body>
<br>
<div class="container" align="center">
<form method="POST" action="#">
<p><input name="user" type="text" placeholder="Username"></p>
<p><input name="password" type="password" placeholder="Password"></p>
<p><input value="Login" type="submit"/></p>
</form>
</div>
</body>
</html>

<?php

}


$KEY = 'ISecer:www.isecer.com';
?>

总结一下:当cookie参数ISecer反序列化后完全等于变量KEY时输出flag

代码不难但是陷阱到不少,主要有二:

  1. 看下格式化之后的代码,你发现了什么?
  2. KEY变量被赋值的位置
  3. 老规矩,看不懂私信我,包教包会

羽化登仙

填了坑,接下来就是舒服的获取flag环节了

Note:写到这里突然发现前面写的都凭空消失了,WTFK????????? 还好有Git,还原了文件内容,GIT牛脾

小插曲不要紧,flag才重要,上图

YES,收工

后记

GIT真香

说错了,是具备良好的基础很重要

其实上一句也不重要,最重要的是不要被作者忽悠

其实也不对,相信自己的判断吧