- 博客(38)
- 收藏
- 关注
原创 基于NVIDIA NIM平台实现盲人过马路的demo(一)
在该系统的设计中,通过利用 NVIDIA 的 NIM 平台提供的大模型支持,我们使用了 llama-3.2-90b-vision-instruct 模型来进行图片检测和识别。在初步的测试中,图像通过摄像头捕获后,转换为 Base64 格式并传输给大模型进行分析,模型会返回对图片内容的描述。以下是具体步骤和细节说明:为了实现图像数据的传输和处理,系统首先加载了基础库(如 os、requests、base64 和 cv2)以及日期和时间模块,用于图像编码、网络请求和时间戳记录。
2024-11-01 22:40:55 423
原创 二进制菜鸟的杂谈-调试与pwn
首先看主调函数:主调函数在初始化的时候 先按照参数调用约定依次入栈:从右到左 随后 将EIP入栈保存主调函数的返回地址:随后在主调函数进入被调函数的时候先把主调函数的ebp压入栈中(注:这里的ebp里的内容是指向主调函数的栈底)push $ebp随后 将被调函数的参数按照调用约定入栈后改变esp的值来开辟空间ebp+ 向上 是主调函数的内容ebp- 向下 是被调函数的内容当结束调用的时候会mov esp ebp让esp指向ebp 开始释放局部变量。
2024-10-24 21:58:54 796
原创 程序员路上的感悟:迈向二进制安全研究员的旅程
在我选择成为一名程序员的那一刻,我便开启了一条充满挑战和机遇的道路。这条路上没有捷径,只有不断的学习与进步。如今,我的目标逐渐明晰:成为一名二进制安全研究员。这个目标对我而言,是技术的巅峰,是一场持久的战斗,需要掌握多方面的知识,包括 C++、汇编、计算机组成原理、操作系统、数据结构、Linux、逆向工程以及脱壳等。每一个领域都是一座山峰,而我正一步步攀登,迎接属于我的技术高峰。
2024-08-21 23:27:50 1061
原创 Secure Coding in C and C ++ (四)局部静态构造函数 虚函数
与构造函数不同,构造函数是在初始化的时候作用的,析构函数是在销毁变量的时候使用的。
2024-08-21 23:23:19 1030
原创 Aseembly(九)-[BX] Loop
怎么说呢.bx其实有点套娃的意思mov ax [0]将地址为ds寄存器,偏移为[0]的值,传入axmov ax [1]这里是偏移为1的值.这里的偏移都是直接写出来的那么[bx]其实也是一样的,只不过给这个偏移取了一个变量.将所有的偏移放入到bx寄存器内.如这里就是将偏移量为bx的存入axloop 其实就是循环然后我们加入进一步的描述符,()表示取括号内的地址的值如:(2000H) 代表的就是2000H处的数值(ax)表示ax中的内容(al)表示al中的内容。
2024-08-20 18:37:19 1056
原创 Aseembly(八)-汇编语言编写程序
在该系列的第六篇文章我们主要讲述了:关于栈的寄存器:SS和SP的问题来回一下:对于栈指针来说,栈在被开辟的时候,首先要通过SS指针去找到开辟栈的地址空间的首地址,随后,SP指针指向该栈空间的末尾的下一个空间处.当执行push指令时,sp会-2 随后将目标压入栈中当执行pop指令时,会先将元素弹出,随后执行sp+2还回顾了关于不同段寄存器的作用:ds与[] 是读取数据cs:ip是去寻找指令而ss:sp与栈空间有关.详情请看我的上一篇文章。
2024-08-20 15:06:55 985
原创 预告-二进制安全学习
在这些完成后,博主将开始更新一些场景下常见的漏洞:UAF、溢出等等漏洞以及linux写下的保护机制(canaries、NX、ASLR等等)还有一些利用方法。接下来博主将为大家更新一下关于intel mips 和arm架构下的知识 以及 一些基本的加解密。
2024-08-20 00:25:00 96
原创 Assembly(六)--寄存器总篇章
我们知道在8086CPU中,用16位寄存器来存放一个字,高8位(H)存放高字节,低8位(:L)存放低字节,在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),因此一个字要用两个连续的内存空间来存储(每个一个字节,共两个字节,16位,每个空间内存8位,1字节),字的低位字节存放在低地址,高位字节存放在高地址.如图所示,不难看出 0,1 两个内存空间所组成的为 20000(4E20H) 其高位字节为4E 存放到1处,低位字节为20H存放到低处0。
2024-08-11 21:40:47 1002
原创 Assembly(五)--寄存器最终章下篇
今天来更新一下寄存器章节的最后一章,在这之前先来回顾下上篇文章的内容:上篇文章中我们学习了:ds寄存器和【】地址对于ds寄存器来说,是存放的段地址,随后【x】根据ds寄存器中的内容进行查找,也学习了N字节地单元和地址单元的概念N地址字单元指的是内存数据的起始位置开始算一个字,也就是两个字节16位的字符,而地址单元是单单的指那么一个另外还学习了内存中字的传送,以及内存中的存放关系,低地址存放低位,高地址存放高位。如mov ax,[0]
2024-08-11 21:38:49 810
原创 Assembly(四)-寄存器最终章-上半部分
上一篇文章我们主要学习了段寄存器:CS和IP顺便通过实验的形式将debug中常用的指令熟悉过了.来回顾下本篇文章将讲解剩余的部分:ds和[]
2024-08-09 21:54:13 748
原创 Assembly-(一)
这对一位逆向工程师和二进制安全工程师是必要的一步 也是不可或缺的一步 本专栏基于王爽老师的汇编语言教材进行汇编语言是这样来进行的
2024-08-05 22:06:49 550
原创 逆向工程(1)-壳
vc6的特点是入口代码是固定的代码 入口调用的api也是相同的,其中有的push地址不同程序可能不同;对于区段来说 有四个。区段:.text .rdata.data.rsrc.reloc比vc6多一个.reloc。程序一般可分为以下几种类型:未加壳、压缩壳、传统加密壳、代码虚拟化保护、.Net程序加密。Vs的特点:入口点只有两行代码,一个CALL后接JMP。入口特征和模块特征都有krnln.fnr。也是我们在逆向工程中经常碰到的东西。(2)看区段信息和入口特征。来写一下常见的编译的特点。
2024-03-03 22:15:00 529
原创 IDEA wsdl教程
####今天我们先来学习一下如何利用IDEA发布WSDL首先打开IDEA新建一个Java项目OK了基本的项目已经创建完成!创建一个新的类命名为Java6WB代码如下所示:然后运行Test中的main方法发布服务,由于之前在8080端口运行过其他项目,所以这里将端口改为8090运行后访问浏览器的url’:在publish方法后的第一个参数内,在Java6WB后面加上?wsdl访问出现如下界面即可:说明发布成功然后通过JDK工具来生成客户端代码.JDK提供了一个wsimp
2022-06-08 16:04:18 3666 3
原创 PWN刷题记录(1)--ciscn_2019_n_5
这是第一篇的刷题记录,从ret2text开始刷起0x1 程序分析先checksec 一下64位的小端序,NX没开启,妥妥的写shellcode拖入IDA中查看一下main函数如下可以看到gets(text)有明显的溢出然后还可以看到关键的read函数,可以做libc泄露用,先留着然后查找一下有没有能用到的system函数和binsh无system函数估计也没有binsh了咋办呢>?看一下有没有可读可写可执行的字段呢?看看这里的两个变量:name\text存在!
2022-05-10 15:05:23 348
原创 格式化字符串漏洞
这可能是期末复习周之前有关pwn的最后一篇了无奈的博主因为期末考的408科目太多了只能去更新计算机组成原理和计算机网络了。废话不多说我们直接进去正题。格式化字符串漏洞格式化字符串函数可以将接受可变数量的参数,并将第一个参数作为格式化字符串,然后依据此来解析之后的参数。通俗的说,格式化字符串函数就是将计算机内存试中表示的数据转化为人类可读的字符串格式。在利用时分为三个部分:·格式化字符串函数、格式化字符串以及后续的参数。
2021-12-15 22:16:55 600
原创 PWN入门(练习课)
经过前几期的讲解,是时候来做几个实战的题目来练习一下了~!难度1:pwn1老样子,先checksec一下。可以看到这是一个32位的程序,并且开启了NX数据执行保护。(本来以为这个题目时有些难度,或许得构造ROPchain)但是事实证明我想多了。拖进IDA里面分析一下主函数里只是调用了一下welcome函数这里有个十分明显的getflag函数我们先去main函数里看一下好家伙,gets先生又出来演习了,可以看到buf只有14个长度再看一下有没有可能直接去溢出到system函数里面
2021-12-13 20:45:05 2125
原创 pwn入门系列-ret2libc2
Ret2libc2今天来做一下经典的retlibc系列的第二题资源:ret2libc2老样子先checksec[*] '/home/giantbranch/Desktop/pwn/ret2libc2' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)可以看到
2021-12-10 14:47:23 3160
原创 PWN入门系列(3)ROP的利用
ret2shellcode原理ret2shellcode,即控制程序shellcode代码。shellcode指的是用于完成某个功能的汇编代码,如:call等,常见的功能主要是获取目标系统的shell。如果想执行shellcode,需要对应的binary在运行时,shellcode所在的区域具有可执行权限。举例还是以bammboofox的ret2shellcode为例附:ret2shellcode第一步还是进行checksecgiantbranch@ubuntu:~/Desktop/PWN$
2021-12-04 23:46:22 2334
原创 PWN入门系列(2)ROP
PWN入门系列(2)ROP基本ROP在上一篇博客中我们介绍了在ELF文件经过checksec查看保护措施后,有一个叫做NX的保护措施,即数据执行保护,在此保护措施开启后,很难直接向栈或者堆上直接注入代码,所以攻击者得想办法绕过NX的保护机制,而ROP(Return Oriented Programming)就是主要的绕过措施,主要的思想是在栈缓冲溢出的基础上,利用程序中已经有的小片段,也被称作(gadgets)来改变某些寄存器或者变量的值,进而达到控制程序的执行流程。那么什么是gadgets呢?gad
2021-12-03 23:43:09 761 1
原创 PWN入门系列(2)栈溢出
PWN入门系列(2)栈溢出栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变(覆盖)。是一种特定的缓冲区溢出漏洞,类似的还有heap、bss溢出等。其前提是:·程序必须向栈上写入数据程序对某个函数或者某个模块的输入数据的大小没有控制得当。基本示例举个简单的例子:#include <stdio.h>#include <string.h>void success() { puts("You Hava
2021-12-02 23:23:05 1531 1
原创 PWN入门系列教程~(1)
PWN入门系列教程~(1)前言关于我的故事先来说下学习路线大致分为以下几个部分那么什么是PWN呢?栈函数调用栈寄存器函数调用栈的经典内存布局前言关于我的故事博主是一名20级在校大学生,平常热爱网络安全。喜欢打CTF,但是自己所在的学校里并没有人去担任PWN的工作,身为会长的我自来要挑起重担了,在跟几位有联系的PWN佬交流后明确了自己的要学pwn。先来说下学习路线大致分为以下几个部分学习基础:去学习一些基本的原理学习真实漏洞编写expFUZZ那么什么是PWN呢?来说下pwn的来源:
2021-11-30 22:39:16 7602
原创 数据结构(C语言)图的创建和度数统计(基础)
图图结构:是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系。即结点之间的关系可以是任意的,图中任意元素之间都可能相关。图的应用极为广泛,已渗入到诸如语言学、逻辑学、物理、化学、电讯、计算机科学以及数学的其它分支。一个图(G)定义为一个偶对(V,E),记为G=(V,E) 。其中:V是顶点(Vertex)的非空有限集合,记为V(G);E是无序集(V,V)的一个子集,记为E(G) ,其元素是图的弧(Arc)。图的分类有向图(Digraph):若图G的关系集合E(G)中,顶点偶
2021-05-27 09:33:50 1857 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人