自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (10)
  • 收藏
  • 关注

原创 Pycharm更新远程的外部库代码

参考自:https://intellij-support.jetbrains.com/hc/en-us/community/posts/205813579-Any-way-to-force-a-refresh-of-external-libraries-on-a-remote-interpreter-Ctrl-Alt-S 打开项目设置,选择程序解释器右边的齿轮,选择show all点击右侧栏的图标,显示库的路径然后点击刷新按钮,之后外部库的代码就更新了。...

2021-11-04 16:27:26 1560 2

翻译 Angr CFG与IDA CFG区别

Angr的CFG与IDA不同,在call函数时会分隔基本块。此外,当有另一个基本块跳到当前基本块的中间时,IDA会把当前基本块分割为两个基本块,而angr仍然把当前基本块视为整个基本块。可以在分析CFG时增加"normalize=True"选项来让angr默认分割...

2021-07-30 15:57:53 731

原创 driller fuzz arm问题解决记录

使用fuzzer对arm fuzz时,driller符号执行出错:Traceback (most recent call last): File "/home/waterfire/.virtualenvs/angr/lib/python3.6/site-packages/driller/local_callback.py", line 132, in <module> for new_input in d.drill_generator(): File "/home/water

2021-01-21 15:54:57 356

原创 Driller源码阅读笔记(二)

driller部分代码只是读取输入种子然后返回一个可用的新种子,实际fuzz的时候还是需要搭配fuzzer使用:https://github.com/shellphish/fuzzer不过,fuzzer中不是直接使用Driller类,而是LocalCallback类,因此有必要看看这一部分是如何实现的。fuzzer的shellphuzz脚本相关代码: if args.grease_with: print ("[*] Greasing...") grease

2021-01-14 21:15:40 714 2

原创 Driller源码阅读笔记(一)

Driller源码:https://github.com/shellphish/driller所给样例为:import drillerd = driller.Driller("./CADET_00001", # path to the target binary "racecar", # initial testcase "\xff" * 65535, # AFL bitmap with no discovere

2020-12-28 16:54:10 905

原创 Fastbin attack总结

double free思路:构造fake chunk,将free chunk的fd指向fake chunk,使得下次malloc时返回fake chunk检测:(1)fastbin 在执行 free 的时候仅验证了 main_arena 直接指向的块,即链表指针头部的块。对于链表后面的块,并没有进行验证。(2)malloc申请伪造的fastbin时会检测fastbin的SIZE流程:a1=malloc();a2=malloc();free(a1);free(a2); //

2020-10-12 16:16:33 255

原创 整数溢出小结

审计代码的时候如果一不留神就很可能忽略一些整数溢出漏洞,需要注意。1.无符号数与有符号数比较无符号数与有符号数比较时,会把有符号数转换成无符号类型,导致负数变成大整数2.负数转换为正数int abs(int input){ int out; if(input<0){ out=-input; } else out=input; return out;}比如用这种代码转换负数为正数,遇到0x80000000时会保持自身

2020-09-25 16:41:43 209

原创 Unlink漏洞利用总结

一般是连续的smallbin或者unsortbin堆块(双向链表)a,b,a可以溢出,有一个指针p指向a。在a上伪造一个堆块: pre_size size fd : p - 3*SIZE_SZ bk : p - 2*SIZE_SZ 其中SIZE_SZ=sizeof(size_t)此外还需让b的SIZE最低位被溢出修改为0,即PREV_INUSE为0,并将PREV_SIZE设置为伪造堆块的大小。之后执行free(b),由于检测到PREV_INUSE为0,对a执行un.

2020-09-21 16:54:50 380

原创 周期性变化算法逆向思路

做逆向的时候,有时候会碰到对输入做周期性的变换,即对于变换算法change(in,out),有memcpy(old_in,in);while(i=;i<circle;i++){ change(in,out); memcpy(in,out);}assert(!memcmp(out,old_in)); 这个时候,要写change的逆的话,可以先算出circ...

2019-12-02 09:58:27 290

原创 堆off by one

ctfwiki pwn笔记:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/off_by_one-zh/off-by-one 利用思路¶溢出字节为可控制任意字节:通过修改大小造成块结构之间出现重叠,从而泄露其他块数据,或是覆盖其他块数据。 溢出字节为 NULL 字节:在 size 为 0x100 的时候,溢出 NULL ...

2019-11-02 14:12:42 222

原创 堆机制笔记

