👻
security
  • 计算机技术
  • OWASP TOP 10
  • 名词解释
  • 1
    • 常见端口利用
    • F5 big-ip从环境搭建到漏洞复现
    • 红队资源
  • About
    • APT
      • 海莲花(APT-C-00)
        • 样本分析
      • 毒云藤(APT-C-01)
        • 大规模钓鱼攻击活动披露
        • 2020上半年针对我重要机构定向攻击活动揭秘
      • 响尾蛇(T-APT-04)
        • 利用WebSocket隧道的新型攻击活动披露
      • 蔓灵花(APT-C-08)
        • 移动平台攻击活动揭露
      • 蓝宝菇(APT-C-12)
        • 组织使用云存储技术发起的最新攻击活动披露
      • 双尾蝎组织(APT-C-23)
        • 针对中东地区的最新攻击活动
      • Lazarus(APT-C-26)
        • 暴风行动 -利用MATA框架针对数字货币行业的攻击活动揭秘
      • Fancy Bear(APT-C-28)
        • 携小众压缩包诱饵对北约、中亚目标的定向攻击分析
      • 肚脑虫组织(APT-C-35)
        • 使用升级版数字武器针对周边地区的攻击活动
        • 针对巴基斯坦的攻击活动
      • 拍拍熊(APT-C-37)
      • 军刀狮(APT-C-38)
      • 蓝色魔眼(APT-C-41)
        • 组织首次针对我国重要机构定向攻击活动披露
      • 美人鱼(Infy)
        • 使用最新的Foudre后门进行攻击活动的分析
    • 各类靶场讲解
      • sqli-labs
      • upload-labs
      • xss-labs
    • CISP题库
    • Docker
      • Docker基线
        • docker基线-概述
        • 推荐一
        • 推荐二
        • 推荐三
        • 推荐四
        • 推荐五
        • 推荐六
      • 命令与选项
      • 基于Docker的固件模拟
      • 固件相关
      • Docker 私有仓库搭建
      • 基础命令的背后
      • 渗透思路调研
      • Docker容器环境检测方法【代码】
    • 浏览器
    • markdown
    • 密码学
    • 内网渗透TIPS
    • 网络扫描
    • 正则表达式
  • 操作系统
    • Android
      • APK终端安全分析法
      • 应用审计指南
        • 通用审计方法
    • IOS
      • 应用审计指南
    • Linux
      • 反弹shell
      • 基线检查
      • SHELL编程
      • 实战技能
    • windows
      • BACKDOOR with 权限维持
      • 磁盘取证实验
      • 基线检查
      • 免杀抓取明文
      • payload下载方式
      • powershell
      • 日志分析
        • 分析工具
      • Untitled
  • 数据库
    • db2
    • mysql
      • webshell写入
      • 基础知识
      • 核心技术
      • 高级应用
    • oracle
      • webshell写入
    • SQLserver
      • webshell写入
  • 中间件
    • apache
      • 基线检查
      • 日志审计
    • iis
      • 基线检查
      • 7.5解析绕过漏洞
    • nginx
      • 基线检查
    • tomcat
      • 基线检查
  • 编程语言
    • C
    • Java
      • webshell
        • 查杀Java web filter型内存马
        • Filter/Servlet型内存马的扫描抓捕与查杀
        • 基于内存 Webshell 的无文件攻击技术研究
        • 基于tomcat的内存 Webshell 无文件攻击技术
        • Tomcat 内存马检测
      • 代码审计
      • 代码审计指南
      • 浅析Java命令执行
      • 相关框架简介及漏洞
    • PHP
      • 代码审计
      • 破解DVWA-admin密码
      • webshell
        • 常见php一句话webshell解析
        • PHP Webshell Hidden Learning
        • Webshell免杀研究
        • Webshell那些事-攻击篇
        • 过D盾webshell分享
      • 相关框架简介及漏洞
    • python
      • 安全编码规范-代码审计
      • 编码规范
      • fishc
      • 某教程涉及脚本
      • POC编写相关
      • python秘籍
        • 上半部分
        • 下半部分
      • 安全方面的内容
        • Python Opcode逃逸笔记
        • 虚拟机逃逸
      • with-EXCEL
      • 相关框架简介及漏洞
      • 源码剖析
        • 多线程和GIL锁
        • Set容器
        • 统一内存管理
        • 信号处理机制
        • 循环垃圾回收器
        • 字符串对象PyStringObject
        • 整数对象PyIntObject
        • 字节码和虚拟机
    • 汇编
    • Javascript
      • Tampermonkey Script
  • AIGC
    • howtouse
  • 网络
    • CCNA
  • 漏洞类型及讲解
    • 综合
    • 技术分享
      • 暴力破解与信息泄露
      • 信息泄露漏洞_java
      • sqli-with-java
      • python远程命令执行与SSRF
    • SQL-Injectoin
    • Cross-Site Scripting
      • 跨站的艺术-XSS入门与介绍
      • 跨站的艺术-XSS Fuzzing 的技巧
      • 给开发者的终极XSS防护备忘录
      • AngularJS特性的 XSS
    • 文件操作
      • 文件包含
  • how-to-use
    • Acunetix(AWVS)
      • 安装到使用
      • 编写AWVS脚本探测web services
      • 简单分析-web方面
      • 流量分析特征
    • burpsuite
      • 导出报告方式
      • captcha-killer
      • FAKE-IP
      • JSFind
      • 编写插件绕过WAF
    • Cobalt Strike
      • Cobalt Strike Powershell过360+Defender上线
    • FOFA
    • GDB
    • PowerSh
      • 获得Powershell命令的历史记录
      • 深入分析PowerShell的两面性
      • 内网渗透利器之PowerSploit
      • PoC:滥用PowerShell Core
      • 如何绕过PowerShell访问限制并实现PowerShell代码执行
      • 工具包
      • 无powershell运行powershell方法总结
    • sheji
    • sqlmap
      • Atlas修改SQLMap tampers 绕过WAF/IDS/IPS
      • 内核分析
      • 检测剖析
      • tamper
      • UDF
      • --os-shell
      • sqlmapapi
      • with burp
      • 网络特征
    • Matlab
    • Metasploit
      • 与Powershell
    • NESSUS
      • 流量分析特征
      • Untitled
    • Network MapTools
      • 流量特征修改
      • 识别主机指纹
    • waf
      • ngx-lua-waf
      • modsecurity
