web方向有5个题目没出,复现一下
连连看到底是连连什么看
下载源码发现有/what’s_this.php目录
<?php
highlight_file(__FILE__);
error_reporting(0);
$p=$_GET['p'];
if(preg_match("/http|=|php|file|:|\/|\?/i", $p))
{
die("waf!");
}
$payload="php://filter/$p/resource=/etc/passwd";
if(file_get_contents($payload)==="XYCTF"){
echo file_get_contents('/flag');
}
考察的主要是filer链,那个工具我还用过,比赛的时候没想起来0.0,主要考察的就是构造出想要的字符串然后去掉乱码
https://github.com/synacktiv/php_filter_chain_generator
测试一下
结果确实出现了XYCTF,但是还有一堆乱码,用string.strip_tags过滤器去掉垃圾字符
string.strip_tags能去掉标签<
后面的字符,所以重新构造一下
在过滤器后面加上string.strip_tags
发现结果就是剩下XYCTF
了
拿下
give me flag
其实看到题就知道是md5长度拓展攻击,但是苦于不知道flag长度所以没做,看wp才知道平台flag长度固定43 0.0
属实大意了,现在来重做一下
用一个之前用过的工具hash_ext_attack,项目地址
https://github.com/shellfeel/hash-ext-attack
先生成拓展字符,time的时间戳直接用unix在线时间戳,提前一点,方便操作
然后写个py脚本不断发包就行了,或者用bp 一直intruder
import requests
url='http://gz.imxbt.cn:20394/?md5=3b1f9b9c57bafcda64a0f29b0fb409ad&value=%80%00%00%00%00%00%00%00%00%00%00%00%00X%01%00%00%00%00%00%00'
while True:
res=requests.get(url=url)
if "XYCTF" in res.text:
print(res.text)
break
εZ?¿м@Kε¿?
这个也是makefile系列的最后一题,确实没做出来,正好学习一下。
在makefile中存在一些自动变量
想看所有依赖发现被ban
不过可以看第一个依赖
第一个依赖就是/flag
想重定向读出来发现不行
读到变量也不行
用$打开变量,成功拿到flag