自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 funcanary[CISCN2023初赛]-爆破canary+pie

根据PIE的保护的特性我们可以知道(请先进行PIE保护的相关学习),地址的后3位是不变的,所以只需要的原先返回地址的基础之上将返回地址的后三位覆盖位system(“/bin/cat flag”)函数调用的地址即可,即为修改为“0x231”(该地址只需要在IDA看偏移地址即可),根据“字符”查找到特殊的字符串“/bin/cat flag”,所以可能存在直接的system(“/bin/cat flag”)函数,通过追踪定位,发现确实存在相应函数。先检查文件的保护以及文件的类型,保护全开,64位程序。

2023-05-29 22:23:04 640

原创 Linux网络编程-Web服务器实践

经过上述对源码进行的修改,成功编译运行了Web服务器。通过对源码的阅读学习,可以知道,静态网页的实现原理是服务端直接读取文件数据发送的客户端(浏览器),使浏览器直接解析出相应的网页。动态网页的实现原理,根据用户的请求执行相应的脚本程序(可执行文件等),输出相应的数据内嵌到写好的html语法中,返回到客户端,使浏览器解析出相应的网页。其中使用到的主要技术是CGI技术,CGI(Common Gateway Interface)是一种用于在 Web 服务器和应用程序之间传递数据的标准协议。

2023-05-07 20:30:48 308

原创 Linux内核防火墙设计与开发——报告版

本次实验主要是针对于防火墙过滤功能的设计,通过在5个检查点NF_INET_PRE_ROUTING、NF_INET_LOCAL_IN、NF_INET_FORWARD、NF_INET_LOCAL_OUT、NF_INET_POST_ROUTING中hook自定义的对数据包的检查函数,即可实现对数据包的检查过滤。注:由于使用的是wsl2子系统的linux,主机pingLinux时,主机的数据包会经过一个网关发送给Linux,Linux的回应数据包也是发送到网关处,故主机的数据包的源地址会被修改为相应的网关地址。

2023-05-07 20:23:41 617

原创 基于Netfilter框架设计的软件防火墙过滤系统

本此的防火墙设计是基于Netfilter框架设计的软件防火墙过滤系统基于学习和实践的目的,本次的防火墙设计主要面向于初学者,简单入门防火墙设计。所以本次只对源IP、目的IP地址、源端口、目的端口以及一些简单协议进行过滤。欢迎大家学习交流,如有不足之处,敬请批评指正!其实到这里,这个基于Netfilter框架设计的软件防火墙过滤系统就已经设计完毕了。啪啪啪啪啪啪!!!!

2023-05-05 11:21:50 947

原创 Linux网络编程之UDP定时广播

在判断出需要发送广播信息的时候读取相应文件的信息内容发送。在本次设计中采用的方式是将需要定时发送的信息放入一个.txt后缀的文件中,将需要发送的时间按标准格式“%Y-%m-%d %H:%M:%S”放在前面,在通过一个制表符“\t”分割时间和需要发送的信息,紧接着写下需要广播发送的数据信息。服务端首先按行读取该txt文件的信息内容,并将每行的信息分成两项,时间字符串转换成time_t格式存储到结构体的time中,信息内容字符串则直接读取的结构体的message中,最后再将结构体存储到一个集合vector中。

2023-04-08 16:46:19 787

原创 Linux网络编程之多线程并发TCP连接

当用户请求上传文件的服务时,由于用户是将一个文件分成多个数据包dataPack分别上传服务器,由于可能无法实现多个线程同时对一个连接描述符进行接收数据包,此处采用的处理是线程接收数据包的过程中,若客户端又发送了另一个数据包,则该线程继续为该客户端提供服务,直至客户端没有连续的数据包发送后,则将该客户端连接描述符从任务队列work_queue中清除。由于每个数据包均记录了数据包的内容所对应的文件,已经对应的内容从文件起始位置的偏移,所以即使由于时延导致数据包不能连续发送,仍不会破坏文件的上传。

2023-03-31 21:07:29 979 1

原创 Linux内核编程Hello World

