Ls、cd、cat、more、tail、cp、rm、top、ps、grep、ifconfig、netstat、awk、sort、fdisk、mount、dmesg、find、whereis.Echo、vi
这些是Linux系统中的常见命令,它们各自有不同的用途:
- ls:列出目录内容,可以显示文件和目录的信息。
- cd:改变当前工作目录,允许你在文件系统中导航。
- cat:显示或合并文件内容,常用于查看文本文件。
- more:分页显示文件内容,适合查看大型文件。
- tail:显示文件的末尾部分,通常用于监控日志文件。
- cp:复制文件或目录。
- rm:删除文件或目录(使用时需谨慎)。
- top:显示当前系统的进程状态和资源使用情况,实时更新。
- ps:显示当前运行的进程信息。
- grep:在文件中搜索匹配特定模式的行。
- ifconfig:配置和显示网络接口信息。
- netstat:显示网络连接、路由表、接口统计信息等。
- awk:强大的文本处理工具,可以处理行和字段。
- sort:对文件中的行进行排序。
- fdisk:磁盘分区管理工具,用于创建、删除和修改分区。
- mount:挂载文件系统,使你可以访问存储设备上的数据。
- dmesg:显示内核消息,常用于启动过程中的错误诊断。
- find:查找文件系统中的文件或目录,基于各种条件。
- whereis:查找命令、源代码或手册页的位置。
- echo:输出字符串到标准输出或文件,常用于脚本中。
- vi:一个强大的文本编辑器,用于创建和修改文本文件。
这些命令是Linux系统管理员和用户的日常工作中不可或缺的工具。
查找 百度的子域名 去掉/前面的东西用^这个符号
sort -u 就是去掉重复的
就全部出来了
碰到有url的加密 ,使用urlencode -d
如何写shell脚本
基本语法
1. 注释
- 单行注释使用
#
开头。
# 这是一条注释
2. 变量
- 定义变量时,不需要声明类型,直接赋值即可。
- 使用变量时,需要在变量名前加
$
符号。
name="John"
echo $name
3. 命令替换
- 使用反引号
`
或$()
包围命令,可以将命令的输出作为值赋给变量。
currentTime=`date`
currentTime=$(date)
4. 条件判断
- 使用
if
语句进行条件判断。
if [ condition ]; then
# commands
elif [ another_condition ]; then
# more commands
else
# even more commands
fi
5. 循环
for
循环。
for i in {1..5}; do
echo $i
done
while
循环。
count=1
while [ $count -le 5 ]; do
echo $count
count=$((count + 1))
done
6. 函数
- 定义函数。
function_name() {
# function body
}
- 调用函数。
function_name
进阶技巧
1. 数组
- 定义数组。
array=(item1 item2 item3)
- 访问数组元素。
echo ${array[0]}
2. 字符串操作
- 字符串长度。
str="Hello, World!"
echo ${#str}
- 子字符串。
substr=${str:7:5}
echo $substr
3. 正则表达式
- 使用
grep
、sed
、awk
等工具处理正则表达式。
# 使用grep匹配文本
echo "Hello, World!" | grep -o '[A-Za-z]*'
4. 文件操作
- 检查文件是否存在。
if [ -e filename ]; then
echo "File exists"
fi
- 读取文件内容。
while IFS= read -r line; do
echo "$line"
done < filename
5. 调试脚本
- 使用
set -x
开启调试模式。
#!/bin/bash
set -x
echo "Debugging mode on"
6. 信号处理
- 使用
trap
命令捕捉信号。
#!/bin/bash
trap 'echo "Signal caught"' SIGINT
sleep 10
7. 脚本参数
- 使用
$1
,$2
, ... 访问脚本参数。
#!/bin/bash
echo "First argument: $1"
echo "Second argument: $2"
8. 环境变量
- 设置环境变量。
export VARNAME=value
- 使用环境变量。
echo $VARNAME
这些是Shell脚本的一些基本和进阶语法。编写复杂的脚本时,你可能还需要了解更多的概念和技术,如管道、重定向、进程控制等。不断实践和学习将帮助你成为一名熟练的Shell脚本开发者。
题外话
写一个burp插件
编写Burp Suite插件使用Python,你需要借助于Burp Suite的Extender API,特别是其对Java和Python交互的支持功能。从Burp Suite 2.0开始,它原生支持Python插件开发。以下是一个简单的指南,介绍如何开始编写一个基本的Python Burp插件。
准备工作
- 安装Jython: 因为Burp Suite是用Java编写的,它通过Jython(Python的Java实现)来运行Python插件。确保你已经安装了Jython。你可以从Jython官网下载并安装适合你系统的版本。
- 设置Burp Suite: 确保你的Burp Suite版本支持Python插件。打开Burp Suite,进入“Extender”标签页,点击“Options”,确保“Python environment”已被正确设置,并且路径指向你的Jython安装目录。
- 创建Python插件: 创建一个新的Python文件,比如
my_burp_plugin.py
。这个文件将包含你的插件逻辑。
编写基本插件
下面是一个非常基础的示例插件,该插件简单地打印出通过Burp Suite发送的所有HTTP请求的URL。
1from burp import IBurpExtender, IHttpListener
2
3class BurpExtender(IBurpExtender, IHttpListener):
4
5 def registerExtenderCallbacks(self, callbacks):
6 # 获取Burp提供的回调对象
7 self._callbacks = callbacks
8 self._helpers = callbacks.getHelpers()
9
10 # 设置插件名
11 self._callbacks.setExtensionName("My Simple Python Burp Plugin")
12
13 # 注册为HTTP监听器
14 callbacks.registerHttpListener(self)
15
16 def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
17 if messageIsRequest:
18 # 解码HTTP请求
19 request = self._helpers.analyzeRequest(messageInfo)
20 url = request.getUrl().toString()
21 print(f"[{toolFlag}] Request to: {url}")
部署插件
- 打包插件: 将你的Python脚本放在一个Burp Suite可以识别的目录下。通常,你可以直接在Burp Suite的Extender -> Options界面指定或添加Python插件的目录。
- 加载插件: 在Burp Suite的Extender标签页,点击“Add”按钮,然后从列表中选择你刚刚创建的
.py
文件。如果一切配置正确,你的插件应该会被加载并开始工作。
注意事项
- 确保熟悉Burp Suite的API文档,了解如何使用
IBurpExtender
,IHttpListener
等接口。 - 开发复杂插件时,你可能需要处理更多细节,比如处理响应、动态修改请求、构建UI等。
- 考虑到性能和兼容性,对于高性能需求的插件,Java可能仍然是首选。
编写Burp插件是一个实践性很强的过程,随着实践经验的积累,你会逐渐掌握更多高级功能的开发技巧。