由 GitBook 提供支持
在本页
  • 1、shell编程的作用
  • 2、C JAVA PYTHON shell执行方式对比
  • 3、bash中调用python expect
  • 4、shell特性
  • 1、shell是什么
  • 2、Linux支持的shell
  • 3、GNU/bash shell 特点
  • 4、5、6、7、8、9、10、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 26、
  • 27、
  • 28、
  • 29、
  • 30、

这有帮助吗?

  1. 操作系统
  2. Linux

SHELL编程

1、shell编程的作用

  1. 自动化系统初始化(update,软件安装,时区统一设置,安全策略统一设置)

  2. 自动化批量软件部署程序(LAMP,LNMP,TOMCAT,LVS,BGINX等)

  3. 管理应用程序(KVM,集群管理扩容,MySQL的管理程序等)

  4. 日志分析处理程序(PV量,UV,200返回的数量,非200返回的情况等),其中常用的有 top 100,grep,awk等

  5. 编写自动化的备份/恢复程序(MySQL完全备份/增量备份)

  6. 自动化管理程序(批量远程修改密码,软件升级,配置更新)

  7. 自动化信息采集及监控程序(收集系统/应用的状态信息,CPU,MEM,DISK,NET,APACHE,TCP Status,MYSQL)

  8. 自动化扩容(增加云主机→业务上线)例如:zabbix监控CPU80%+python API增加云主机+shell脚本上线服务

  9. 配合ZABBIX信息采集

  10. 打印各种图形,通过键盘操控的小游戏等

  11. 相关算法的实现以及排序的实现

  12. 理论上讲,shell可以做任何事,一切取决于需求

注意:

shell语法难度可能只有java等的二十分之一,其中所用到的工具的各种指令只有各软件的管理命令

2、C JAVA PYTHON shell执行方式对比

一个简单的shell程序:

# ping01.sh

#!/usr/bin/bash
ping -c1 qq.com &>/dev/null && echo "its up" || echo "its down"

脚本中:

  1. `#!/usr/bin/bash`代表了指定解析程序的脚本,声明解释器。不同的程序要使用不同的解释器去处理,且解释器只能在第一行

  2. &>/dev/null:将命令的输出信息输出到NULL中,其中的&为混合输出,输出的是正确输出与错误输出

  3. ;表示的是排序

  4. &&会表示逻辑判断,and,只有前一个命令的$?==0,后面的命令才会执行

  5. ||表示或者的意思,如果不为真,那么||后面的命令执行

.sh脚本执行方式:

bash xx.sh
sh xx.sh

各种程序的解释器:

bash:
#!/usr/bin/bash
#!/usr/bin/sh

python:
#!/usr/bin/python

C:    


java:
#!/usr/bin/java

Perl:
#!/usr/bin/Perl

expect:
#!/usr/bin/expect

其中,C语言的程序执行速度是最快的。

原因:

  1. C语言进行编译后,会形成二进制机器码,可以被CPU直接执行

  2. 程序是由逻辑与数据组成的

  3. shell程序是解释型执行,shell不需要事先编译的,执行时只是解释执行,使用bash解释,执行时才考虑其中的逻辑关系

  4. C语言程序在执行时已经是编译好的,不需要考虑逻辑关系

  5. JAVA编译后为字节码(中间码),只能被java的虚拟机JDK执行(TOMCAT,HADOOP)

  6. python执行方式:

    1. 编译执行:编译为python的字节码,由python虚拟机执行

    2. 解释执行:/usr/bin/python ,python最多使用的,是解释执行

编译性语言的缺点:灵活性较低 解释性语言可以直接修改源代码,然后直接执行,不需要编译

每个命令执行都有一个返回值,返回值是一个特殊的变量,变量是问号变量。%?表示引用它的值

变量名

含义

作用

$?

问号变量

返回上一条命令的执行结果,0为正常,127为错误

