【CTF笔记】XNUCA全国高校网安联赛Web部分Writeup


Sign:

签到考眼力拼手速,直接提交,get!

Baseinjection 30:

尝试使用万能密码注入:username:admin password:1’or’1’=’1
提交,成功注入,得到flag。

getredisvalue 题目wp

页面上提到可以旋转图片,怀疑是php的ImageMagick的漏洞,但是经过尝试,在填写部分错误的url的时候,看到异常提示是Python urllib的,同时页面注释提示有views.py,所以使用file协议读取 file://views.py,得到/getredisvalue的url。
想到urllib的HTTP头注入漏洞,参考 https://virusdefender.net/index.php/archives/749/
构造 http://127.0.0.1%0d%0aset%20b4671623-c69a-4828-ba29-798e780489bc%2012345%0d%0a:6379 的url,向Redis中注入一个key为uuid格式的数据即可。

Invisible

拿到题目先试着改了改x-forward-for发现无果,忍不住扫了扫,扫到了index.php.bak,下载,解base64 ,得到index.php 源码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'echo '<div style="text-align:center">';'
echo '<h1>Hide IP to protect yourself!</h1>';
echo '<br>';
echo '<br>';
if (empty($_SERVER["REMOTE_ADDR"]) or
empty($_SERVER["HTTP_VIA"]) or
empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
echo 'Perhaps you are safe now !';
}
if (($_SERVER["REMOTE_ADDR"] != $_SERVER["HTTP_VIA"]) and
($_SERVER["REMOTE_ADDR"] != $_SERVER["HTTP_X_FORWARDED_FOR"]) and
($_SERVER["HTTP_VIA"] != $_SERVER["HTTP_X_FORWARDED_FOR"])){
echo 'HaHa! I got you!<br>flag{xxxxxxxxxxxxxx}<br>';
echo 'Proxy IP: '.$_SERVER["REMOTE_ADDR"].'<br>';
echo 'Proxy Info:'.$_SERVER["HTTP_VIA"].'<br>';
echo 'Your IP: '.$_SERVER["HTTP_X_FORWARDED_FOR"].'<br>';
}
echo '</div>';

加上两个header的值,发送过去就出flag了

Countingstars

右键源码,有提示,一是macos, 一是vim。
先尝试了各种vim临时文件,无果。
好在自己用mac,对macos还算熟悉,试了几次,发现有个.DS_Store可以下载,这个文件中发现了epLF1rEihQp5AjCUcgGry330jkFSC1C7.zip 下载解压,得到index.php文件,这是核心:

1
2
3
4
5
6
7
8
9
10
11
<?php
$S="song";
$song="says";
$says="no";
$no="more";
$more="d0llars";
$d0llars="counting";
$counting="star";
$star="S";
echo '<div style="text-align:center">What is $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$S</div>';
?>

意思就是把那些$一个个替换一下,是个循环,算了一下,最终是d0llars
直接提交没报错但是无论如何都抓不到check.php的回显,果断上py:
import requests

url = 'http://question4.erangelab.com/check.php'

data = {
    'answer':'d0llars'
}
res = requests.post(url, data=data,allow_redirects=False)
print res.content

Basecoding:

直接base64解码即可

总结:

经历了十多个小时的奋战,虽然最后的结果依然是不尽如人意,但是感觉题目还是比较基础的,我们自己与那些大牛的差距还是很大,在比赛中也发现了很多自己的问题,并且学习了很多知识,我想不管最后的成绩如何,自己有所成长,这就够了。