MozhuCY's Blog

MozhuCY's Blog

NO PWN/RE/GUITAR NO FUN 2333333

Python的一些底层原理
踩了太多次坑了,从前几个月的suctf开始,pyc文件逆向越来越多的出现在各种比赛中,正好借这个机会好好熟悉一下Python的底层 Python的一些底层实现 python常常被当做是一门解释型语言,但是实际上,Python的底层和java等语言非常相近,都是一门基于虚拟机的语言,当用户在命令行输入python test.py时,实际上进行的是一个编译的过程 .pyc也就是Python编译好的文件,在一般情况下,编译出的字节码是存在于内存中的,当Python运行结束后,就会释放掉内存,或者写入.pyc文件,被我们看到,如果这个时候再次运行.py文件,python解释器会先在目录下中查...
e1000
esxi e1000网卡逆向记录 从选择从init_module函数开始逆向,首先是一个printk函数,printk函数是在内核态的printf,这里记录一下用户态和内核态 用户态:非特权状态,在此状态下,代码会被硬件所限定,不能进行某些越权操作(如操作内核)内核态:特权状态,再次状态下,可以无限制地对系统存储、外部设备进行访问 ..11月终于解决了hexo的一些问题,wordpress还是用不习惯,希望这次hexo不要挂掉 esxi网卡逆向还会继续更新
easycoin
网鼎杯第一场大menu 有点类似于网鼎半决赛的pwn3,是一个比较大的程序,同样,程序实现了两个大的menu 首先需要注册一个账号,用户名和密码最大长度为32,再注册的过程中,程序会3次malloc(0x20)的堆块 第一次malloc生成的是name对应的堆块,第二次malloc生成的是password对应的堆块,第三次malloc的是一个结构体,内部含有三根指针和一个QWORD的money 当两次输入的密码不一样时,结束register函数,并且依次free掉name,password,struct,最后将结构体指针数组置空 登录函数并没有对于内存的直接操作,这里不作分析 12...
网鼎杯半决赛pwn1
一个短信系统 定义了两个结构体,分别如下,一个是用户信息的结构体,一个是信息结构体 1234567891011121314151617180000000000000000 message struc ; (sizeof=0x18, align=0x8, mappedto_6)00000000 title dq ? ; offset00000008 content dq ?00000010 next dq ?00000018 message ends000000...
网鼎杯半决赛pwn3
主menu的chara结构体1234500000000 chara struc ; (sizeof=0x18, align=0x8, mappedto_7)00000000 inuse dq ?00000008 name_ptr dq ?00000010 type dq ?00000018 chara ends 其中inuse限制了不能edit和double free,程序中没有溢出点 虽然inuse可以不能直接读取内存,但是可以利用堆块包含来进行堆块内容的读取 可控堆块size的堆,只有n...
东南大学练习平台二进制全题解(持续更新中)
东南的平台又放了新题,这次决定都做一下试试,在这里记录解题过程,因为是平时练习,我会尽可能多的把思路和解法写全,鉴于东南平台的wp不是很多,也方便下一届萌新的自主练习.平台地址:http://sus.njnet6.edu.cn helloworld 逆向签到题,直接f5看到内部if条件即可 抛开f5,分析一下汇编,首先是函数头部连续mov到栈中的数据,也就是flagenc 1234567mov dword ptr [ebp+flag], 0C881E8F1hmov dword ptr [ebp+flag+4], 0CECF81D2hmov dword ptr...
0ctf - freenote
整理结构体 程序首先初始化了了chunklist,此题的chunklist是在堆里面分配的 一个指针指向了malloc(0x1810)的头,此段空间的前16字节分别是最大堆块的值和当前堆块数量 大概结构体如下图 12345670000000000000000 headptr struc ; (sizeof=0x1810, align=0x8, mappedto_6)00000000 max dq ?00000008 count dq ?00000010 nodelist note 256 dup(?)000018...
babyheap
网鼎杯第一场 程序功能:新建,编辑,打印,free free处没有置空指针,导致可以uaf malloc每次都是0x20的fastbin,编辑功能可以使用3次 自写了readn函数,没有溢出点 edit可以修改free后堆块的bk,fd 12345Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x400000) Full RELRO导致got表不可写,所以只能劫持malloc_hook或者free_hook_来劫持程序的流...
Hook学习
Hook hook实际上可以理解成一个劫持程序流的过程,我们可以在想劫持的地方写入钩子函数,然后程序执行到那里时,会先执行我们写的代码,然后ret源程序执行流,在我们的代码部分,我们可以检控程序中的一些变量,还可以更改这些变量,一般实战中,hook会被用于做键盘,鼠标,窗口,日志等部分的消息钩取 在ctf中,我们可以利用hook来监控程序中特定变量的值,帮助分析程序,同时,patchkit的pt.hook()其实也用了相同的东西,hook和patch相比,对程序影响较小,不用担心大量patch给程序带来的副作用 frida frida是一款基于python和JavaScript的框架,...
qctf-asong
比较基础的一个逆向 题目给了三个文件,一个内容是flagenc,一个是一份歌词,一个是elf文件 第一个函数是对输入的flag取{}之间的值 第二个函数是对于歌词的一个词频分析 第三个函数是将flag和歌词词频分析后的flag进行加密 加密过程: 首先利用词频分析出的表进行一个单表置换 随后再次进行一次置换 然后一个简单的位运算,写入文件 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566f...
avatar
MozhuCY
witness me