本文是对https://ctf-wiki.github.io/ctf-wiki/pwn/linux/glibc-heap/heap_overview-zh/做的笔记。malloc(size_t n)当 n=0 时,返回当前系统允许的堆的最小内存块,16 bytes on most 32bit systems, and 24 or 32 bytes on 64bit systems....

2019-10-31 20:49:05 295

原创 PWN问题记录

通过系统调用execve("/bin/sh")来拿shell时,注意将rsi,rdx置0,不然可能作为参数而导致执行出错。

2019-10-29 20:17:52 241

原创 PWN综合

感觉pwn的知识比较繁杂,列个目录记录下堆bins介绍https://www.cnblogs.com/alisecurity/p/5520847.html绕过pie绕过https://blog.csdn.net/WateranFire/article/details/100984579...

2019-09-18 15:46:36 267

原创 pie绕过

遇到use after free之类的漏洞时,利用small bin可以获取libc的基址,类似这种格式p1=malloc(200);p2=malloc(200);free(p1);print(*(unsigned long long*)p1);然后算一下偏移即可。或者申请一大片的内存来触发mmap,mmap 分配的内存与 libc 之间存在固定的偏移。p1=mal...

2019-09-18 15:46:17 759

翻译 Angr学习(一)

以前只是简单套用angr模板来解一些简单的题目,现在希望能深入了解一下angr, 所以做个记录。注意,本文不是直接翻译,而会根据个人感觉进行删减!本文主要参考自https://docs.angr.io/===========================================================下面是一些小tips,可以跳过。angr的调试信息记录i...

2019-08-07 19:57:52 2616

转载 pwnable.kr之input

转载自 https://blog.csdn.net/qq_20307987/article/details/51337179&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp

2019-01-29 20:00:46 276

原创 将字典存入文件时中文编码问题

直接用str(dict),若dict里有中文会导致写的是'\x...',可以利用json.dumps(dict, ensure_ascii=False)

2018-08-01 16:26:36 792

原创 PWN格式化字符串漏洞

漏洞使用:    1.泄露canary之类的信息    2.修改特定地址的内容hints:     1.当需要表示第N个参数时,可以通过"%N$llx"的方法实现;     2.当利用%n修改数据时,如果数据较大,可以前面利用"%099999d"来构造。 ...

2018-07-19 15:55:35 645

翻译 Avatar——插件

avatar²的另一个重要关键特征就是它的插件系统。插件允许修改或增强avatar或不同目标对象的功能。在这个方面,avatar²的核心自身保持简洁而复杂的功能可以根据需求来增加。启用一个插件显而易见得简单:from avatar2 import *avatar = Avatar()avatar.load_plugin('myPlugin')下面,我们将看看两个与 avatar²一起出现的典...

2018-04-08 11:30:15 2796

翻译 Avatar——守望者

Avatar² 允许用户在编排中hook各种事件。这些hook是用户定义的回调并且允许在事件发生前后改变或检查分析状态。增加一个hook的接口如下:from avatar2 import *def my_callback(avatar, *args, **kwargs): print("StateTransfer occured!")avatar = Avatar()avatar...

2018-04-08 11:03:34 271

翻译 Avatar——执行

在目标集和内存布局被定义后,Avatar²的真正分析部分就可以进行了,我们可以将之表示为execution-phase执行阶段。为了告知Avatar²安装阶段已经完成而且实际执行可以开始了,目标需要首先被初始化。from avatar2 import *avatar = Avatar()# Target setup[...]# Memory setup[...]# Initia...

2018-04-04 11:11:58 625

翻译 Avatar——内存配置

创建Avatar²需要的第二片信息是内存布局的规范。 Avatar持续对所有内存范围的跟踪并将生成的包含所有范围的内存映射送给独立的目标。内存范围定义增加一个内存范围很简单。假定存在一个叫’avatar’的Avatar²对象,使用下面这一行来创建0x40000000处大小为0x1000的基础内存区域就足够了:dummy_range = avatar.add_memory_r...

2018-03-29 21:23:04 894

翻译 Avatar——目标

原文链接:https://github.com/avatartwo/avatar2/blob/master/handbook/0x02_targets.mdTargets  Avatar需要的第一个信息是分析工作需要的一个目标集。from avatar2 import *avatar = Avatar()qemu = avatar.add_target(QemuTarget, name='...

2018-03-28 16:17:01 1812

翻译 介绍Avatar

