熟悉kali

简介: 熟悉kali

image.png

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系统管理员和用户的日常工作中不可或缺的工具。

image.png

碰到有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插件是一个实践性很强的过程,随着实践经验的积累,你会逐渐掌握更多高级功能的开发技巧。


目录
打赏
0
2
2
0
50
分享
相关文章
|
9月前
|
docker安装tar包安装
docker安装tar包安装
1505 2
二分算法详解
本文介绍了二分查找及其相关问题的解决方法,包括基本的二分查找、查找元素的第一个和最后一个位置、求平方根、搜索插入位置、寻找峰值和旋转数组中的最小值等问题。通过详细分析每种情况下的二分查找策略,如循环条件、区间划分及特殊情况处理,提供了清晰的代码实现。适用于算法初学者和需要巩固二分查找技巧的开发者。
361 18
二分算法详解
构建你的第一个Python网络爬虫
【9月更文挑战第34天】在数字信息泛滥的时代,快速有效地获取和处理数据成为一项重要技能。本文将引导读者通过Python编写一个简易的网络爬虫,实现自动化地从网页上抓取数据。我们将一步步走过代码的编写过程,并探讨如何避免常见陷阱。无论你是编程新手还是想扩展你的技术工具箱,这篇文章都将为你提供有价值的指导。
169 18
|
9月前
|
解密列表的创建与销毁,以及缓存池长什么样子?
解密列表的创建与销毁,以及缓存池长什么样子?
84 9
|
9月前
|
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
323 20
|
9月前
|
Python 高级编程:高效读取 txt 文件的技巧与实践
在 Python 中,读取 txt 文件是常见操作。本文介绍了使用 `with` 语句自动管理文件资源、逐行读取文件、读取特定字节范围内容、处理编码问题以及使用缓冲读取提高性能等高级方法,确保代码高效且安全。通过这些技巧,你可以更灵活地处理文件内容,并避免资源泄漏等问题。原文链接:https://www.wodianping.com/app/2024-10/44183.html
127 18
Python 高级绘图:探索数据可视化
在Python中,利用matplotlib、seaborn等库可实现数据的可视化。matplotlib功能丰富,支持基础图表绘制;seaborn则提供了更美观的默认样式。此外,matplotlib还支持3D图形及动态图表的生成,满足多样化的数据展示需求。 示例代码展示了如何使用这些库绘制正弦波、散点图、3D曲面图及动态更新的折线图。通过numpy生成数据,并借助matplotlib与seaborn的强大绘图功能,实现数据的直观呈现。
140 17
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
199 11
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问