且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

更新时间:2022-06-05 21:09:25

ctf.show 萌新模块 web12关, 这一关考察的是代码执行漏洞的利用, 重点在于命令执行函数的利用方式, 推荐使用反引号(``) 或者 base64加密绕过

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

页面中展示了部分源码, 并提示我们 falg 就在 config.php文件中, 读取文件内容即可拿到 flag

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

首先分析一下源码

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

重点在这个if判断中, 过滤了参数中的 system exec highlight cat . php config 关键字, 只要绕过这些过滤条件就能使用 eval()函数执行代码了

方法一, base64加密绕过

base64_decode();    -- base64解码,常用于参数绕过

base64_encode();    -- base64加密

查看当前目录文件, 拿到 config.php文件的位置

?c=passthru('ls');

 由结果可知, 文件就在当前目录下

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

接下来获取 config.php 文件名base64加密后的值, 这里使用 base64_encode()函数来加密, 方法不唯一, 其他方式获取加密的值也可以

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

 加密完成后, 利用base64加密后的文件名绕过过滤条件, 查看文件内容, 由于 cat命令被过滤了, 这里使用 more 代替

?c=$a = base64_decode('Y29uZmlnLnBocA==');passthru("more $a");

页面空显示, 但也没报错

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

右键查看网页源码即可看到文件内容, 获取 flag

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

方法二, 反引号绕过

反引号``, 可以执行系统命令, 并返回一个字符串类型的变量, 用来保存命令的执行结果, 需要注意的是, 反引号``中的命令会先被执行并将结果以字符串类型的变量返回, 而后再参与到其他代码的执行, 类似一个函数

首先查看当前目录下的文件, 确认 config.php 文件的位置

?c=echo `ls | grep conf*`;

 由结果可知, 文件就在当前目录下

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

上面的命令 `ls | grep conf*` 返回结果是一个内容为 config.php 的字符串变量, 我们将返回结果作为文件名使用 more命令查看文件内容, 即可获取 flag

?c=passthru('more `ls | grep con*`');

页面空显示, 但没有报错, 没有关系, 这很正常

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)

 右键查看网页源码即可拿到 flag

ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)