原文:https://github.com/avatartwo/avatar2/blob/master/handbook/0x01_intro.md1.什么是Avatar      Avatar是一种协调框架,旨在支持嵌入式设备的动态分析。 Avatar²是该框架的第二代,该框架已经完全重新设计并重新实施,以提高表现,可用性和对高级功能的支持。Avatar的设置由三部分组成:·一个目标集·内存布局...

2018-03-07 16:42:13 4221 2

翻译 Avatar: 一个支持嵌入式系统固件的动态安全分析的框架

 原文  Avatar: A Framework to Support Dynamic Security Analysis of Embedded Systems’ Firmwares1. 前言      以解决对嵌入式系统安全性的日益关注,即使在源码或硬件文档无法获取的情况下,对固件二进制进行准确的二进制分析是十分重要的。然而,在这方面的研究由于专用工具的缺乏而被阻碍了。例如,诸如动态污点跟踪以...

2018-03-07 14:20:15 2917

原创 openssl分析public.key内容

命令:openssl rsa -pubin -text -modulus -in warmup -in public.key

2018-03-01 19:23:06 1330

原创 TLS反调试

最近粗略了解了一下TLS反调试。TLS用于控制多线程全局变量,每个线程都会获得一个全局变量的副本。TLS反调试主要就是利用Tlscallback函数在main函数执行前就会被调用,在其内设置反调试的话导致OD一打开就退出。

2018-01-16 10:51:57 698

原创 关于类的内存问题

在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 在调用类中的虚函数时(如64位程序调用第二个虚函数): 类的指针为Classptr,则会先取__vfptr=*(_QWORD *)Classptr (即取Classptr的前8个字节为虚函数表的地址),在虚函数表中,每8个字节存放一个虚函数的地址,故取第二个虚

2017-12-19 20:22:01 263

原创 RE学习计划

最近一直东学一点西学一点,感觉学的很杂乱,没有目的性而且很容易遗漏知识点,所以决定把想学的知识点列一下,做一个参考。 IDAPython:对IDA宝具,但目前还是不太会用; angle:逆向利器,很多题目可以用angle直接怼,但目前还是一知半解; arm汇编:学的是X86汇编,arm汇编大部分差不多但还是有一定的区别,所以有必要学一下; 尽量少F5:不是什么知识点,只是是时候多看看汇编了。

2017-12-19 13:56:21 265

原创 利用sftp进行远程ssh的上传下载

sftp连接:sftp -p 端口号 用户名@服务器ip登陆后,使用put进行上传文件put 本地文件 服务器上的路径使用get下载文件get 远程文件可以使用各种终端命令,如cd,pwd等 要切换本地目录时,使用lcd即可。

2017-12-19 11:29:26 2085

原创 linux查看文件内容

linux查看文件

2017-12-18 11:31:26 488

转载 如何识别C++编译以后的函数名(demangle)

