大创基本知识学习
网络方面第一章TCP/IP是通信协议的统称,协议就如各国的语言,只有相同的协议能互相通信,就好比说着相同的语言
上下层之间进行交互时所遵守的约定叫做“接口”,同一层则叫“协议”。
分层的劣势:过分模块化,使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑问题
OSI模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
OSI协议不是OSI模型,是参考OSI模型确定每个阶层的协议和每个阶层之间接口相关的标准
表示层将数据转换成网络通用的标准数据格式
传输方式分类:面向有连接、面向无连接
分组交换:路由器连接通信线路,路由器收到分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。所以也可以交蓄积交换
MAC地址转发表中所记录的是实际的MAC地址本身,而路由表中记录的IP地址则是集中了之后的网络号,实际的地址转发表与路由控制表中能获取的信息并不是具体的目标地址,而是该数据应该被发送出去的网卡信息
数据链路名
网桥
中继器
路由器
4-7层交换机
网关
第二章TCP/IP:应用层:http、ftp、nfs、ssh、telnet…
传输成:TCP、U ...
大创基本知识学习
网络方面第一章TCP/IP是通信协议的统称,协议就如各国的语言,只有相同的协议能互相通信,就好比说着相同的语言
上下层之间进行交互时所遵守的约定叫做“接口”,同一层则叫“协议”。
分层的劣势:过分模块化,使处理变得更加沉重以及每个模块都不得不实现相似的处理逻辑问题
OSI模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
OSI协议不是OSI模型,是参考OSI模型确定每个阶层的协议和每个阶层之间接口相关的标准
表示层将数据转换成网络通用的标准数据格式
传输方式分类:面向有连接、面向无连接
分组交换:路由器连接通信线路,路由器收到分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。所以也可以交蓄积交换
MAC地址转发表中所记录的是实际的MAC地址本身,而路由表中记录的IP地址则是集中了之后的网络号,实际的地址转发表与路由控制表中能获取的信息并不是具体的目标地址,而是该数据应该被发送出去的网卡信息
数据链路名
网桥
中继器
路由器
4-7层交换机
网关
第二章TCP/IP:应用层:http、ftp、nfs、ssh、telnet…
传输成:TCP、U ...
buu刷题记录
1.luck_guy
123456789s='icug`of'str=list(s)flag ='GXY{do_not_'for i in range(len(str)): if i%2==1: flag+=chr(ord(str[i])-2) else: flag+=chr(ord(str[i])-1)print(flag)
2.Maze
3.Younger-Drive本题有壳upx,脱完之后拖进ida32,老样子,先查看字符串
去看看input flag
交叉引用看看哪里用到了
进入到这个函数看看,反汇编看看伪代码
可以看到这是一个输入函数,是要我们输入对应的flag的,那就看看Source哪里有用到
一个个查看
多线程,对线程的了解不是太熟悉,只能硬靠百度了
这里对Source也就是我们的flag进行了加密,调用了sub_41112C函数
这里就是对加密后的字符串进行比较了,一共30个字符,正确的话就打印出来,那就看看off_418004是什么
现在可以回过头去看看那个创建 ...
C++课程
函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184#include <iostream>#include <cmath> //fo ...
Linux学习
常用Linux命令基本使用
序号
命令
对应英文
作用
01
ls
list
查看当前文件夹下的内容
02
pwd
print wrok directory
查看当前所在文件夹
03
cd [目录名]
change directory
切换文件夹
04
touch [文件名]
touch
如果文件不存在,新建文件
05
mkdr [目录名]
make directory
创建目录
06
rm [文件名]
remove
删除置顶的文件名
07
clear
clear
清屏
小技巧
Ctrl + Shift + = 放大终端窗口的字体显示
Ctrl + - 缩小终端窗口的字体显示
Tab键自动补全
终端命令格式
command [-option] [parameter] 例如:rm 只能删除文件,但rm -r 可以删除文件夹
ls命令说明
Linux文件或者目录名称最长可以有256个字符
以.开头的文件为隐藏文件,需要用-a (all的缩写)参数才能显示
.代表当前目录
..代表上一级目录
-l 以列表方式显示文件的详细信息
-h 配合 - ...
逆向之路
壳的分类
刷题记录新年快乐首先用PEiD查看其大小 是32位 又发现加了壳UPX
在od中打开,脱壳要先找到oep,由于现在的脱壳水平十分菜鸡,于是就一个个f8先运行
把一些死循环跳过,经过漫长的努力后发现了popad
继续f8,跳过jnz死循环,最后进入程序(找到oep)
右键dump一下
dump过后再用ida32打开dump过后的程序
此时已经出现的原有函数,f5查看c伪代码,最终得到flag
flag{HappyNewYear!}
xor首先判断一下,是64位的,然后丢到idapro64打开
按f5查看伪代码
hello worldapk文件,Android逆向,用Androidkiller打开,找到flag
reserve 3查壳后发现无壳,是32位的,用ida打开,shift+f12查看
发现right flag,双击进入
选中aRightFlag,按ctrl+x,再按f5查看伪代码
分析伪代码得知重点在Str2和Destination上,同时从sub_4110BE可以看出这里进行了函数加密,双击sub_4110BE
双击aAbcdefghijklmn ...
浅学汇编
基础知识
汇编指令是机器指令的助记符,同机器指令一一对应。
每一种CPU都有自己的汇编指令集
CPU可以直接使用的信息在存储器中存放
在存储器中指令和数据没有任何区别,都是二进制信息
存储单元从0开始顺序编号
一个存储单元可以存储8个bit,即8位二进制数
每个CPU芯片都有许多管脚,这些管脚和总线项链。也可以说,这些管脚引出总线。一个CPU可以引出三种总线的宽度标志了这个CPU的不同方面的性能
{
地址总线的宽度决定了CPU的寻址能力
数据总线的宽度决定了CPU与其它器件进行数据传送时的一次数据传送量
控制总线的宽度决定了CPU对系统中其它器件的控制能力
}
CPU概述一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。
区别:
内部总线实现CPU和主板上其它器件的联系。
外部总线实现CPU和主板上其它器件的联系。
8086CPU有14个寄存器,他们的名称为:
AX、BX、CX、DS、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW
8086CPU所有寄存器都是16位的,可以存放两个字节。
AX BX CX DX通常用来 ...
CTF逆向实战ichunqiu
入门篇前三在CTF逆向题目或实际软件破解中,常常会碰到.NET家族语言开发的程序,如C#。针对这类程序,使用IDA Pro打开时会额外提供一个选项,即 Microsoft .NET asssembly(微软.NET汇编语言),IDA Pro会将程序翻译为微软中间语言,使用reflector分析。
微软中间语言(MSIL, Microsoft Intermediate Language):也被称作MSIL汇编。虽然微软.NET框架很智能,其实它只认IL。无论程序采用什么高级语言编写,都将被编译器编译为IL并保存在PE文件中。虽被称作汇编,但相比win32汇编语言,IL可谓是名副其实的高级语言:它支持面向对象,通常不直接操作内存地址,以堆栈机的方式运行。由于运行完全受.NET监控,因此IL属于托管(Managed)代码,与之对应的是本机代码,被称为非托管代码。
GUID:
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计 ...
引用&new
new123456789101112131415161718192021222324252627282930313233343536373839//1、new的基本语法int *func(){ //在堆区创建整型数据 //new返回是 该类型的指针 int *p =new int(10); return p;}void test01(){ int *p =func(); cout<<*p<<endl; //堆区的数据 有程序员管理开辟,程序员管理释放 //如果想释放堆区的数据,利用关键字delete delete p;}//2、在堆区利用new开辟数组void text02(){ //创建10整型数据的数组,在堆区 new int[10];//10代表数组有10个元素 int *arr=new[10]; //10代表数组有10个元素 for(int i=0;i<10;i++) { arr[i] ...
通讯录 内存四区
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...











