MozhuCY's Blog

MozhuCY's Blog

NO PWN/RE/GUITAR NO FUN 2333333

WcyVM
加急出的一个垃圾vm 给校赛出的题目,虽然很早写出来解释器部分,但是因为加密部分没有想好,所以一直没有什么进展,比赛结束前10个小时,因为逆向题目不太够,就草草写了个算法(单表替换),放了出来,结果半个小时就被秒了,很明显不是预期解,比赛结束后也听到了而且想到了各种解法,虽然归根结底是算法的问题,不过姑且把这个题当做一个例题来整理复习一下逆向的基本姿势和神奇操作 首先明确一个方向,因为是单表替换,所以加密后的flag只有有限次数的组合,所以可以利用各种爆破姿势来进行解题 //vm这个东西都要被出题人玩烂了,打log什么的基本做法就不写了 黑盒测试 首先要确定是个单表加密,那么这里可以采...
X-NUCA逆向部分题解
Code_Interpreter 一个vm逆向,输入三个int型数据,进入一个vm进行运算,字节码在外面的code文件里,这里整理指令集,打log 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172code = [ord(i) for i in "090404090000080100080201080302060104050115070001040003016bcc7e...
深入浅出密码学读书笔记
替换密码 (11.16) 这个在古典密码中比较常见,属于对称加密,那么攻击替换密码时有两种方式,一种是穷举,这个在秘钥可能性比较少的时候可以使用.还有一种攻击方式就是词频分析,替换密码映射的规律导致了明文的统计规律能被很好的保存在密文中,如果我们有足够多的密文,那么就可以利用词频统计来进行替换密码的攻击,词频分析时,还可以遵循一些常见的特性.如E是出现频率最高的字母,英语中U总是跟在Q后面,或者一些高频符号” “以及高频短单词THE AND等. 现代密码重要的一项运算-模运算 模运算: a,r,m属于Z,且m > 0.如果m 除 a-r可以记做a === r mod m,m称作模...
hctf2018-部分逆向wp(Spiral是真的做不来)
感谢杭电师傅们举办的hctf.题目质量还是依旧的高,也学到了很多东西,特别是windows逆向部分,感觉自己需要学的太多了,给师傅们跪了Orz 比赛那几天真的是没什么心思做题,赛后来凑个热闹吧.. seven 这个题比较简单,是一个驱动逆向,具体的实现算法就是一个maze一样的7,程序利用键盘扫描码WASD来进行在地图中移动 顺带学一下驱动逆向,DriverEntry就是驱动的一个入口,一般的作用是初始化驱动程序,定位/申请资源,创建内核对象 _security_init_cookie函数其实就是windows中的一个与栈保护机制相关的函数,类似与canary,在函数帧栈中,该coo...
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...
avatar
MozhuCY
witness me