- 博客(39)
- 资源 (6)
- 收藏
- 关注
原创 去除DLL库ASLR后,其加载基址仍然变化
在项目中,遇到一个问题,就是去除了某个DLL库的 ASLR后,其动态加载的基址仍然会发生变化。在此记录一下自己的解决思路。0x1去除一个程序或者 DLL的 ASLR的方法,根据他人所述和自己的亲自实践。发现只有 去除 程序和 DLL 库的 PE 文件中 OptionalHeader 头中的 DllCharacteristic 数据中的 0x004 标志位 即可。网上其余所说的 方法:修改注册表,修改Windows Exploit Protection 等方法,经过尝试都无法去除 AS
2020-05-28 17:30:08 894
原创 基于gmssl实现国密证书签发验证
本次实现的系统为 Linux环境,在Windows下的 gmssl 安装应该也差不多,所以环境影响不大。1.根CA的生成系统建立CA时,需要先在离线状态下建立一个根CA。根CA所需要的文件夹有certs(证书文件夹)、crl(吊销数据文件夹)、newcerts(新生成的证书文件夹)、private(私有数据文件夹)。同时还需要在本地生成数据记录文件index.txt,用以记录对证书的操作,...
2020-02-03 12:53:04 4119
转载 PLT表和GOT表
GOT表和PLT表在程序中的作用非常巨大,接下来的讲解希望大家可以仔细看看我们用一个非常简单的例子来讲解,代码如下:图1然后我们编译我们直接 gdb./a.out 来进行反编译处理,然后通过disas main查看main函数中的反编译代码如下:图3我们可以观察到 gets@plt 和 puts@plt 这两个函数,为什么后面加了个 @plt ,因为这个为 PLT ...
2019-08-31 14:25:42 1266
转载 Openssl创建SSL证书
SSL证书作用指纹:hash(指纹算法)过后的证书信息,用来保证证书信息完整性,防止黑客篡改。hash是单向的,只能通过内容生成hash值,不能反推签名:通过非对称加密算法和其私钥(CA私钥)对指纹加密,形成签名。浏览器验证证书:通过公钥(这个公钥并不是证书中的公钥,证书中的公钥是服务器提供的公钥,这里的是CA的公钥)解密签名,然后用同样的的指纹算法hash证书信息,最后验证是否和指纹相同...
2019-08-27 13:23:47 739
原创 插桩工具
DynamoRIO:设计架构:组件运转流程: DynamoRIO框架在操作系统和应用程序之间,构成一个中间层。在该中间层中DynamoRIO将CPU的寄存器做一份完整的镜像,并以此为被测程序构造出一份虚拟的上下文。在DynamoRIO框架下运行着的程序都会使用这份模拟出来的运行时上下文,同时通过DynamoRIO中的上下文切换模块代码即被投入运行之前在真实的宿主...
2019-08-22 21:56:13 5130 2
原创 Windows异常处理机制
1.异常分类: 异常是CPU或者程序发生的某种错误,异常处理就是异常产生之后Windows对于产生的错误的一段处理程序。异常分为硬件异常和软件异常。1.1 硬件异常 硬件异常是由CPU发现的异常,比如说除零异常、内存访问异常,经常看到的错误信息类似于“0xXXXXXX指令引用的0xXXXXX内存,该内存不能为read”等。硬件异常可以分为三种:fault,在处...
2019-08-22 21:49:22 2389 1
原创 (十) 循环神经网络
1 循环神经网络简介 循环神经网络为了刻画一个序列当前的输出与之前信息的隐藏层之间存在连接,隐藏层的输入来自于输入层的数据以及上一时刻隐藏层的输出。这样的结构使得循环神经网络会对之前的信息有所记忆,同时利用之前的信息影响后面节点的输出,所以循环神经网络不需要分别学习句子每个位置的所有语言特征规则。 如图展示了循环神经网络的一种典型结构,相比之前的网络,循环神经网...
2019-08-22 18:26:11 552
原创 (九) TensorFlow实现VGGNet卷积网络模型
1 模型介绍 VGGNet是2014年 ILSVRC 图像分类竞赛的第二名,其 top-5错误率为 7.3%, 拥有 140M的参数量。相比于该年的第一名 Google的 GoogleNet模型,该模型拥有更强的泛化性,能够适应多种场景应用。2 模型结构 VGGNet对卷积神经网络的深度与其性能之间的关系进行了探索,网络结构非常简洁。在整个网络中全部使用了大小相同...
2019-08-14 20:00:38 459
原创 (八) TensorFlow实现AlexNet 卷积网络模型
1 模型介绍 AlexNet包含 6 亿 3000万个左右的连接,参数的数量有6000万左右,神经元单元的数量有大概65万个。卷积层的数量有5个,池化层的数量有3个,全连层有3个,最后一个全连层的单元数量为 1000个,用于完成对ImageNet数据集中的图片完成1000分类。2 模型结构 第一段卷积(conv1)中,AlexNet使用96个11*11卷积...
2019-08-14 11:08:03 354
原创 (七)TensorFlow实现卷积神经网络——LeNet-5
1 模型结构 LeNet-5是一个专为手写数字识别而设计的最经典的卷积神经网络,由Yann LeCun教授于1998年提出。 第一层:INPUT层输入的是32*32分辨率的黑白图像; 第二层:C1层是一个卷积层,由6个特征图(Feature Map)组成,这个卷积层的卷积核尺寸为5*5,深度为6,没有使用全0填充且步长为1,所以得到的每个特征图...
2019-08-13 12:35:32 1113
原创 CVE-2009-0927漏洞分析
1 CVE-2009-0927简介 Adobe Reader 是非常流行的 PDF 文件阅读器,在其 Collab 对象的 getIcon()函数中存在一 个缓冲区溢出漏洞。同时由于 PDF 文档中支持内嵌的 JavaScript,攻击者可以通过在 PDF 文档 中植入恶意的JavaScript来向getIcon()函数传递特制的参数以触发溢出漏洞,并结合Heap Spray 攻...
2019-08-09 17:22:36 2185
原创 CVE-2012-0774 Adobe Reader TrueType 字体整数溢出漏洞
1 前言 本文是根据《漏洞战争:软件漏洞分析精要》一书中的4.4节中内容所复现,只是在此记录下自己动手实践过程中的问题与收获。2 基于条件记录断点的漏洞分析方法 本次漏洞分析测试环境如下: 使用环境 备注 操作系统 Windows7 调试器 Immunity Debugger 版本号:1.8.3 反汇编...
2019-08-06 15:14:34 457
原创 (六)TensorFlow实现卷积神经网络
卷积运算具有3个重要特性:稀疏连接,参数共享和等变表示,卷积层通过这些特性来改善机器学习系统,1 卷积运算的稀疏连接 在全连接神经网络中,参数矩阵的每一个参数全部并且仅仅描述了一个输入单元与一个输出单元间的交互关系。这样做当输入的数据增多时,参数的数量也会变得巨大。 卷积运算具有稀疏连接(Sparse Connectivity)的特性。这通过将...
2019-08-02 14:32:54 403
原创 (五)TensorFlow实现MNIST全连接神经网络实践
1 MNSIT数据集 MNIST是一个非常简单的手写体数字识别数据集,由70000张 28*28像素的黑白图片组成。在进行神经网络模型的设计前,需要先获取这个数据集,Yann LeCun(深度学习的一个大牛)教授的网站 http://yann.lecun.com/exdb/mnist给出了数据集的下载。我们在该网站下载4个压缩包,其中 t10k 开头的压缩包是测试集,train开头的压...
2019-08-01 19:02:36 715 1
原创 (四)优化网络的方法
一般神经网络的训练过程可分为两个阶段:第一阶段先通过前向传播算法计算得到预测值,并将预测值和真实值做对比,得出两者之间的距离;第二个阶段,通过反向传播算法计算损失函数对每一个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数。1. 基于梯度的优化 基于梯度的优化就是优化一个函数的最终取值,假设 x 是函数的输入参数,J(x) 是需要优化的函数,则基于梯度的优化就是...
2019-08-01 14:50:37 1613
原创 深度前馈神经网络
1 网络前馈方式 前馈神经网络是前向的,即模型的输出与模型本身之间并不存在连接,也就不构成反馈。例如对于分类器功能MLP,假设其输入为 x ,输出满足 函数 y= f(x),信息从输入的 x 经过定义的功能函数 f, 最终到达输出 y ,在这个过程中 f 以及 x 并没有因为 y 的取值而受到任何的影响。 函数 y = f(x) 可以被表示为多个函数复合形式,分别用一个...
2019-07-31 16:12:53 758
原创 TensorFlow编程策略
1 计算图与张量 TensorFlow程序中的计算过程可以表示为一个计算图(Computation Graph, 也可称为有向图(Directed Graph)),其作用与外观都可类比为程序流程图。 张量是在边中流动的数据,其数据类型可以在编程时事先定义,也可根据计算图中的上下文来推断。2 计算图——TensorFlow的计算模型 计算图的作用可以类比为程序...
2019-07-31 14:49:59 315
原创 深度学习理论及编程学习
为了督促自己学习,并且夯实学习的内容,接下来会记录自己学习的深度学习的每一重要知识及理论。所参考的学习书籍: 《机器学习》 ——周志华 《Tensorflow深度学习算法原理与编程实战》 ——蒋子阳 两本书籍,第一本是我非常推崇的南大周志华教授所著,全书对机器学习理论进行了深入浅出的讲解,偏向理论介绍,需要较深厚的数学功底(可能...
2019-07-30 15:27:35 315
原创 条件竞争漏洞
条件竞争:系统中,最小的运算调度单位是线程,而每个线程又依附于一个进程,条件竞争则是多进程 或多线程对一个共享资源操作,因为操作顺序 不受控的时候所产生的问题。进程:进程是为了更好的利用CPU的资源;进程是系统进行资源分配和调度的一个独立单位;每个进程都有自己的独立内存空间,不同进程 通过进程间通信来通信;由于进程比较重要,占据独立的内存,所以上 下文进程间的切换开销(栈、寄存器、虚拟内 存、...
2018-12-17 18:27:14 4434
原创 安卓安全
ARM模式和Thumb模式之间的切换,需要修 改Thumb标志位: 在ARM模式下可以使用BX(Branch and Exchange)指令和BLX(Branch, Link and Exchange)指令来将Thumb标识位置1,从而从 ARM模式切换到Thumb模式。 BX指令和BLX的指令的区别在于,BX除了切换状 态之后,只完成了一个指令跳转的功能(相当于 JMP指...
2018-12-17 14:58:38 443
原创 堆漏洞
1.堆结构介绍堆是供程序使用的虚拟空间之一 程序未运行时,并不知道需要多少的虚拟空间 来运行程序。 在程序运行过程中,往往伴随着大量申请和释 放内存的操作,为了更好的管理内存空间的使 用和提高程序运行效率,需要专门对内存进行 管理。常见的内存管理库有: tcmalloc:谷歌开源的内存管理库jemalloc:FreeBSD开发人员所开发ptmalloc&...
2018-11-19 18:34:15 1992
原创 整数溢出漏洞和格式化字符串漏洞
漏洞成因:在计算机中,整数类型分为无符号整数和有符号整数 两种。有符号整数会在最高位用0表示正数,1表示负 数,而无符号整数则没有这种规则。常见的整数类型有8位(单字节字符类型、布尔类型)、 16位(短整型)、32位(长整型)等。当一个整数存入了比它本身小的存储空间中,超出了 数据类型所能表示的范围时,就会发生整数溢出。1. 基础知识整数数据类型 数据类型 :...
2018-10-29 15:00:15 6609
原创 覆盖关键变量劫持控制流
程序中的关键变量: 栈中的关键变量: ebp, ret_addr 虚函数指针:子类对父类的继承 能够对函数进行重写 由虚函数表来进行操作原理 :虚函数是一种C++中的函数,使用virtual进行定义,用于 实现C++的多态性,即将接口和实现区分开来,对于不同 的类采用不同的方式实现同一个方法。如果一个父类A中声明了一个方法,效果是输出字符A, 其继承类B中...
2018-10-29 13:42:27 569
原创 栈溢出漏洞
1.基础知识函数与函数栈栈是一种先进后出的特殊数据结构,用于存储 程序在运行时的临时数据和地址,用于支撑函 数的运行和嵌套调用。栈的分配是由程序编译时确定下来的,无法由 程序员控制。栈中存储着线程或者进程的局部变量不同的进程或线程的栈处于不同的位置,在程 序正常运行时不同线程和进程之间不能互相访 问彼此的栈地址函数传递参数:函数都要通过传递进去的参数来确...
2018-10-22 15:16:51 2308
原创 Pwntools使用介绍
pwntools是一个用python编写的CTF pwn题exploit编写工具,目的是为了帮助 使用者更高效便捷地编写exploit。 目前最新稳定版本为3.12.0(2018年5月 )。文档地址:docs.pwntools.com。一、环境变量设置Pwntools的许多设置都是通过全局变量context进行控制的,例如系统、架构、字节序等都可以通过如下的方法更改:>>...
2018-10-18 20:10:55 7984
原创 Shellcode 开发关键技术
1. 位置代码无关性技术定义:位置无关代码(PIC)是指不适用硬编码地址来寻址指令或数据的代码。必要性:因为Shellcode被加载到内存地址执行时,指令的内存地址是不确定的。2.如何获取Shellcode起始位置Shellcode在以位置无关方式访问时,首先需要引用一个 基址指针,用该基址指针加上或减去一定的偏移,从而顺利 的访问shellcode中包含的数据。 Shel...
2018-10-15 14:58:19 1339
原创 PHP将数据库查询内容转换为JSON格式且显示中文
最近写android,开始写服务器了。最终服务器的语言就先定为PHP,因为以前写过一阵子网页,所以就先用PHP试试水。那么首先为了实现android前端与服务器交互,那么我们服务器传输的数据就要先变为JSON格式。那么如何将数据库中的内容查询出来,并且使其转变为JSON格式呢?代码如下:if(isset($_GET["userid"])){ $userid=$_GET["us...
2018-09-18 15:44:57 1752
原创 Android使用Okhttp3报错java.net.UnknownServiceException
今天使用OkHttp库开发安卓网络编程这一块。然后,先尝试一个简单的获取服务器XML数据,然后进行解析,代码如下:private void requestXml(){ new Thread(new Runnable() { @Override public void run() { try{...
2018-09-16 20:20:06 5246 2
原创 Windows10开启FTP
1. 首先 开启服务 win+x 选择 设置 -----> 搜索框中输入 控制面板 后回车 -----> 点击 程序 -----> 选择 启用或关闭Windows功能 -----> 找到 Intenet Information Services -----> 勾选 FTP服务 所有内容以及 Web管理工具 下的 IIS 管理控制台 确定之后会安装...
2018-09-16 18:38:16 18057
原创 XSS训练
最近发现了几个专门训练XSS的网站,我在这方面还是弱项,决定把这几个网站的题都刷一遍,然后写一写WP,也算是增强记忆和理解吧,我找的几个网站如下:https://xss.haozi.me/#/0x04http://xss-quiz.int21h.jp/首先我会记忆一下第一个网站的题目:前三题都较简单,从第四题说起:0x03我们看一下网站代码,发现他是过滤了 圆括号。...
2018-09-02 18:07:11 1598 1
原创 BugKu Web进阶
哇,总算做到进阶题目来了,希望我这个菜鸡还可以多做几道题吧!加油phpcmsV9看到这个题目,看起来是一个已经存在的漏洞,赶快搜一搜,结果,还真有这个漏洞,然后大致看了一下。但是这个网页是不是太简陋了,感觉没有什么注入点呀。好吧,还是 扫描器扫一扫。 结果发现了 robots.txt, 看一下,结果就没有结果了。当然,这里好像是因为这道题靶机被人破坏了吧,我进入这道题的主页...
2018-08-25 16:34:06 2153
原创 BugKu Web WriteUp
Web 8这道题的代码和前面的文件包含写的思路一样, 我们都是运用 php://input 写,来实现我们从文件中读出的数据和我们传入的数据一样。 我写的如下: 只要保证 $ac 的值 和我们写入文件 $fn 的值 一样即可, 我这里都写的是 123细心这道题刚开始看到主页之后,又看了源代码和抓了包,发现都没有什么特别的地方,所以,只有拿御剑扫描一下后台。...
2018-08-24 18:59:46 2250
原创 BugKu Web WP
变量1这道题要好好说一下,因为以前不太知道这个套路。我们来看看源码:这个代码最重要的两部分:一是 正则匹配,对我们输入的进行检查。 二是 var_dump($$args) 这句代码。我们可以想到 如果我们的 $args 的值 刚好是 这个php代码中的一个变量名称,那么我们 是不是就可以通过 $$args 将这个变量打印出来了。例如:那么接下来,我们就该想到,我...
2018-08-23 12:23:40 572
原创 Pwnable.tw WP
Pwnable.tw start我们分析上图程序的汇编代码:上图中的第一个方框,其实是将 : Let's start the CTF: 这句字符串压进栈;第二个方框:其实是 system_write()函数, 参数中 fd =1, 说明是标准输出,也就是将 字符串打印输出在屏幕上;第三个方框: 其实 标准输入函数,允许输入的长度是 3ch 也就是 60个字节; 但是buffe...
2018-08-18 10:51:23 893
转载 解决Android Studio3.1.2 主 module 引用不到依赖module 里的依赖库
这几天使用 环信的 easeui库,但是依赖之后一直 原module一直不能使用 easeui中的 方法, 一直debug,花费5天时间, 总算找到了问题。写这篇 博文,真的提醒一下自己,和给其他和我有一样问题的同学一点帮助。以下转自 cc_wentian 的博文,万分感谢博主。AS更新到 3.1.2 , AS3.1.2比以前检测更多,由于是老项目,出现N多警告 进去...
2018-08-14 11:57:41 4473 3
原创 Pwnable.kr WP
近期,开始将以前做的CTF的题目,全部整理一遍,写个WP,也是为了督促自己,还需要学的东西还有很多。Pwnable.kr fd 我们首先看到这道题的C源码:需要得到flag,则需要执行system("/bin/cat flag");则 必须 buf = "LETMEWIN"。read(fd, buf, 32)函数中的三个参数中:fd == 0时:则表示标准输入;...
2018-08-13 10:11:04 960
原创 AES学习总结
一、AES密码体制背景随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和VincentRijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在...
2018-06-16 21:00:06 2914
原创 椭圆曲线公钥密码学习
一、密码背景基于有限域上离散对数问题的公钥密码体制,最著名的是ElGamal体制,是由T. ElGamal在1985年提出的 ElGamal有较好的安全性,同一明文在不同时刻会产生不同的密文应用广泛,尤其数字签名方面的应用,著明的美国数字签名标准DSS就是ElGamal的一种变形。二、加解密算法加密过程:(1)A将明文消息编码成一个数m&l...
2018-06-16 20:54:59 5451
原创 RSA算法学习
一、 RSA密码体制背景以前的加密都是对称性加密(Symmetric-key algorithm),即加密规则和解密规则相同。这种加密最大的缺点就是对应的规则需要告诉其他人,否则无法解密。保存和传递这个规则是个难题。1974年瑞夫·墨克(Ralph C. Merkle)提出了一种新的构想:可以公开加密规则,然后可以在不传递解密规则的情况下完成解密。1976年惠特菲尔德·迪菲(BaileyWhitf...
2018-06-16 20:46:14 1360
XMan-MISC-诸葛建伟XCTF-public.pdf
2017-12-04
CTF 入门指导教程
2017-12-04
Linux命令集合
2017-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人