C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。如果用backtrace之类的函数打印堆栈时,显示的就是被编译器修改过的名字,比如说_Z3foov 。 那么这个函数真实的名字是什么呢?每个编译器都有一套自己内部的名字,这里只是针对linux下g++而言。 以下是基本的方法: 每个方法都是以_Z开头,对于嵌套的名字(比如名字空间中的名字或者是类

2017-12-18 09:26:43 2598

原创 初识arm

一直不是很会arm,做pwnable.kr上的arm时遇到了就顺便学了一点。 跳转指令有bx,blx,bl等,其中bx与blx会转换处理器状态,以bx为例: bx r0这个语句会跳到地址为r0值的指令处,如果这个地址最低位为1,处理器就切换为thumb状态,如果最低位为0就切换为arm状态。其中thumb状态时,pc为当前指令地址+4,arm状态时,pc为当前指令地址+8。 在arm中,立即数

2017-12-15 15:13:15 323

原创 PWN综合练习二

合天上的课程笔记 dup2(socket,0)——将socket与标准输入绑定 dup2(socket,1)——将socket与标准输出绑定 realpath(name,&resolved)——将name中的路径转为绝对路径存入resolved 就算realpath调用失败,resolved内还是会填充数据,并且前缀会加上当前路径,构造shellcode时需要注意 有时应该打印出了内容但接

2017-10-27 16:27:32 422

翻译 decaf 接口用法

最近跟着老师做一个关于decaf的项目,因此对读的文章做点笔记。简介 decaf是一个虚拟机,为开发者提供了许多调用接口,可以在运行时Hook。使用这些接口可以完全在客户机之外检索OS-level semantics(操作系统级别的语义),例如进程、系统API、按键、网络等。样例插件 以下插件可以指定一个你想要追踪的进程,并在进程开始时打印进程名。 当DECAF加载该插件,它将首先调用in

2017-09-25 12:05:06 2348 5

原创 web杂记

虽然是个web渣渣,不过还是记下一些小知识吧! 找源码: 1. 利用PHP协议读取所有源码 ,不太懂原理 http://218.76.35.75:20115/?page=php://filter/read=convert.base64-encode/resource=main 上面这个是看main.php的源码,得到的是base64形式,可以换成index看看; http://218.7

2017-08-23 20:16:42 417

原创 记一次奇怪的python编码问题

在学爬虫时遇到的,与汉字编码有关。    具体是GET得到一串数据提取出了一段中文内容,然后直接print,发现失败了。    将字符的二进制写入了txt中,以utf-8形式打开是正常中文,于是尝试对数据text.decode("utf-8"),结果谜一般的失败了    但是我直接从直接存的文件里读出数据再decode是可以成功的,明明是一样的数据==    于是我

2017-07-03 18:11:52 259

原创 记一次手动脱壳

以前一直都是用脱壳工具直接脱壳,最近学了手工脱壳的一些知识,就尝试了一次简单的手工脱壳。 我使用吾爱破解版的OD来脱壳,因为上面自带了插件OllyDump。不得不说这个功能十分强大,原以为脱壳出来还要重建修复表的,结果发现居然不用,完成了以后一脸懵逼,完全不敢相信成功了。 首先,遇到了这个的话,都选否。 原来的OD似乎是要先执行一段代码,再开始执行壳的(从pushad那里开始)如下图:

2016-12-23 14:51:30 616

原创 CTF-PWN练习之执行Shellcode

Shellcode 的执行可以通过制造溢出修改函数的返回地址,转为执行Shellcode将python文件的输出导入文件test:python xxx.py > test在gdb中将test 的内容作为输入并运行程序至断点处:r 将test文件的内容作为xxx程序的输入,执行xxx程序:./xxx

2016-09-19 09:25:49 2951

原创 PWN练习之环境变量继承

一、环境变量参数:      在Linux/Windows操作系统中, 每个进程都有其各自的环境变量设置。 缺省情况下, 当一个进程被创建时,除了创建过程中的明确更改外,它继承了其父进程的绝大部分环境变量信息。 扩展的C语言main函数可以传递三个参数,除了argc和argv参数外,还能接受一个char**类型的envp参数。envp指向一个字符串数组,该数组存储了当前进程具体的环境变

2016-09-07 09:31:00 1123

find_newest_files.py

python编写的文件过滤工具,可以指定过滤出某个日期之后被更新的文件,按时间或大小倒序显示,此外还能指定最小显示的文件大小。 例如:python find_newest_files.py -d C:\ -s -t "2020-12-01 00:00:00" -u M --size_threshold 1M 可以找出C盘里2020.12.1之后创建的最小1M的所有文件,大小显示单位为M,按大小倒序排列。 usage: find_newest_files.py [-h] -d DIR [-t TIME_THRESHOLD] [--size_

2020-12-05

Burpsuite抓包神器

抓包神器,Burpsuite破解版,解压后每次打开运行BurpLoader.jar即可

2018-11-02

Metasploit渗透测试指南

Metasploit渗透测试指南,教你使用Metasploit愉快得玩耍

2018-11-02

栅栏爆破.py

用于爆破栅栏密码。输入密文,讲输出不同长度间隔的明文

2018-08-24

img2ascii.py

将一张图片转换为一个字符文本。输入图片文件路径,在相同路径下回生成一个字符文本

2018-08-21

MIPS32指令集

MIPS32的指令集,里面介绍了各种指令的机器码排位以及指令的用法和功能

2018-04-12

华科计算机2015编译原理试卷及答案

这是华科计算机2015编译原理试卷以及相应的答案,可作参考。

2018-03-16

把文件内容全部改小写

没卵用的工具,可以把文件内容全部改小写,会python的自己会写,不会python的未必装了python环境

2017-12-20

华中科技大学操作系统课程设计

华中科技大学操作系统课程设计,实验目的: 掌握Linux操作系统的使用方法; 了解Linux系统内核代码结构; 掌握实例操作系统的实现方法。

2017-12-18

010EditorWin64

方便的二进制工具

2017-06-16

空空如也

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

TA关注的人

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