python密码学
字符、字节与数字的相互转换在诸如 RSA 的现代密码系统中,加密和解密的底层都是纯粹的数学运算。这就要求我们在加密前,必须将由字符组成的“文本消息”转换为“数字”;解密后,再将“数字”还原回“文本消息”。
以下是实现这些转换的核心流程与 Python 原生/第三方方法总结:
1. 基础转换:字符 $\leftrightarrow$ ASCII 序数用于单个字符与其对应的 ASCII 数值之间的转换。
chr(整数):ASCII 序数 $\rightarrow$ 字符。
_示例_:chr(65) 结果为 'A'
ord(字符):字符 $\rightarrow$ ASCII 序数(作用与 chr() 相反)。
_示例_:ord('A') 结果为 65
2. 进阶转换:字节流 $\leftrightarrow$ 十六进制 (Hex)在密码学中,数据经常以十六进制字符串或原始字节流(Bytes)的形式呈现。
bytes.fromhex('十六进制字符串'):十六进制 $\rightarrow$ 字节流。
_示例_:bytes. ...
AI攻击方式
提示词注入攻击大语言模型(LLM)的工作机制依赖于接受输入的提示词,这也给了用户“重新训练”系统并使其朝特定方向发展的机会。
核心原理:LLM 往往无法严格区分开发者预设的“系统指令(System Prompt)”与“用户输入的数据(User Input)”。攻击者可以借此通过特定断句、越权指令,直接覆盖或绕过预设的安全规则。
攻击种类与常见手法(怎么实现攻击)越狱 (Jailbreaking)由于我们用输入来训练系统,指令和输入的边界变得模糊。越狱就是输入精心构造的逻辑陷阱或极端前置条件,强制打破(Bypass)开发商的安全审查护栏。
角色扮演:这是一种常见的越狱方法,强迫 AI 接受一个全新、不受限制(例如“DAN”)的人设去执行非法或不道德活动。其深层原理在于: 模型的大多数限制是通过系统指令实现的,当模型带入新角色时,原始的系统指令往往无法传递到新角色上,从而成功脱离规则约束。
编码与混淆绕过:针对 AI 内部的敏感词拦截器(如拦截“木马”),攻击者会改用 Base64、Hex 编码或小语种提问,AI 在解码后往往会忘记进行二次审查。
逻辑拆分:将危险请求拆分为几个看似无 ...
域的内网扫描
1 原则在进行任何渗透测试之前,对目标进行 external reconnaissance 可以带来很多好处。这可以起到多种不同的作用,例如:
验证客户在范围文档中提供的信息
确保在远程工作时,你正在针对正确的范围采取行动
寻找任何公开可访问的信息,这些信息可能会影响你的测试结果,例如泄露的凭证
在外部侦察过程中,有几个关键点是我们需要关注的。这些信息可能并非总是公开可获取,但了解现有情况是明智之举。如果在渗透测试中遇到瓶颈,回顾通过被动侦察可能获取的信息,可以给我们提供继续前进的思路,例如可能用于访问 VPN 或其他外部服务的密码破解数据。下表突出了我们在项目这个阶段需要搜索的“ What ”内容。
Data Point 数据点
Description 描述
IP Space
有效的 ASN 用于我们的目标,组织面向公众的基础设施、云存在和托管提供商使用的网段,DNS 记录条目等。
Domain Information
根据 IP 数据、DNS 和网站注册信息。谁管理该域名?我们的目标是否有任何子域名?是否存在任何公开可访问的域名服务?(邮件服务器、DNS ...
安卓四大组件
认识ActivityActivity 是Android应用程序的四大组件之一,负责管理应用的用户界面。每个Activity组件负责一个用户界面的展示,通常应用中的某一个Activity被指定为主界面,这是应用用户启动时出现的第一个屏幕。
Activity跳转1 概述Activity之间的跳转主要使用
12startActivity(Intent intent);startActivityForResult(Intent intent,int requestCode);
这两个函数,传递数据的话利用Intent进行传递,负责数据需要配合Bundle使用。
2 Activity间跳转2.1 直接跳转这里有两个Activity:FirstActivity与SecondActivity,从FirstActivity中跳转到SecondActivity中只需要一个startActivity()即可:
1startActivity(new Intent(this,SecondActivity.class));
一般需要在SecondActivity中加上finish()函数,表示这个Activi ...
栈溢出
1 检查操作1.1.1 查看程序基本信息file命令作用:查看程序的架构(32位/64位)、链接方式(动态链接/静态链接)、文件格式(ELF)等信息
实操执行:file demo
解读:
ELF 64-bit LSB executable:这是个64位的ELF可执行文件,运行在x86-64上
dynamically linked:这是动态链接库,体积小,主要依赖于外部的系统库
not stripped没有剥离符号表,包含了函数名、变量名等信息
1.1.2 检查保护机制checksec12345678910root@ubuntu-pwn:/learning# checksec demo[*] '/learning/demo' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) SHSTK: Enabled ...
格式化字符串漏洞
简介格式化字符串函数:格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式
函数
基本介绍
printf
输出到 stdout
fprintf
输出到指定 FILE 流
vprintf
根据参数列表格式化输出到stdout
vfprintf
根据参数列表格式化输出到指定 FILE 流
sprintf
输出到字符串
snprintf
输出指定字节数到字符串
vsprintf
根据参数列表格式化输出指定字节到字符串
setproctitle
设置argv
syslog
输出日志
err、verr、warn、vwarn等
…
用 print() 为例,它们的第一个参数就是格式化字符串:”Color %s.Number %d.Float %4.2f“,然后printf函数会根据这个格式化字符串来解析
%d - 十进制-输出十进制整数%s - 字符串-从内存中读取字符串%x - 十六进制-输出十六进制%c - 字符-输出字符%p - 指针-指针地址%n - 到目前为止所写的字符数
参数如下:%[paramete ...
二进制漏洞基础
0.1 堆作用:用于动态分配内存,当我们在程序中使用malloc、calloc、realloc等函数时,分配的内存就来自于堆;当使用free函数时,就是释放堆上的内存
比如char *p=malloc(100);,这句话的意思是从堆上分配100个字符,然后把内存赋值给p 核心特性:堆的地址是由低向高生长的,也就是说,第一次分配堆的内存地址较低,后续不断分配堆内存时,地址会越来越高
1 C语言基础1.1 程序的编译与链接
1.2 可执行文件
广义:文件中的数据是可执行的文件
.out、.exe、.sh、.py
狭义:文件中的数据是机器码中的文件
.out、exe、dll、so1.2.1 可执行文件的分类
Windows:PE
可执行文件
.exe
动态链接库
.dll
静态链接库
.lib
Linux:ELF
可执行文件
.out
动态链接库
.so
静态链接库
.a
2 Linux基础
保护层级:分为四个ring0-ring3
一般来说就两个,0和3
0为内核
3为用户
2.1 权限用户可以分为多个组
文件和目录等的权限一般是三个,可读可写 ...
蓝队监控
Scapy 流量分析1234from scapy.all import *def handelPacker(p): p.show()sinff(prn=handlePacket,count=0)
Watchdog 文件行为Webshell 文件接口检测
横向移动
1 横向移动1.1 windows横向渗透1.1.1 IPC$ 连接(基础款,最常用)原理:IPC$(Inter-Process Communication)是Windows的进程间通信协议,可用于远程连接目标机器,上传文件、执行命令,前提是知道目标机器的用户凭据。
常用命令:IPC是专用管道,可以实现对远程计算机的访问
需要使用目标系统用户的账号密码,使用139、445端口。
建立IPC链接到目标主机
拷贝要执行的命令脚本到目标主机
查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
删除IPC链接123456789101112常用ipc命令总结net use \\192.168.3.32\ipc$ "Admin12345" /user:god.org\administrator #新建连接net use #查看与本机的所有连接net use \\192.168.3.32 /del #删除该连接net use \\server\ipc$ "password" /user:username # 工作组net use \ ...
二进制漏洞工具的准备
pwngdb与GDB查看信息123info functions #查看所有functioninfo variables # 查看所有的可用变量plt #查看外部调用函数
程序运行参数12set args 指定运行时参数 (set args "xxx")show args 查看设置好的运行参数
调试调试过程主要包含四个步骤:
Step 步骤
Description 描述
Break
在各个关键位置设置断点
Examine
运行程序,并检查程序在这些阶段的运行状态。
Step
通过程序来观察它如何响应每个指令以及用户输入的情况。
Modify
在特定的断点处修改特定寄存器或地址中的值,以研究这将如何影响程序的执行过程。
设置断点调试的第一步是设置 breakpoints ,使其在达到特定位置或满足特定条件时停止执行。这样我们可以检查程序在那一刻的状态以及寄存器中存储的值。此外, Breakpoints 还允许我们在该时刻暂停程序的执行,从而可以逐条执行每条指令,观察它们如何改变程序及其中的数值。123break 设置断点,简写 ...







