mozhucy's blog.

mozhucy's blog.

NO PWN/GUITAR NO FUN

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_来劫持程序的流...
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...
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...
CTF二进制学习0X04
HomuraVM 主要是对一个类似BF的解释器逆向,里面到处充满了反调试,在解析字节码后,两种循环各自可以实现一个input[i]和变量a,b之间的赋值操作,还有的字节码可以实现输入下标的移动,具体的字节码对应的操作在解释器中非常清晰,h为i++,所以以他为每一组语句头,在对900多字节的字节码分组后,正好分为了34组,验证函数中,flag长度也正好是34,在逆最后解析出的算法时,可以采取两种操作,一种是动态调试,找到规律,另一种可以爆破求值. G: reg2 -= 1MC: reg2 = reg1 ^ input[i]T: reg2 += 1a: reg1 -= 1h: input...
东南大学练习平台二进制全题解
东南的平台又放了新题,这次决定都做一下试试,在这里记录解题过程,因为是平时练习,我会尽可能多的把思路和解法写全,鉴于东南平台的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...
Hook学习
Hook hook实际上可以理解成一个劫持程序流的过程,我们可以在想劫持的地方写入钩子函数,然后程序执行到那里时,会先执行我们写的代码,然后ret源程序执行流,在我们的代码部分,我们可以检控程序中的一些变量,还可以更改这些变量,一般实战中,hook会被用于做键盘,鼠标,窗口,日志等部分的消息钩取 在ctf中,我们可以利用hook来监控程序中特定变量的值,帮助分析程序,同时,patchkit的pt.hook()其实也用了相同的东西,hook和patch相比,对程序影响较小,不用担心大量patch给程序带来的副作用 frida frida是一款基于python和JavaScript的框架,...
ISCC 决赛 android 1000
iscc决赛android 1000解题前序 查了一下apk内部,可以拿到一个.dex,一个.jar和两个.so 解.jar发现其实是一个加密的.dex,将dex转成jar以后发现checkflag的函数 分析checkflag函数 发现其中先定义了一个二维数组,然后将其传入一个enc函数,这个函数是反编译不出来的,应该是加了壳 后分析libcore.so函数,发现其中有一个函数名以及函数的操作很可疑,函数首先将一串加密过的字符串还原,然后经过几个类似于取解密后字符串中的括号括起来的部分,按照函数原有逻辑顺序解一下,发现了主要check函数的名字,后面还接了地址(0x159CBC) 根...
Position&hateintel&Wrong byte!
爆破了一天题目. Position 分析算法,直接爆破. 1四个循环,一个校验. hateintel 分析算法,直接爆破.12345678910111213141516171819l=[0x44, 0xF6, 0xF5, 0x57, 0xF5, 0xC6, 0x96, 0xB6, 0x56, 0xF5,0x14, 0x25, 0xD4, 0xF5, 0x96, 0xE6, 0x37, 0x47, 0x27, 0x57,0x36, 0x47, 0x96, 0x03, 0xE6, 0xF3, 0xA3, 0x92]def f(a): a*=2 if(a&0x100)...
avatar
mozhucy
FRIENDS
friendA friendB