目录
baby_web
题目描述:想想初始页面是哪个
打开链接看到这个界面
这里有两种解法
法一:我们输入index.php ,就会立即跳转到1.php
那我们就对index.php抓包看看
在请求头看到flag:flag{very_baby_web}
法二:题目提示说初始界面,但是url后面会自动跳转到1.php,我们可以在控制台找到初始界面, 按F12进入控制台点开原始的网址就可以看到
Training-WWW-Robots
打开链接是这样一个页面
题目提示了robots,我们就看看robots协议是什么东西
学过python爬虫一定都知道,简单的来说他就是 网站声明 哪些文件是不允许 爬取的 声明文件,至于别人是否遵守这个 协议,它无法限制
所以我们访问一下http://220.249.52.133:47824/robots.txt
然后再访问一下http://220.249.52.133:47824/fl0g.php
最后拿到flag:cyberpeace{903178f76966037c8b7e9ac18980dcdb}
ics-06
打开链接是一个网站
点了所有的目录,发现只有报表中心可以点进去
但是在这个页面不管点什么都没有反应,同时我们注意到上面有个id=1的字眼,后来看了wp发现这是一个id爆破,真是想不到啊,那就爆破一下吧
然后intruder开始爆破,最后爆破出来id=2333
可以在bp里面的页面看到flag,也可以在网页上看到flag
得到flag: cyberpeace{06e924d21053a5a783468bd3fb3bc67a}
Web_php_unserialize
知识点:weakup()绕过,正则表达式绕过
源码:
<?php
class Demo {
private $file = 'index.php';
public function __construct($file) {
$this->file = $file;
}
function __destruct() {
echo @highlight_file($this->file, true);
}
function __wakeup() {
if ($this->file != 'index.php') {
//the secret is in the fl4g.php
$this->file = 'index.php';
}
}
}
if (isset($_GET['var'])) {
$var = base64_decode($_GET['var']);
if (preg_match('/[oc]:\d+:/i', $var)) {
die('stop hacking!');
} else {
@unserialize($var);
}
} else {
highlight_file("index.php");
}
?>
我们先对源码解读一下:
首先有一个Demo类,一个私有类型变量$file的值为’index.php’;
"__construct()"函数:这个函数是类创建对象(new)的时候会自动调用
destruct() (两个下划线就不写了,csdn四个下划线负责加粗字体),这个函数是对象被回收的时候调用
wakeup() 函数是反序列化时被自动调用的函数
下一段代码是get方式接收了一个var变量,首先对var进行base64解码,再去用正则匹配字符或字符串,“[oc]”匹配的是两个字母,\d是匹配整形数字,/i是不区分大小写,中间用冒号连接,主要是为了过滤反序列化字符串的前几位,这是需要绕过的
我们要得到fl4g.php就必须绕过三个东西:
1绕过wake up 函数
__wakeup()
是在反序列化操作中起作用的魔法函数,当unserialize的时候,会检查时候存在__wakeup()函数,如果存在的话,会优先调用__wakeup()函数。
绕过:
__wakeup()函数漏洞就是与对象的属性个数有关,如果序列化后的字符串中表示属性个数的数字与真实属性个数一致,那么i就调用__wakeup()函数,如果该数字大于真实属性个数,就会绕过__wakeup()函数。
2 绕过正则表达式
(preg_match(’/[oc]:\d+:/i’, $var))
而正则匹配的规则是: 在不区分大小写的情况下 , 若字符串出现 “o:数字” 或者 "c:数字’ 这样的格式 , 那么就被过滤 .很明显 , 因为 serialize() 的参数为 object ,因此参数类型肯定为对象 " O " , 又因为序列化字符串的格式为 参数格式:参数名长度 , 因此 " O:4 " 这样的字符串肯定无法通过正则匹配
绕过
而O:+4没被过滤说明绕过了过滤而且最后的值不变。
3 必须是base64加密
直接对序列化的内容进行加密
这里写一个php脚本跑一下
<?php
class Demo {
private $file = 'index.php';
public function __construct($file) {