_init和__initdata告诉内核这些函数和数据只在初始化期间使用,一旦初始化完成,它们就不再需要,从而可以释放掉它们占用的内存,从而提高系统的性能和效率。将函数helloworld_init注册为当前内核模块的初始化函数,当这个内核模块被加载到系统中时,内核会自动调用这个函数来完成其初始化工作。__exit告诉内核这些函数只在模块卸载时使用,一旦模块被卸载,它们就不再需要,从而可以释放掉它们占用的内存,从而提高系统的性能和效率。是一个 Linux 内核模块中的宏,用于声明模块的许可证信息。

2023-03-23 21:59:35 853

原创 WSL2下kernel header的安装

本来正常的linux发行版只要安装就能装上内核头文件,但wsl2作为一个不一般的linux发行版,并没有直接给出安装包,要手动安装才能正常使用。

2023-03-23 19:35:04 1490

原创 Linux网络编程之TCP文件传输

客户端向服务端发送‘download test2.txt’指令,服务端收到‘download test2.txt’指令后,打印指令,并打开resource文件夹中中test2.txt文件,读取文件信息,打包成数据包发送到客户端;读取内容,发现内容为空,故不发送文件内容数据包。客户端向服务端发送‘download test3.txt’指令,服务端收到‘download test3.txt’指令后,打印指令,并打开resource文件夹中中test3.txt文件,读取内容与文件信息,打包成数据包发送到客户端。

2023-03-13 21:57:14 1789 1

原创 Linux编程入门之文件读取和写入

在Linux下编译实现文件的创建、读取、写入、关闭。要求给出源代码、编译命令、运行结果。在Linux环境下编写Hello World程序。要求给出源代码、编译命令、运行结果。

2023-03-13 21:53:30 267

原创 高级语言基础结构的汇编形式

这两个结构都是用某一个变量作为循环结束评判的标准,但是在for结构中比较明显的就是在循环体的末尾,也就是在判断标准之前通常会有一个标准++的操作,也就是常见的i++操作。通过观察汇编代码可以知道,switch结构和其他结构的不同之处在于存在非常多的cmp和jmp以及条件跳转语句,这也是辨认出是switch结构的标志。在do-while结构中是先执行一次循环体的内容,在进行循环结束的判断,这就是do-while结构与while和for的不同之处。while结构和for结构的区别就在于是否有初始化值的过程。

2023-02-14 16:03:15 117

原创 UnPackMe_EZIP1.0——脱壳实验<ESP定理法>

而且在程序中存在两个.text、.rdata、.data区段,应该是加壳人,直接复制了程序的前三个区段,并添加到程序区段的后面。执行指令直至ESP发生改变,即push指令执行之后,跟随ESP地址的数据,设置硬件断点。将存储壳代码、数据和资源的去掉清除就好了,没啥可说,清除也可以,影响不大。这里需要注意的一点就是,在dump文件之前,先删除自己所下的硬件断点;根据程序的入口地址,可以知道程序的入口地址处于后面的.text区段中。可以查看自己下的硬件断点,以及删除自己所下的硬件断点,如下图所示;

2023-02-14 09:43:54 142 1

原创 UnPackMe_CrypKeySDK5.7——脱壳实验<单步跟踪ESP>

我们通过使用ImportREC工具检查进程中的输入表,发现输入表并不存在异常,所以我们可以不用对输入表进行修复,同样不需要重构输入表。dump,就是转存,也就是抓取内存镜像,就是把内存指定地址的映像文件读取出来,然后用文件等形式保存下来!的进程,可能是由于吾爱破解OD是管理员权限执行的程序,可以使用OllyICE替代OD。查看区段,发现程序区段的后面加入了三个名称奇怪的区段,应该是由加壳人添加上去的。因为多余的段肯定是壳的区段,我们将存储壳代码的区段删除掉;修正物理地址和物理大小即可得到可执行的脱壳程序。

2023-02-14 09:41:26 148 1

原创 签个到——DAS_Nov