3、bash中调用python expect

# ping01.sh

#!/usr/bin/bash
ping -c1 qq.com &>/dev/null && echo "its up" || echo "its down"

/usr/bin/python <<-EOF
print("hello python")
EOF

echo "hello bash"

其中:

  1. /usr/bin/bash <<-EOF XXX EOF (EXPECT):将中间XXX的代码传递给python执行,即将代码重定向给python执行。同时,也可以在其中继续重定向其他代码

  2. 其中,后面的EOF需要顶头,且EOF只是人们比较习惯的方式

  3. 可在EXPECT中传递BASH代码执行,只有BASH中才能识别EOF的结构

示例程序如下:

#!/usr/bin/bash
cd /home
ls

程序执行结果不同的原因:

  1. 上面的方式是子shell页面执行

  2. 下面的是在当前的shell中执行

  3. 大部分的程序都是在子shell中执行的

  4. 若要定义变量的东西在当前shell中生效,可用当前shell执行

示例:重定义/root/.bashrc文件

## 执行顺序:

vim /root/.bashrc
i
alias yang='ls -l'
:wq
. /root/.bashrc
yang

## 事后记得改回来

4、shell特性

1、shell是什么

命令解释器,能在shell下运行的命令就是shell命令

2、Linux支持的shell

查看对shell有影响的文件:

login shell    #需要登录的shell
nologin shell    #不登录的shell

su命令的区别:

su - XXX    #login shell,对应文件如下:

/etc/profile 
/etc/bashrc    
~/.bash_profile
~/.bashrc

su XXX    #nologin shell,对应文件如下:

~/.bash_logout
~/.bash_history

## 与shell有关的文件

#系统级
/etc/profile    #登录时执行
/etc/bashrc    

# 用户级
~/.bash_profile
~/.bashrc
~/.bash_logout    #在离开shell的时候执行
~/.bash_history    

3、GNU/bash shell 特点

1、命令和文件自动补齐:作用,可提高效率

2、命令历史记忆功能

1、上下键

3、别名功能

alias
unalias cp
~username/.bashrc
\cp -rf /etc/hosts

4、快捷键

ctrl+R    #调出之前的命令
ctrl+D    #退出logon
ctrl+A    #将光标移动到命令最左面
ctrl+E    #将光标移动到命令最右面
ctrl+K    #删除光标后面的命令
ctrl+U    #删除光标前面的命令
ctrl+S    #将屏幕锁住
ctrl+Q    #取消锁屏
ctrl+Y    #粘贴消除掉的字符

5、前后台控制作业

符号

用法

详情

&

sleep 10 &

使得进程在后台运行,即使退出终端,依然运行

nohup

nohup sleep 10 &

使得进程在后台运行,即使退出终端,依然运行

screen

screen -s

命名会话

Ctrl+C

杀掉前台进程

Ctrl+Z

杀掉后台进程

jobs

查看后台进程

bg

让进程在后台工作

fg

让进程在前台工作,可与 Ctrl+Z 一起用

kill %3 kill 3

(当前会话中作业号为3)

(给PID为3的进程发信号)

6、输入输出重定向

0,1,2 > >> 2> 2>> 2>&1 &>

/*
0:标准输入,描述符的名称,对应的是键盘
1:键盘
2:屏幕
>:输出重定向
>>:输出重定向,与上区别在于两者覆盖度的问题
2>:错误输出
2>>:追加
2>&1:描述符2的内容重定向到描述符1
&>:混合输出
*/

cat < /etc/hosts

/*
将文件/etc/hosts作为参数定向到了cat中

简单的copy命令:
cat </etc/hosts >/etc/hosts1
# 将hosts内容复制到hosts1中

*/

cat <<EOF

/*
将手动输入的内容传给命令去执行
*/

cat >file1 <<EOF

/*
将输入传递到文件中,适合传递多行到文件
*/

7、管道

管道的作用:将一个命令的输出当做下一段的输入

ip addr | grep 'inet' | grep eth0

## tee管道:可将输出覆盖到文件中,-a可以增加
ip addr | grep 'inet' |tee test | grep eth0  覆盖
ip addr | grep 'inet' |tee -a test | grep eth0 追加
## '/$':分区
df | grep '/$'
df | tee df.txt | grep '/$'

grub-md5-crypt
grub-md5-crypt >> /etc/grub.conf
grub-md5-crypt |tee -a /etc/grub.conf

8、命令排序

; 不具备逻辑

9、10、11、12、13、14、15、16、17、18、

4、5、6、7、8、9、10、

5、

6、

7、

8、

9、

10、

11、

12、

13、

14、

15、

16、

17、

18、

19、

20、

21、

22、

23、

24、

25、

26、

27、

28、

29、

30、

上一页基线检查下一页实战技能

最后更新于4年前

这有帮助吗?

脚本及命令运行结果
运行结果
EOF示例
程序的执行方式
被修改的.bashrc文件
执行结果
!number
!string:显示使用过带l的命令
!$:显示上条命令的最后参数
!!:上一条命令
ctrl+R
cat < /etc/hosts
EOF
tee管道示例
回到家目录并弹出光驱