CFB加密模式的python实现
CFB加密模式的python实现python代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273from typing import Tupledef encrypt_des_cfb(key, iv, plaintext): # 将密钥和初始化向量转换为位数组 key_bits = bytes_to_bits(key) iv_bits = bytes_to_bits(iv) # 生成DES加密器对象 cipher = DES(key_bits) # 将初始化向量加密得到第一个密文块 ciphertext = cipher.encrypt(iv_bits) # 循环加密明文的每个字节 for i in range(len(plaintext)): # 将密文块的前8位与明文的当前字节进行异或运算得到 ...
CC++改变终端输出字体的颜色(Linux)
C/C++改变终端输出字体的颜色(Linux)例子:
123456//输出红色的hello world!#include <stdio.h>int main() { printf("\033[31mhello world!\033[0m"); return 0}
ASCII编码中的八进制数字033代表ESC,这是非打印字符,属于控制字符。ASCII码表对他的解释是——换码(溢出),其实这是一个屏幕控制码,是由ASCII码驱动支持的一系列用来控制终端的控制码,如:控制显示颜色、闪烁、发出声音等。(Linux下的GNU和Bash支持用\e代替\033)
格式:
1printf("\033[属性1;属性2;属性3m;有颜色的输出");
控制码如下:
\033[0m 清除所有格式(结束格式,如果格式范围结束,需要在结束为止添加此控制码来结束上一个格式,否则后续终端输入或输出都会沿用此格式)
\033[1m 设置文字颜色亮度,变亮
\033[2m 设置文字颜色亮度,变暗
\033[3m ...
CANARY爆破
CANARY爆破题解题目文件在那位大佬的博客里有链接,是这个:
[点击打开链接](https://github.com/Hcamael/CTF_repo/tree/master/NJCTF 2017/pwn150(messager))
0x0001拿到这个题之后首先看出是一个 elf 文件,拖到我的kali里面,用 binwalk 查看一下:
一个64位的文件,静态反汇编IDA
0x0002搜索字符串之后锁定在了main函数
看完main函数之后,大致有了认识,这个程序创建了socket连接,并且监听5555端口的信息。含有最初的对v7赋值以及最后一步的检测。因为有了fork()函数,
里面含涉及到几个比较重要的函数:
第十行的sub_400B76():
这个函数可以告诉我们,正常情况下在题目文件当前目录下有一个文件名为 “flag” 的文件,推测我们最重要获得的flag就在里面,引文这是在自己的电脑上做这个题,所以自己赶紧在题目文件旁边新建一个flag文件(没有这个文件题目无法运行)。
还有最后返回的是fd这个文件指针,指向的是unk_602160这个空间,点进去看 ...
C++等pwn的换libc库的方法
C++等pwn的换libc库的方法前言关于这个是我在打2023年的四川省赛的时候线下因为不会换libc,导致exp是能通的,但是在调libc的偏移的时候耗费了太多时间导致丢分
如何修改对于c++的libc库也就是比c语言的库,多了几个C++的链接库罢了,并且会使用到该libc.so.6,就将对应的所以的链接库给改为那个版本即可
下面是一个C++的题需要的某些库文件,用ldd列出来即可
于是先把libc.so.6 替换掉,然后替换掉libm.so.6等等
但是值得注意的是,并不是说它链接的是哪个就去替换哪个
可以看到这个libstdc++.so.6最后是转到libstdc++.so.6.0.28的,于是我们需要去替换这个库就行
libc.so.6也是这样的
下面给出一个脚本,去修改下关联数组即可,最后再用 –set-interpreter 替换运行库即可
123456789101112131415161718192021222324252627282930313233343536373839404142#!/bin/bash# 设置可执行文件的路径executable_file=& ...
C#语言入门
C#语言入门前言为了方便自己学习C#逆向,于是专门学习了一下C#的语法
C#C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。
C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。
C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
C# 程序结构一个 C# 程序主要包括以下部分:
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
C# 文件的后缀为 .cs
以下创建一个 test.cs 文件,文件包含了可以打印出 “Hello World” 的简单代码:
test.cs 文件代码:12345678910111213using System;namespace HelloWorldApplication{ cl ...
BROP原理及利用
BROP原理及利用基本介绍BROP(Blind ROP) 于 2014 年由 Standford 的 Andrea Bittau 提出,其相关研究成果发表在 Oakland 2014,其论文题目是 Hacking Blind,下面是作者对应的 paper 和 slides, 以及作者相应的介绍
paper
slide
BROP 是没有对应应用程序的源代码或者二进制文件下,对程序进行攻击,劫持程序的执行流。
攻击条件
源程序必须存在栈溢出漏洞,以便于攻击者可以控制程序流程。
服务器端的进程在崩溃之后会重新启动,并且重新启动的进程的地址与先前的地址一样(这也就是说即使程序有 ASLR 保护,但是其只是在程序最初启动的时候有效果)。目前 nginx, MySQL, Apache, OpenSSH 等服务器应用都是符合这种特性的。
攻击原理目前,大部分应用都会开启 ASLR、NX、Canary 保护。这里我们分别讲解在 BROP 中如何绕过这些保护,以及如何进行攻击。
基本思路在 BROP 中,基本的遵循的思路如下
判断栈溢出长度
暴力枚举
Stack Reading
获取栈上的数 ...
BP 误差反向传播法数学知识
BP 误差反向传播法数学知识前言在学习李宏毅老师的机器学学习的前两节课的时候,学到了关于机器学习的多层感知机的知识,也就是深度学习,想到了前面学习的BP误差反向传播我没理解其中的数学办法,于是有了这篇笔记
反向传播算法我们知道其实多层感知机算法也就是通过构造函数,然后算构造函数得到的预期值和实际值的差值去不断优化函数,直到找到一个函数能够去最好的处理这个问题,也是就李宏毅老师说的,深度学习其实就是looking for Function
构造函数在前面学习linear model的时候(也就是线性模型)我们寻找的函数是$y=b+ax_1$这种,但是由于无论我构建多少层这样的函数,最后的结果也只能是一个直线,我们实际上的模型中是需要线性和曲线的。
于是诞生出了Piecewise Linear model,我们可以通过下图来理解什么是piecewise Linear,我们可以通过将线1+线2+线3+线0+常量得到一个折线。
[我们寻找的函数是$y=b+ax_1$这种,但是由于无论我构建多少层这样的函数,最后的结果也只能是一个直线,我们实际上的模型中是需要线性和曲线的。
于是诞生出了Piecewise Linear model,我们可以通过下图来理解什么是piecewise Linear,我们可以通过将线1+线2+线3+线0+常量得到一个折线。
我们将形如线1,2,3的线称作RELU,我们还可以使用$y=c\frac{1}{1+e^{-(b+wx_1)}}$这样的算式来近似RELU,我们叫 ...
BLECTF低功耗蓝牙CTF change
BLECTF:低功耗蓝牙CTF change前言环境配置需要的设备
esp32(含有wifi和蓝牙模块的板子)
CSR4.0(外接蓝牙模块)
这里需要注意的是esp32的设备需要用好一点的连接线才可以连接成功,有时候连接不成功可能是连接线的问题
https://blog.csdn.net/qq_40589912/article/details/108301290
下载ESPtools可以直接通过apt-get安装,但是可能会存在包不对的情况,之类的
1sudo apt-get install esptool
也可以直接下载github库
1git clone https://github.com/espressif/esptool
烧录BLECTF根据这个教程去烧录
https://github.com/hackgnar/ble_ctf/blob/master/docs/setup.md
首先下载blectf
1git clone https://github.com/hackgnar/ble_ctf.git
然后进入blectf目录
1cd ble_ctf
最后直接烧录(我 ...
awd出题笔记
awd出题笔记前言第一次出线下的pwnAWD,记录一下,以后留给学弟什么的学习一下。
CTFpwn环境搭建其实和出线上赛是一样的,注意加一下setvbuf设置一下缓冲流就行了。
搭建pwn题目环境的时候,可以先本地测试一下
1socat tcp-l:888 , frok exec:./pwn
上面的命令可以用来实现本地的监听端口,这样在写check脚本的时候会比较方便
端口问题在写docker脚本的时候,记得在dockerfile上加上EXPOSE port 用来开放端口,否则会出现无法nc的情况。当然,如果用的是服务器的话,记得服务器端也要开启对应防火墙设置。
build 镜像时 无法交互式设置时区如果你搭建的环境是基于unbuntu18.04之后的镜像的话,需要手动设置时区,因为18.04后面就没有默认时区了,需要在Dockerfile 开头(FROM后面)加上
12ARG DEBIAN_FRONTEND=noninteractiveENV TZ=Asia/Shanghai
pwn编译gcc开关保护在编译pwn文件的时候,需要设置pwn的保护,于是总结了一下保护的相关参数
12 ...