栈、整数溢出、堆溢出综合运用根据checksec 分析得到程序的结构为amd64位的架构开启保护:Canary、Full Relro、PIE、RWX(说实话我不认识这个保护)NX保护为开启,似乎可以考虑shellcodeida分析中许多函数都已经被我重命名,大家将就着点看就好了通过简单分析程序的main函数之后其实很明显就能看出这是一个Menu菜单题了逆向分析一定得看一下字符串在这里其实我们可以看到有的调用,并且有字串的使用;我们跟踪字符串就可以发现在sub_15BA()这个函数执行了system(“/bi

2022-11-30 09:53:43 51

原创 英招杯 pwn2(ret2shellcode)

由于程序运行时,即输出了输入值s的存放首地址,我们输入的首地址与shellcode之间的距离是0x3c-0x28=0x14,故只需返回s的首地址加上0x14即可;我们分析main函数的时候可以看到栈中的s距离rbp还有一段距离,且程序的NX保护未开启,我们可以考虑写入shellcode在栈中执行。根据图中与rbp的偏移,我们相对比较容易的出var_30对应的变量为v5,var_8对应的变量为v10。在网上我们可以查到相对较短的syscall系统调用的shellcode为23字节,满足我们所需的要求。

2022-11-16 21:02:45 276

原创 英招杯pwn1(字符串格式化漏洞)

第二个参数writes表示需要利用%n写入的数据,采用字典形式,我们要将printf的GOT数改为system函数地址,就写成{printfGOT:systemAddress};可能需要修改8个字节的数据,太麻烦了!即可将puts函数的真实地址泄露出来,即可获得对应的libc版本和基址,方便我们后面的操作;生成随机数代码,通过ctypes包下的cdll来加载libc,这样才能执行libc下的函数。根据地址泄露我们已经能确定对应的libc版本,加载对应的libc,即可获得libc的基址。

2022-11-16 21:00:11 280

原创 ciscn_2019_c_1(ret2libc)

综上,我们可以构造第一段payload为(payload首部加入‘\0’是为了绕过encrypt函数,防止输入的字符串加密而变化,strlen()函数遇‘\0’截止)故我们可以计算加载程序的基址,通过基址和各个函数以及字符串的偏移量可以计算各个函数以及字符串在程序中的地址。通过已经调用过的函数去泄露它在程序中的地址,然后利用地址末尾的3个字节,去找到该程序所用的libc版本;随后我们可以通过得到的libc版本来查询对应字符串或函数的偏移地址,也包括puts函数的偏移地址;

2022-10-08 09:07:34 721

原创 [第五空间2019 决赛]PWN5

由于输入四个地址,对应输出16个字节,也就是将每个地址(即0x804C044~0x804C047)的内容修改为。由于我们将这四个地址(即0x804C044~0x804C047)存储的内容均修改为0x10,所以变量。偏移量为10,所以我们只需要对第10个到第13个参数对应的内容的地址进行修改即可;所以我们可以通过格式化字符串漏洞的任意地址修改更改地址。被存储到了第10个栈参数的位置,所以对应的偏移为10。然后将这4个地址对应的存储位置,通过。将对应地址内容修改为输出的字符个数;读出的4个字节的内容即为。

2022-10-07 10:06:27 221

原创 Ubuntu18.04更换ELF程序的glibc(PWN)

目的是为了解决程序运行的问题,由于低版本的libc无法运行高版本libc的程序。解决PWN方向堆问题的调试问题。简单的做个笔记

2022-10-01 11:30:32 495

原创 Linux-Ubuntu系统换源

将内容注释完毕之后,在文本的后方粘贴刚才我们从阿里云镜像源中找到的Ubuntu18.04的软件软配置文件内容。本次还原的系统为WSL2-Ubuntu18.04,更换源为阿里云的ubuntu18.04的软件源。如果尚未安装vim且没有其他的文本编辑工具和方式的,这边建议先安装vim方便对文本的更改。随后,键盘输入一次“ESC”退出编辑模式,随后输入“:wq”表示保存退出,回车即可。不同的配置文件可从各个镜像源的官网中寻找对应版本的软件源配置文件。图示内容即为我们所需的内容,其他源的内容也有相似的格式。

2022-09-28 21:26:55 2123

原创 HITCON Trainging lab13——CTFwiki

通过off by one溢出修改next chunk的size域来实现overlap,修改指针实现执行system函数,获得系统权限

2022-08-22 12:51:01 1049 1

空空如也

空空如也

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

TA关注的人

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