- 博客(81)
- 资源 (2)
- 收藏
- 关注
原创 入门pytorch-Transformer
虽然是2017年由Google推出,如果按照的思路看,那它无疑是过时的,但可惜的是,目前很多论文的核心依然是,或者由其进行改进的,故本文使用pytorch来搭建一下这个模型。
2024-12-10 17:14:33
1471
原创 pwn手记录题3
研究生的生活很充实(忙,大概三年我再也没有时间去认真做题了以下是最近比赛的遇到的题目。仅记录脚本,细节不会再核实了(没时间(;´༎ຶД༎ຶ`))可能以后不太会触碰CTF比赛了。
2024-11-08 23:24:27
231
2
原创 fuzz(AFLpp)
此时我们再来思考一个问题,那便是libfuzz的缺点,便是进程间;这导致了如果目标程序崩溃了则整个模糊测试都将崩溃;此时我们可以利用AFL来自定义变异,此时便不再害怕目标程序崩溃了,但可能损失了些性能;而目标程序如下:(极其简单、vuln.c*ptr = 123;return 0;首先我们要AFL++之中的API和protobuf结构来编写代码,故首先可以编写一个.h代码结合该两部分;
2024-10-27 18:59:39
861
原创 入门pytorch
这个就比较简单了,最简单的感知机(最简单的两层神经网络),这里只不过是多层的感知机。它的思想还是比较好理解的,主要是如何针对不同的应用来实现它。它最明显的特征就是具有三个层次,卷积层,池化层,全连接层。借用一张图,下图很好的表示了什么是卷积(提取特征),什么是池化(减少数据量),而全连接层就是一个简单普通的神经网络。如下代码,该代码定义了一个卷积神经网络。其中仅有一个简单的函数前向传播。所准备是数据如下图,是一种手写数字,通过识别图片分析来得到答案。,这个函数的功能其实就是输入数据,给出预测,并不复杂。
2024-09-08 18:16:10
663
原创 实用机器学习(快速入门)
因为需要机器学习的助力,所以(浅浅)进修了一下。现在什么东西和AI结合一下感觉就好发文章了;我看了好多学习视频,发现机器学习实际上是数学,并不是常规的去学习代码什么的(虽然代码也很简单),而是去学习原理。这其实并不合我的学习方法,所以我歪门邪道了一下,先实用,再搞原理(这样就比原先快了许多)这里我比较推荐的唯一的一本书籍是统计学习方法(因为这本书我大概可以看懂,其他方面的书籍都不太适合纯新手)
2024-07-13 13:00:18
1128
1
原创 复现随记~
比较简单的越界漏洞,堆本身并没有什么漏洞,而且保护并没全开,所以逆向思维。必然是ROP类而非指针类,故我们着重注意等无符号数前后是否不一致这里其实存在两个越界,一个是输入负数存在二级指针,进而ROP获取权限;第二个越界则为输入16则获取到一个悬空指针(但是没有什么用,测试U20).
2023-02-12 21:47:25
654
原创 pwn手记录题2
本题所使用的libc版本为2.34;(最新版libc2.34版本已经没有了所谓的hook函数,甚至exit_hook(实际为某个函数指针)也已经不能够使用;能够利用的手法已经很少了;可以看到Free释放函数总共可以使用11次,而Allocate申请函数可以使用0x2e次;如果按照fastbin_reverse_into_tcache的节奏来说,那么布局是如何的呢?
2023-02-12 15:27:48
764
原创 pwn手记录题1
将fake_chunk链入到了unsortedbin之中了,并且伪造了fake_chunk的fd指针指向unsortedbin;不过发现了几遍文章,其中存在着解析,将其引向了retfq该指令,该指令意思是64位与32位之间进行跳转,而syscall_fstat的rax为5,32位之中的open的syscall_number同样为5;我们发现了一个函数change_addr函数,其实就是PIE,本题开启了PIE保护,但是却又多此一举改变了地址,不懂;不过编写shellcode的时候废了好大劲,调试了好久;
2023-02-12 15:27:23
703
原创 工业线上赛(2022省赛)
发现存在upx壳通过工具发现无法脱upx壳(版本4.00),而通过ida分析发现需要通过upx3.96版本进行解压。然后分析加密流程:故我们进入B::cmp函数查看函数是如何进行比较的:(发现以索引为线索进行比较的。
2022-11-02 20:26:26
1327
原创 ciscoRV110W(强网杯2020)
这里的错误信息很简单,必然是nvram系列函数,通过调试,发现错误信息位于nvram_get函数出现的,而退出则是由exit函数进行错误退出的,故我们可以定位到错误流程必然出现于第三个nvram_get函数与exit函数之间;而valid_user仅仅是简单的判断,我们可以动态调试至此处位置,我们先位于页面之中输入123456(密码),发现此处的pwd进行了加密,如果我们hook掉http_user0其中的内容与此一致,曾将会登录成功;,这能通过硬编码进行修改,但是我并不想去查找mipsel的硬编码了;..
2022-08-29 16:34:06
855
原创 house系1
参考:https://bbs.pediy.com/thread-273895.htm#msg_header_h1_0(提出了这种新的方式)该文章虽然提出了新的手法,但是有些地方省略过多,故进行了调试分析,总结出完整的一个流程,分享给大家:位于==/malloc/malloc.c之中可以发现__malloc_assert的定义,并且__assert_fail等同于__malloc_assert==,而==__assert宏定义调用了__assert_fail==:可以发现首先执行==__fxprintf
2022-08-09 11:01:49
412
原创 BUUCTF-pwn(18)
360chunqiu2017_smallest整体较为简单;先放个exo;较为简单;from pwn import *context(arch='amd64', os='linux', log_level='debug')binary = './smallest'#r = remote('node4.buuoj.cn',26277)r = process(binary)elf = ELF(binary)main_addr = 0x4000B0mov_edx_400 = 0x4000
2022-07-10 15:15:10
909
原创 ISCC 2022
sim_treasure简单的32位循环格式化字符串漏洞,位于栈上,无过滤\x00;from pwn import *context(log_level='debug',os='linux',arch='i386')binary = './sp1'r = remote('123.57.69.203',7010)#r = process(binary)elf = ELF(binary)#libc = elf.libclibc = ELF('./libc-2.27.so')offset
2022-06-13 11:42:23
5319
1
原创 BUUCTF-pwn(17)
happytree(SUSCTF)分析主要函数!主要三步操作,Insert、Delete、Show函数!可以看到其为二叉树结构体!因为全保护开启,故具体思路为泄露地址(heap、libc),然后利用libc2.27版本tcache的double free来修改__free_hook函数为system函数,此时首先设置基准为0x50,此时分为两部分,左子树用来泄露heap地址并造成double free的效果,右子树来泄露libc地址并申请造成攻击效果!首先发现可以从0x?0申请到0x?8
2022-04-17 17:49:12
719
原创 IOT初尝试(PLC NOE-771)
过binwalk -A指令来对固件的CPU架构进行分析,此外也可以用binwalk -Y指令来调用capstone反汇编引擎来进行辅助判断,不过我实际测试下来存在一些误报的情况会把NOE 711的固件识别成arm架构的。
2022-03-22 19:59:05
4547
转载 UE使用及TQLCTF ezvm复现
什么是Unicorn Engine?Unicore Engine是一个模拟器,并不太常见(通过比赛发现了该引擎)。通过该模拟器,可以模仿整一段程序。但是该模拟器不支持系统调用,必须先映射内存,并手动将数据写入到内存中,然后才能从指定的地址开始模拟程序!怎么使用Unicorn Engine呢?该引擎可以基于C/C++进行开发,也可以使用Python调用Unicorn Engine(相对简单,故我们采用Python来使用Unicorn),使用以下命令来下载Python库函数pip install un
2022-03-07 17:21:07
408
原创 BUUCTF-pwn(16)
强网杯2019 拟态 STKOF本题目两个二进制文件,64位与32位该题目加入了拟态的检查机制,题目会fork32位程序和64位程序,而我们的输入会分别传入这个两个进程,每个程序一份,然后题目会检测两个程序的输出,若两个程序的输出不一致或任一程序或者异常退出,则会被判断为check down,直接断开链接。只有两个程序的输入一致时,才能通过检查本题难度经过合理拆分难度不大,首先本地通过64位、32位脚本,然后利用0x8字节差距,使用32位add esp,0x7c;pop;ret来进行错误,并输入
2022-03-02 16:00:01
640
1
原创 BUUCTF-pwn(15)
gyctf_2020_some_thing_interesting经典UAF漏洞!Allocate申请函数!Free释放函数!全保护开启,故我们利用格式化字符串漏洞泄露libc地址,从而得到malloc_hook地址。然后利用UAF漏洞修改malloc_hook为one_gadget,此时进行申请操作便可获取权限!from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './gyctf_2
2022-02-13 12:38:43
2728
原创 BUUCTF-pwn(14)
gwctf_2019_jiandan_pwn1简单ret2libc,唯一需要注意的便是注意修改索引值,防止索引被覆盖!从而无法进行栈溢出!from pwn import *from LibcSearcher import LibcSearchercontext(os='linux',arch='amd64',log_level='debug')binary = './pwn'r = remote('node4.buuoj.cn',25586)#r = process(binary)elf
2022-01-23 16:23:13
3565
原创 BUUCTF-pwn(13)
wustctf2020_number_game此时运用我们的计算机底层的知识,可知,计算机底层储存形式为补码!-2147483648的补码形式为0x80000000,它取反加一之后仍然是0x80000000,因此这边输入-2147483648护网杯_2018_gettingstart此时又要用到我们的数学知识!转换浮点数工具from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './2
2022-01-17 20:51:29
656
原创 BUUCTF-pwn(12)
[极客大挑战 2019]Not Badorw类型,打开文件,读入内容,输出内容!但需要注意gadget!from pwn import *context(log_level='debug',os='linux',arch='amd64')binary = './bad'r = remote('node4.buuoj.cn',29934)#r = process(binary)elf = ELF(binary)mnap = 0x123000jmp_rsp = 0x0400a01r.r
2022-01-13 09:35:26
2936
原创 BUUCTF-pwn(11)
mrctf2020_easy_equation简单的栈溢出漏洞,格式化字符串漏洞!此处采用栈溢出漏洞!axb_2019_fmt64经典循环格式化字符串64位漏洞!唯一注意的地方pwntools的FmtStr_payload无法成功获取权限!需要手动计算字节进行攻击!from elftools.construct.macros import Paddingfrom pwn import *from LibcSearcher import *context(log_level='debu
2022-01-09 17:49:59
2787
原创 BUUCTF-pwn(10)
picoctf_2018_shellcode题目很很简单!from pwn import *context(log_level='debug',os='linux',arch='i386')binary = './PicoCTF_2018_shellcode'r = remote('node4.buuoj.cn',25585)#r = process(binary)elf = ELF(binary)shellcode = asm(shellcraft.sh())r.recvunti
2022-01-08 09:44:09
397
原创 BUUCTF-pwn(9)
gyctf_2020_borrowstack使用栈迁移,将rsp迁移到bss段上,而bss段上处于可控位置。但是注意bss段低处处于不可写状态,如果rsp移动到该处,则程序无法进行下去!尝试使用system函数,但是往往会涉及到bss段低处地址,而one_gadget则不需要过多占用栈地址,故采用one_gadget获取权限!from pwn import *from LibcSearcher import LibcSearchercontext(log_level='debug',os='l
2022-01-05 18:29:31
842
原创 PWNABLE.TW(1)
Startfrom pwn import *context(log_level='debug',os='linux',arch='i386')binary = './start'r = remote('chall.pwnable.tw', 10000)#r = process(binary)elf = ELF(binary)def db(): gdb.attach(r)leak_esp = 0x08048087shellcode = asm("xor ecx,ecx;\
2021-12-30 22:07:13
386
原创 glibc2.23堆源码解读
libc2.23采用glibc2.23的源码,故没有libc2.32的Tcache。主要从_int_malloc以及_int_free两个函数进行解读。Mallocstatic void *_int_malloc (mstate av, size_t bytes){//参数为指针av,与申请空间bytes INTERNAL_SIZE_T nb; /* normalized request size */ unsigned int idx;
2021-12-25 15:12:20
727
原创 BUUCTF-pwn(7)
ret2dl_resolve_dl_runtime_resolve()通过两个参数在libc中寻找函数地址,而我们更加关注的是第二个参数也就是上面write的0x20,0x20将_dl_runtime_resolve()带到了reloc的位置,reloc中有2个重要信息,一个是函数的got表地址,另一个是r_info。r_info的高位是.dynsym中的条目,.dynsym的地址加上0x10*Num,得到函数对应的符号信息,而修改其中的st_name偏移,就可以伪造函数名称,从而实现漏洞利用,我们将其
2021-12-19 11:28:14
1846
原创 BUUCTF-pwn(6)
wustctf2020_getshell现在还有这种简单题吗???picoctf_2018_buffer overflow 1没想到还有这么简单的题!并发现了后门函数!cmcc_simplerop函数逻辑比较简单。这里经过调试,发现padding为0x20寻找一些又用的gadget。使用SROP来进行攻击!from pwn import *context(log_level='debug',os='linux',arch='i386')r = remote('
2021-11-30 20:40:22
3104
原创 BUUCTF-pwn(5)
jarvisoj_level4简单的ret2libc!from pwn import *from LibcSearcher import *context(log_level='debug',os='linux',arch='i386')r = remote('node4.buuoj.cn',25768)#r = process('./level4')elf = ELF('./level4')main = elf.symbols['main']write_plt = elf.plt['
2021-11-25 20:48:41
459
原创 BUUCTF-pwn(4)
pwn2_sctf_2016该题目还是比较简单的!并且存在int 80中断,但可惜没有/bin/sh字符串!所以还是ret2libc!from pwn import *from LibcSearcher import *context(log_level='debug',os='linux',arch='i386')r = remote('node4.buuoj.cn',28630)#r = process('./pwn2_sctf_2016')elf = ELF('./pwn2_sc
2021-11-16 18:57:46
1300
原创 BUUCTF-pwn(3)
[HarekazeCTF2019]baby_rop该题还是比较简单的,没有什么难点!先探测一波保护!并且还发现了字符串!然后我们就可以开始构造payload了!payload = b’a’*(0x10+0x8)+p64(pop_rdi)+p64(bin_sh)+p64(system_addr)jarvisoj_level2_x64这道题目过于简单,所以就不再分析了,直接上脚本!from pwn import *context(log_level='debug',os='linu
2021-11-10 23:28:18
755
原创 BUUCTF-pwn(2)
[第五空间2019 决赛]PWN5该函数漏洞比较明显,进行调试验证!并且没有开启PIE保护措施,所以我们可以利用任意地址写,写入.bss:0804C044 password该地址处数据即可。然后密码就被操控了。[OGeek2019]babyrop将urandom中一个随机数写入到buf中,然后作为参数传入到下一个函数中。必须通过条件才可以可利用到下面的栈溢出漏洞!而且read还可以溢出一个字节到v5上。这里strlen遇到’\x00‘停止检测,所有外面可以利用该特征,绕过检测!
2021-11-06 11:25:40
673
原创 21CYS新生题
easypyc这个是个py打包的exe文件,首先我们需要反编译出源代码!pyinstxtractor.py该工具是可以将py打包而成的exe文件解压为原先的文件形式。
2021-10-27 18:44:36
1345
原创 攻防世界The_Maya_Society
The_Maya_Society这道题目有三个附件,一个素材,一个html网页,还有一个ELF文件。这里刚开始猜测为html网页逆向,但是网页逆向一般是要给一个js文件,该附件中是没有js文件的,所以应该不是网页逆向。那么猜测应该是附件中的ELF藏有flag。这时候我们看看里面具体函数的一些特征。这里具体函数的作用我也不太清楚,但是不妨碍我们做题。此时该ELF文件里面的大致流程我们都清楚了大致的流程就是这样子啦!base64(sub_18A4(MD5(date)+".fluxfin
2021-10-17 15:42:43
353
3
原创 攻防世界What-does-this-button-do
What-does-this-button-do通过EP和file命令进行探测,发现该文件应该是个数据压缩包之类的。猜测为ar包,直接使用jd-gui打开,发现没有class类。可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的
2021-10-16 14:34:32
147
pwntools4.5
2021-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人