02 2020 档案
摘要:前言:Mysql 任意读取客户端文件笔记 参考文章:https://www.lorexxar.cn/2020/01/14/css-mysql-chain/ #load data infile load data infile "/etc/passwd" into table test FIELDS
阅读全文
posted @ 2020-02-29 19:58
zpchcbd
摘要:1、系统命令执行函数的黑名单绕过 system() shell_exec() === ``反引号 exec() passthru() popen() proc_open() pcntl_exec() dl() // 加载自定义 php 扩展,5.3以后被废弃 include include int
阅读全文
posted @ 2020-02-29 00:57
zpchcbd
摘要:利用场景:后台存在添加管理员的功能,如下: 进行抓包观察,发现成功抓包 那么为了防止类似的CSRF攻击的话,肯定需要进行防御措施: 1、验证请求是否token合法 2、判断请求的来源是否合法 token验证: 重新进行抓包,如下,发现添加成功 如果删除token的话再次测试,添加失败 判断请求的来源
阅读全文
posted @ 2020-02-27 20:08
zpchcbd
摘要:该函数php5.5以上版本已经废除! 功能 : 函数执行一个正则表达式的搜索和替换 定义 : 搜索 中匹配 的部分, 如果匹配成功以 进行替换 需要注意的是:当 存在 模式修正符,会将替换完的字符作为代码进行执行 例子1: 这里需要知道的 的含义,实际上是正则表达式中的反向引用, 为转义,实际上就是
阅读全文
posted @ 2020-02-27 18:44
zpchcbd
摘要:#include<windows.h> #include<stdio.h> #define FILEPATH "C:\\Documents and Settings\\Administrator\\桌面\\PE练习素材\\练习素材\\NOTEPAD.EXE" LPVOID ReadPEFile(LP
阅读全文
posted @ 2020-02-27 15:55
zpchcbd
摘要:相对布局显而易见的特征就是:控件之间是按 相对位置 来进行确定的 可以发现显著的特征就是: 1、每个控件的对齐方式的属性都是基于布局/控件进行对齐的 2、每个控件的 属性的大小也是基于布局来进行设置的!
阅读全文
posted @ 2020-02-25 20:10
zpchcbd
摘要:自己尝试去不用指针的方式写,但是好像发现类不能作为参数,而且也没找到能不能判断类是否存在的函数,所以还是用了指针!
阅读全文
posted @ 2020-02-24 01:24
zpchcbd
摘要:#拷贝构造函数调用时机 C++中拷贝构造函数调用时机通常有三种情况: 1、使用一个已经创建完毕的对象来初始化一个新对象 2、值传递的方式给函数参数传值 3、以值方式返回局部对象 说是调用时机,自己就认为是什么情况下会进行拷贝这么操作来记忆就好了! 示例: #include<iostream> #in
阅读全文
posted @ 2020-02-23 18:39
zpchcbd
摘要:多态中virtual的工作原理 正常实现多态的代码 #include "stdafx.h" class Base{ public: virtual HowVirtual(){ printf("the Base virtual"); } }; class Son:public Base{ public
阅读全文
posted @ 2020-02-22 20:22
zpchcbd
摘要:前言:作为指针数组和数组指针的学习 #指针数组 ##第一种写法 代码如下: #include<stdio.h> int main(){ //指针数组 char arr[3][10] = { "aaaaa", "bbbbb", "ccccc" }; printf("%s",arr[1]); } 反汇编
阅读全文
posted @ 2020-02-21 15:34
zpchcbd
摘要:1、 ,需要手动在结尾添'\0,反汇编如下 可以发现进行地址处理的时候都是通过ebp来 间接赋值的 ,不需要去依赖任何的东西,只需要有EBP寄存器作为参照物!在shellcode中利用也起到一部分的作用! 2、 ,编译器会自动帮忙结尾添'\0',反汇编如下 可以明显发现与上面的写法的区别, 是存储在
阅读全文
posted @ 2020-02-21 00:44
zpchcbd
摘要:实现的功能:两层函数调用,外层函数的传入的两个参数再传到子函数中相加,实现四个数相加返回 进入00401005 CALL 进入0040100A
阅读全文
posted @ 2020-02-20 19:57
zpchcbd
摘要:参考文章:https://blog.csdn.net/apollon_krj/article/details/77370452 #重定位表的作用: 小知识:一般每个系统自带的dll,比如kernel32.dll等,为了不造成imagebase的相同,每个系统dll加载都有个固定的高地址空间,一般地址
阅读全文
posted @ 2020-02-18 21:55
zpchcbd
摘要:参考文章:https://blog.csdn.net/chenlycly/article/details/53378427 #什么是导入表: 百度百科:Import Address Table 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中. 当P
阅读全文
posted @ 2020-02-18 11:59
zpchcbd
摘要:#知识点: 1、exe程序一般只有导入表,但并不是一定,有可能也有导出表 2、dll程序一般导出表和导入表都有 一个可执行程序是由一堆PE文件构成的! 如下图可解释: 我加载的是一个.exe,但是后面还有需要的.dll文件,大家都知道.dll也有PE文件,这里也就又有一个问题了,为什么要引入这么多的
阅读全文
posted @ 2020-02-17 21:39
zpchcbd
摘要:节表:总大小占IMAGE_SECTION_HEADER结构体(40字节) * 节的数量(大小取决于节的数量) 结构体为如下: typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //当前节的名称 , 占
阅读全文
posted @ 2020-02-17 15:30
zpchcbd
摘要:新增节后,需要修改以下信息 1、添加一个新节,可以复制一份,最好是拥有可执行属性的节,如.text 2、在节表区,新增节的后面,填充一个节,用零填充 3、修改标准PE头中NumberOfSections中节的数量,我这里原来5个,现在6个了 4、修改SizeOfImage的大小,这里自己新增了0x1
阅读全文
posted @ 2020-02-16 23:21
zpchcbd
摘要:适用条件:有的时候空白区不够需要进行扩大节 以对最后一个节扩大0x1000为例子: 为什么要扩大最后一个节呢?如果扩大最后的一个节之前的话,那么相对于当前扩大的节后面也会相应的变化,节表中每个节数据的信息都要相对应的纠正,相对比较繁琐! 扩大节其实很简单,修改节数据对齐后的大小就可以了,并且在PE文
阅读全文
posted @ 2020-02-16 23:13
zpchcbd
摘要:实现流程: 1、在具有可执行属性的文件中进行写入相对应的shellcode,写入shellcode的时候需要先查看是否文件对齐和内存对齐一致,如果不一致那需要先转换,如果一致就可以直接在空白的地址上进行填写! 2、填写完shellcode之后,最后的跳转要跳回原程序的入口地址,所以还需要更改跳转到原
阅读全文
posted @ 2020-02-16 16:06
zpchcbd
摘要:#全局变量有无初始值的区别: 没有初始值:PE文件在文件中的状态的时候不会对该变量的地址进行存储,只有在内存中运行的时候的状态才会进行分配 有初始值:PE文件在文件中的状态的时候会对该变量的地址进行存储 #什么是VA、RVA、FOA VA:英文全称是Virual Address,简称VA,中文意思是
阅读全文
posted @ 2020-02-15 15:51
zpchcbd
摘要:PE文件头: 分为三部分: 1、PE文件头标识 2、PE文件表头 3、可扩展文件表头 1、PE文件头标识: 没啥好讲的,就4个字节,但是不能修改,作为标识使用! 2、标准文件头:占20个字节,是一个 结构体 关于该结构体中的 成员的每个位上的代表含义如下: 3、可扩展文件表头:在x64系统中占0xF
阅读全文
posted @ 2020-02-15 12:21
zpchcbd
摘要:DOS头部分分为两个部分: 1、DOS MZ头 2、DOS块 1、DOS MZ头是一个 结构体,其大小占64个字节 该结构体是给16位的程序看的,现在的程序都是运行在x32 x64系统上! 但是有两个例外 和 ,这两个成员必须存在 并且不可以改 :WORD类型,操作利用利用这个来进行识别 :LONG
阅读全文
posted @ 2020-02-15 12:20
zpchcbd
摘要:通过https://www.cnblogs.com/zpchcbd/p/12308184.html的介绍 大家也知道了节数据跟节数据之间,都是根据文件对齐存放的 PE文件有两种状态,一种是在硬盘中的状态,一种是在内存中的状态,上篇文章讲的都是硬盘中存放的时候的状态 例如下图: 在文件中我们的对齐是按
阅读全文
posted @ 2020-02-15 10:47
zpchcbd
摘要:介绍:Microsoft连接管理器配置文件安装程序(CMSTP.exe)是用于安装连接管理器服务配置文件的命令行程序。 第一点:CMSTP.exe接受安装信息文件(INF)作为参数,并安装用于远程访问连接的服务配置文件。 相对的应用:攻击者可能会向CMSTP.exe提供感染了恶意命令的INF文件,也
阅读全文
posted @ 2020-02-14 23:27
zpchcbd
摘要:可执行文件:可以由操作系统进行加载执行的文件 在Windows平台中若要程序可执行,必须遵守可执行文件的格式 可执行文件的格式: Windows平台:PE(Portable Executable)文件结构,其中Portable也就是Windows系统中能够跨平台运行 Linux平台:ELF(Exec
阅读全文
posted @ 2020-02-14 17:24
zpchcbd
摘要:前言:比起ESP寻址的方式,EBP需要去理解下其中的含义,所以记录下! 个人理解: 1、EBP和ESP之间的关系 汇编体现:
阅读全文
posted @ 2020-02-14 14:25
zpchcbd
摘要:前言:欺骗单步步过F8导致程序跑飞的笔记 #单步步过跑飞的原理 我们这里说的跑飞就是在调试器中调试的时候为什么有时候在CALL F8的时候就会导致程序跑飞的现象 首先需要知道的一点就是F8单步步过CALL的简单实现,实际上是调试器会在CALL+5个字节,也就是调试器会帮你在CALL XXXX的地址的
阅读全文
posted @ 2020-02-13 20:31
zpchcbd
摘要:1、内存中的堆栈使用是先从 高位的地址 到 低位的地址 使用、存储的。 2、堆栈使用的时候,最后需要进行堆栈平衡,也就是去平衡ESP中寄存器存储的值 3、ESP寄存器中存储的值对应的就是当前堆栈使用的位置 4、如果当前的压入的堆栈数据(不是通过push指令)后面不需要的话,一般就是在sub esp,
阅读全文
posted @ 2020-02-13 17:08
zpchcbd
摘要:比较简单,都作下记录吧! 数据存储存放的位置:寄存器、内存 形式一:立即数 形式二:[寄存器] 形式三:[寄存器+立即数] 形式四:[寄存器+寄存器 {1,2,4,8}] 形式五:[寄存器+寄存器 {1,2,4,8}+立即数]
阅读全文
posted @ 2020-02-13 15:06
zpchcbd
摘要:char类型 在内存中的机器码为 如果超过能够存储的字节呢? 比如: 存放模式为小端模式,结果如下存储 int类型 在内存中的机器码为 ,后面的值被填充为 如果超过能够存储的字节大小呢? 那么就是与上面同理!
阅读全文
posted @ 2020-02-12 22:50
zpchcbd
摘要:小端存储:数据的低字节存储在低地址上。 大端存储:数据的低字节存储在高地址上。 比如一个int数据a=0x00020301=131841 如果是小端存放,那么内存中数据顺序为: 00000000 00000010 00000011 00000001 高地址 低地址 如果是大端存放,那么内存中数据顺序
阅读全文
posted @ 2020-02-12 20:27
zpchcbd
摘要:窗口子类化:是创建一个新的窗口函数代替原来的窗口函数。 简单说来,子类化是靠拦截Windows系统中的某些消息来自己进行处理。 自己实现的是子类化一个编辑框,对编辑框输入的内容进行限制 只允许0~9、空格、一个点 定义一个CEditDemo头文件 CEditDemo的源文件:
阅读全文
posted @ 2020-02-12 18:12
zpchcbd
摘要:``` In case of successful injection you will get a specially crafted image, which should be uploaded again. Since the most straightforward injection method is used, the following problems can occur: 1...
阅读全文
posted @ 2020-02-12 13:56
zpchcbd
摘要:前言:ICMP隧道/通信数据包学习 参考文章:https://github.com/inquisb/icmpsh/ 参考文章:https://forum.butian.net/index.php/share/3864 参考文章:https://github.com/shadow1ng/fscan i
阅读全文
posted @ 2020-02-11 22:28
zpchcbd
摘要:**DNS服务:**采用服务器/客户端(C/S)的方式工作。当客户端程序要通过一个主机名称访问网络中的一台主机时,它首先需要得到这个主机名称所对应的IP地址,此时就需要用到DNS,来进行域名转换为网络地址的作用 进行DNS服务查询之前,会先进行系统DNS缓存 > HOSTS文件,然后会请求 DNS服
阅读全文
posted @ 2020-02-11 00:31
zpchcbd
摘要:前言:浏览器访问网站的总流程笔记 主机A打开浏览器进行访问www.baidu.com的流程如下: **第一步:**主机A访问www.baidu.com,那么肯定需要知道www.baidu.com的IP地址,原来肯定是不知道的 第二步:找的优先级是先系统DNS缓存 > HOSTS文件 > DNS服务,
阅读全文
posted @ 2020-02-10 23:18
zpchcbd
摘要:前言:记录关于传输层TCP协议的四次挥手 参考文章:https://www.jianshu.com/p/ca64764e4a26 参考文章:https://www.cnblogs.com/zpchcbd/p/12291007.html 有关TCP标志位Flags SYN标志:建立连接的请求标志位 A
阅读全文
posted @ 2020-02-10 16:21
zpchcbd
摘要:前言:记录关于传输层TCP协议的三次握手 TCP的简单了解 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。 TCP工作在网络OSI的七层模型中的第四层,对应的也就是传输层 数据从应用层发下来,会在每一层
阅读全文
posted @ 2020-02-10 15:02
zpchcbd
摘要:前言:ICMP协议学习笔记 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。 ICMP作为IP的上层协议在工作,如下图可以看出来 默认ping 发4个请求报文,接收到4个应答报文,总共8条 ICMP报文结构: 前14个字节为以太网帧头 后20个字节为IP帧
阅读全文
posted @ 2020-02-09 23:05
zpchcbd
摘要:学习: 1、对于IP的转换 2、MAC地址的转换 IN_ADDR结构:表示IPv4地址 typedef struct in_addr { union { struct { UCHAR s_b1; UCHAR s_b2; UCHAR s_b3; UCHAR s_b4; } S_un_b; struct
阅读全文
posted @ 2020-02-09 22:29
zpchcbd
摘要:ARP (Address Resolution Protocol)即 地址解析协议 , 用于实现从 IP地址 到 MAC地址 的映射,即实现通过 目标IP 找到对应的 MAC地址 。 在网络通信中, 主机和主机通信 的数据包需要 依据OSI模型从上到下进行数据封装 ,当数据封装完整后,再向外发出。所
阅读全文
posted @ 2020-02-09 19:33
zpchcbd
摘要:窗口最大/小/正常化操作: 消息: 窗口关闭 两种方法都可以 窗口大小位置调动: 两种方法: ps:如果位置要居中直接 窗口置顶: 加载应用程序图标: OnInitDialog中编写:
阅读全文
posted @ 2020-02-08 14:38
zpchcbd
摘要:``` /* D:\Visual_Studio_repos\MFC\7\ */ /*插入*/ void CMy7Dlg::OnBnClickedButton1() { /* 逻辑顺序: 1、利用GetSelectedItem函数获取被选中的节点 2、if判断是否有节点选中,如果没有的话创建一个HTREEITEM结构体作为节点进行插入 3、插入的顺序为 hInsertAfter = TVI_LAST
阅读全文
posted @ 2020-02-08 11:36
zpchcbd
摘要:```/*D:\Visual_Studio_repos\MFC\6*/ m_list.ModifyStyle(LVS_TYPEMASK, LVS_REPORT); m_list.InsertColumn(0, _T("这是第一列"), LVCFMT_LEFT, 120); m_list.InsertColumn(0, _T("这是第二列"), LVCFMT_LEFT, 120); cImageLa...
阅读全文
posted @ 2020-02-07 23:32
zpchcbd
摘要:滚动条 实现的结构体为: 进度条和定时器:
阅读全文
posted @ 2020-02-07 15:37
zpchcbd
摘要:``` /* D:\Visual_Studio_repos\MFC\3\ */ void CMy3Dlg::OnBnClickedButton1() { CString mString; //得到文本框的内容 GetDlgItemText(IDC_EDIT_1,mString); //设置Combo组合框 mCombo.AddString(mString); //默认选中Combo新增的内容 mC
阅读全文
posted @ 2020-02-07 14:13
zpchcbd
摘要:``` /* D:\Visual_Studio_repos\MFC\1\ */ void CtestDlg::OnBnClickedButton1() { wchar_t a1[12], a2[12], a3[12]; //方法一 GetWindowText //GetDlgItem(IDC_EDIT_1)->GetWindowText(a1,12); //GetDlgItem(IDC_EDIT_
阅读全文
posted @ 2020-02-06 21:46
zpchcbd
摘要:``` /* 逻辑顺序: 1、判断字符长度 2、根据字符长度进行FOR循环,来遍历每一个字符 3、对每个字符都进行判断 条件为:单字符是否大于十进制127 是的话那么为中文字符 4、大于的话那么为UNICODE那么i++ 代表字符串长度为1但是字节大小为2,不大于则不加,代表字符串长度为1字节大小为1 */ void CtestDlg::OnBnClickedButton1() { CString
阅读全文
posted @ 2020-02-06 18:54
zpchcbd
摘要:CDC类定义的是设备上下文对象的类。 为了特定用途,Microsoft基本类库提供了几个CDC派生类。 CPaintDC 包括BeginPaint和EndPaint调用,用于客户区域画图(应用程序除了标题栏部分),只能在 OnPaint 处理程序 CClientDC 管理窗口用户区对应的显示上下文,
阅读全文
posted @ 2020-02-06 16:14
zpchcbd
摘要:前言: MFC后面底层运行的讲解理解不了,所以自己就直接先去学实际利用方面的了,以后自己想看再试着补上 创建MFC窗口需要用来的类: CWinApp是一个基类 ,你通过它来继承Windows应用程序对象。应用程序对象为你提供了初始化应用程序(以及它的每一个实例)和运行应用程序所需的成员函数。 每个使
阅读全文
posted @ 2020-02-05 19:00
zpchcbd
摘要:远程DLL注入:适用于代码量大且复杂的情况 远程DLL注入:需要先把注入代码放入某个DLL文件,再将整个DLL文件注入目标进程。DLL代码中使用的所有数据位于DLL的数据区域,整个DLL插入目标进程时,代码和数据是共存于内存,因而代码能够正常执行。 远程代码注入:适用于代码量少且简单的情况。 远程代
阅读全文
posted @ 2020-02-04 22:19
zpchcbd
摘要:远程线程: 远程线程注入 : OD调试: 1、用OD附加被注入的进程 2、在代码 ,我这里显示的是如下 OD中数据窗口跟随 ,显示如下 此时注入程序已经走过了 ,到了 代码段 继续走完,然后OD F9一次,让被注入的进程跑起来,打开加载的模块窗口,发现模块中加载了 ,线程注入成功 shellcode
阅读全文
posted @ 2020-02-04 14:39
zpchcbd
摘要:代码实现的功能: 通过 把虚拟内存映射到物理页上,使其两方进程读取同一物理页,同样能够实现节省资源的功能 实例代码: 内存映射文件:自己的理解就是将文件与映射到物理内存中,然后再通过虚拟内存映射到物理页中,实现进程来操作文件 写拷贝: :dwDesiredAccess设置为 ,可以达到保护的作用,以
阅读全文
posted @ 2020-02-03 15:59
zpchcbd
摘要:前言:win32申请内存的学习笔记 申请内存只有两种方式: 1、通过VirtualAlloc/VirtualAllocEx 申请的物理内存:Private Memory 私有物理页 2、通过CreateFileMapping映射 申请的共享内存:Mapped Memory 映射共享物理页 #Virt
阅读全文
posted @ 2020-02-03 13:14
zpchcbd
摘要:操作系统有虚拟内存与物理内存的概念。 问题:32位的操作系统中,每个进程有4GB(不是一定)的内存是真实存在的吗? 答:不是,是虚拟内存 问题:32位的操作系统中,每个进程有4GB(不是一定)的内存是物理内存吗? 答:不是,如果每个进程都存在4GB的话,操作系统根本处理不过来 如图:当进程A的0x1
阅读全文
posted @ 2020-02-02 21:07
zpchcbd
摘要:``` #pragma warning(disable:4996) #include #include #include #define HDC_EDIT_1 0x100 #define HDC_BUTTON_1 0x101 #define HDC_BUTTON_2 0x102 //全局变量声明 HINSTANCE hinst; //函数声明 int WINAPI WinMain(HINSTANC
阅读全文
posted @ 2020-02-02 20:50
zpchcbd
摘要:前言:生产者和消费者模式实现线程同步笔记 需要了解的一个小知识点:线程同步 = 线程互斥 + 有序 #事件互斥(windows) #include<Windows.h> #include<stdio.h> HANDLE eve_pro; HANDLE eve_con; int money = 0;
阅读全文
posted @ 2020-02-01 20:29
zpchcbd
摘要:前言:线程互斥的学习笔记,今天重新看了下这篇笔记发现很多需要缺漏的,今天重新写一篇 线程安全问题:当多个线程对同一个全局变量(临界资源)进行操作,并且同时进行读写的操作的时候所引发的数据不统一问题 需要提前知道的几个学术上的概念 临界资源:临界资源是一次仅允许一个进程使用的资源称为临界资源 临界区:
阅读全文
posted @ 2020-02-01 19:39
zpchcbd
摘要:正常的多线程实现方式: 用CreateThread创建线程函数不一定需要定义为 类型,并且具有返回值,如下也可以:但是需要注意的是在CreateThread中传参时候需要进行强转为 类型才行 对于以下的三个函数的作用: 在单核CPU的机器中进行多线程运行的时候,一个单核执行多个任务。假如有10个任务
阅读全文
posted @ 2020-02-01 14:33
zpchcbd

浙公网安备 33010602011771号