(1)Shell 编程学习 Shell是什么?Shell的浅显原理 为什么要学Shell 及其第一个Shell脚本 CTF角度学习Shell

最近刷CTF题目的时候经常要用到Shell语言,但是自己并没有系统的学习,所以最近花了点时间学习一下,所以重新来梳理一下。对于稍微有一点编程语言基础的同学,能上手Shell其实不需要半小时(甚至更短),当然熟练运用还是需要积累的。

目录

Shell是什么?

主观定义

官方定义及原理

 为什么要学Shell编程

第一个Shell脚本

CTF用到的shell


Shell是什么?

主观定义

主观的来说:大家只要用过电脑,就接触到了Shell,比如说自己电脑打开win+r,打开cmd,虚拟机打开终端。

其中跳动的  其实就是 shell。

 

 所以我们学渗透也经常听到,拿到一个shell,获取一个后门之类的话

其实就是获取这样一个界面的权限,从而我们能够对该电脑执行命令,或者说是服务器进行操作。(在这个命令行能够执行我们命令

官方定义及原理

在计算机语言中,Shell是指一种命令行解释器,是为用户和操作系统之间通信提供的一层接口(想象一下,如果没有一种与计算机沟通的方式,那么计算机如何得到来自人脑的指令呢),它接受来自用户输入的命令,并将其转换为一系列的系统调用送到内核执行,并将结果输出给用户。

(这个没学过的不必细看)

        事实上,Shell不只是一种解释器(在用户和系统间起着桥梁的作用),还是一种编程工具,称为脚本语言。与编译型语言(比如C/C++/JAVA等)不同,这种语言经过编写后不需要任何编译就可以运行。

        什么是解释型语言呢?这就要说到计算机运行程序的两种方式了。计算机不能理解高级语言,只能理解机器语言,所以必须把高级语言翻译为机器码。而这种翻译的方式又两类一类是编译                                                                                                                                一类是解释                                                                                                                                

不同之处在于翻译的时间不同。

编译型语言是运行前翻译,一般是使用编译工具将程序源码处理成机器认识的可执行文件(比如说Windows下的exe文件,Linux 下二进制可执行文件),这种文件一旦产生,以后运行时都不需要再次翻译,所以一般来说,编译型语言的效率较高;

解释型语言是运行时翻译,执行一条语句就立即翻译一条,而且每次执行程序都需要进行解释,相对来说效率较低。但是也不能简单认为编译型语言就一定比解释型效率高,随着解释器的发展,部分解释器能在运行程序时动态优化代码,因此这种效率差距也在一定程度上不断减少。

 为什么要学Shell编程

这个问题我也思考过?如果我用cmd 仅仅是为了输入一个 shutdown /s 让电脑关机的话,我为什么需要去按那么多下键盘?输入这些不熟悉的命令? 直接用鼠标操作或者是按下关机按钮不行?为什么要多此一举呢?

其实对于大多数使用电脑的用户来说,其实是不需要学习Shell语言的,鼠标+键盘已经能100%满足他们的需求了?

那么小部分需要学习Shell编程的用户是谁呢?是网站或者是服务器的运维人员又或者是黑客们。

我们可以比较一下这个场景。

假设网络遭受了攻击,往每台电脑都安装了一个木马文件,假使这个木马文件很好找。

  • 对于普通用户,找到直接删除就行
  • 那对于服务器的运维人员呢?,如果公司有着100台服务器,他挨个去打开服务器找到然后一个一个删除?那要是10000台服务器甚至更多呢?不得累死?

所以说Shell编程的意义就在这里,如果上面的服务器运维人员会Shell编程的话,花点时间写个Shell脚本,控制自己的服务器执行,那就行了。

(举得例子可能有点不恰当,但是这样理解没问题,哈哈)

linux shell脚本经典案例8---批量主机执行命令_初遇我ㄖ寸の热情呢?-CSDN博客_linux批量执行脚本

第一个Shell脚本

在kail虚拟机打开(其他大部分linux虚拟机其实也通用)

相信有基础的同学2秒就会好吧。

桌面打开终端,创立 helloworld.bash文件并编辑

nano helloworld.bash

ps: ctrl+o  即可以写入

#!/bin/bash
#first 
echo 'Hello World!'

 之后ctrl+x离开,问是否需要改文件名直接回车。

这里要解释一下,

第一行:一个Shell脚本永远是以“#!”开头的,这是一个脚本开始的标记,它是在告诉系统执行这个文件需要使用某个解释器,后面的 /bin/bash 就是指明了解释器的具体位置。

第二行:第二行同样是以“#”,但是这里是一个注解类似于我们C中的// 。写脚本的时候,多写注解是非常有必要的,以方便其他人能看懂你的脚本——实际上,即使是自己写的脚本,过一段时间也很容易忘记。

第三行:很简单的命令 输出 “Hello World”。echo类似于c中的printf。

在之后的文章里我会更进一步的写一更复杂的脚本实例。

CTF用到的shell

本人水平比较差,只能介绍几道基础题目了。

反弹shell执行:↓↓↓↓

i春秋 死亡ping命令 原理学习(命令执行+shell反弹)+复现_AAAAAAAAAAAA66的博客-CSDN博客s

构照shell脚本 执行  :↓↓↓↓



i春秋CTF ssrfme (peal函数中get命令漏洞)命令执行 详细题解+原理 学习过程_AAAAAAAAAAAA66的博客-CSDN博客zz
 

短命令执行:↓↓↓↓

HITCON2017 BabyFirst Revenge (短命令执行)_a3320315的博客-CSDN博客


参考资料:

Linux系统命令及Shell脚本实践指南-王军

linux shell脚本经典案例8---批量主机执行命令_初遇我ㄖ寸の热情呢?-CSDN博客_linux批量执行脚本
HITCON2017 BabyFirst Revenge (短命令执行)_a3320315的博客-CSDN博客
 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CTF(Capture The Flag)是一种网络安全竞赛,参赛者需要在规定时间内解决一系列安全问题,其中包括获取目标系统的shell权限。获取shell权限是指攻击者通过漏洞攻击等手段,成功进入目标系统的命令行界面,从而可以执行任意命令,控制目标系统。在CTF比赛中,获取shell权限是一项非常重要的任务,也是参赛者展示技能的重要环节。 ### 回答2: CTF(Capture The Flag)是一种信息安全竞赛,旨在通过解决各种安全问题来提高对信息安全的认知。其中,GetshellCTF比赛中一个常见的项目,旨在测试选手的渗透能力。 Getshell的目标是获得被选定的系统的管理员权限,从而获取这个系统的完全控制权。这个项目是模拟真实攻击场景的一个非常好的练习,通过这个项目,选手能够到很多渗透技术,比如漏洞利用、代码注入、社工攻击等等。 在实际操作中,选手需要首先进行一次侦查,以了解目标系统的架构、应用程序版本、运行环境等信息,并找出可能存在的漏洞。接下来,选手需要尝试使用各种渗透技术攻击系统,直到获得管理员权限。这个过程需要充分利用网络协议和各种工具,同时还需要不断学习新技术和攻击方法,以应对日益复杂和变化多样的安全威胁。 总的来说,GetshellCTF竞赛中一个非常有趣和挑战性项目,除了能够提高选手的渗透能力外,还能够帮助选手了解和掌握信息安全相关的知识和技能。对于想要成为信息安全专家的人来说,这个项目是一个非常好的锻炼机会。 ### 回答3: CTF(Capture The Flag)比赛是一种网络安全竞技赛,通过在虚拟环境中进行模拟攻防比拼,检测系统的安全性和漏洞,提高参赛者的技术水平和安全意识。在CTF比赛中,Getshell是一项基本任务,也是比赛中最常见的做法之一。Getshell任务的目标通常是在特定的服务器上获取root权限或者利用漏洞获取对服务器的控制权,从而将Flag获取。 其实,Getshell行为不仅存在于CTF比赛中,也是黑客攻击的主要手段之一。黑客通过利用系统软件和服务(如web服务器、数据库、操作系统等)的漏洞,成功获取特权或执行Shell脚本,从而窃取敏感信息或攻击目标网站。一个Getshell攻击的成功与否,取决于攻击者的技术水平和被攻击者系统的安全性。 在CTF比赛中,Getshell任务的难度是比较高的,需要掌握多种攻击技能和技术,如漏洞利用、逆向工程、代码审计、信息搜集等。攻击者首先需要了解目标系统的架构和环境信息,然后对可能存在的漏洞进行扫描和测试,锁定可利用的漏洞。接下来,利用漏洞执行代码、上传文件或写入后门脚本,从而getshell。 在进行Getshell攻击时,需要注意防范反制措施。被攻击者可以通过监控和日志分析等方式,发现攻击活动,并对系统进行修复和强化,从而防止攻击。因此,攻击者需要配合执行好攻击计划,减少被发现的风险。 最后,需要提醒大家,Getshell攻击是一种非法行为,严重威胁到网络安全和个人隐私。我们应该共同关注网络安全,保护自己的网络安全和信息安全,共同构建清朗、安全的网络环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值