- 博客(640)
- 收藏
- 关注
原创 安卓pwn - De1taCTF(BroadcastTest)
BroadcastTest背景逆向APK可知程序中仅有MainActivity$Message和三个Receiver类。前者实现了一个Parcelable类,后三个则是广播。其中Receiver1是export的,接收并向Receiver2发送广播,Receiver2和3则非export,只能接收内部发送的广播。功能为Receiver1接收base64传入的data,然后将其反序列化得到...
2020-05-05 11:28:43 30073 2
原创 有趣的Shellcode和栈
学弟问了一个ctf-wiki上pwn入门题的知识点,本身没什么意思题目下载链接 - sniperoj-pwn100-shellcode-x86-64题目简介很明显栈溢出,buf位于栈顶,栈空间为0x10个字节(可以从buf的位置rsp+0rbp-10h看出),所以栈分布为内容偏移bufrsplast_rbprsp+0x10ret_addrrsp+0x...
2020-03-26 04:47:28 29382 2
原创 小爱控制HA上的开关(红外线)
小爱同学控制homeassistant in 树莓派 by 红外线前言租了房子以后一直想搞智能家居自动化各种事情,最近终于腾出空可以搞辣!研究了一圈感觉拆开关太麻烦了,零火线还要撬开关,租的房子不敢瞎搞。想了一下可以用arduino/树莓派加上小马达来实现敲击开关,不过自己做的话估计比较丑而且外壳设计这些比较偏工业,我这种纯软件程序员也并不熟悉233于是又搜了一下,果然有roome和华硕各...
2020-01-01 18:45:30 31160 5
原创 191018 pwn-HITB_dubai polyfill
Polyfill写作dubai-ctf,然而在阿布扎比举办233风格迥异,被毛子吊锤一百遍啊一百遍第二天主要在看一个wasm的pwn,发现了UAF的漏洞但是由于对heap没了解所以没写利用。队里的pwn手觉得没法用所以没写,最后偷了流量重发爽了一天。赛中修复了题目,但是并没有起效。事后分析了一下确实是那个UAF的洞。题目文件http是一个web演示接口,可以通过html+js+engin...
2019-10-18 14:01:49 27266 3
原创 190927 re-某恶作剧APK的分析
用JEB打开,首先扫一眼AndroidManifest.xml的相关信息从包名可以看出[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvszbl92-1569599143824)(https://i.loli.net/2019/09/27/ybnJIaoRwrq3tsX.png)]是一个androlua项目,稍微搜一下就可以知道是用Lua写android。所以...
2019-09-27 23:46:23 28062 1
原创 190919 pwn-第五空间final_十生
说是题目,其实就是飞秋0day 233之前虽然听说过各种windows的pwn软件停止更新已久,保护都没开,是比较古老的玩意儿了于是很容易搜到各种POC例如0x49D03F处的整形溢出v54是输入进来的字符串,因此可以提供4294967295=0xffffffff=-1从而使memcpy发生缓冲区溢出的异常,然后通过覆盖SEH的方式进行利用通过cyclic生成字符串填入,可以测出溢...
2019-09-19 11:20:32 27117
原创 190825 reverse-ogeek初赛
好久没写博客了_(:з」∠)_回头有空补一下DEFCON的过程和题目复盘啥的…babyre浏览一遍可以看出来很明显是一种压缩算法,简单搜了一下发现比较像LZ77,但是据说有很多变种,没找到什么好的实现就接着自己逆了简单理解了一下原理,在buff内搜索与后17个字节相匹配的最大子串,如果有就记录下buff的下标和子串长度,没有则写入原始内容以供之后使用简单来说就是所有数据仅出现一次,其他地方...
2019-08-25 23:56:30 27778 3
原创 190727 pwn-ciscn_final_14
搞了快三个小时才出来_(:з」∠)_几乎白给雷泽太强了!简单逆向后可以知道该程序具有注册和登陆功能注册后会给name赋值为userx,而get_flag的需求为name==adminxpasswd成员存储原始密码加盐(随机数)加密后的结果code成员存储其他成员加盐(随机数)加密后的结果登录时校验passwd和codeStruct:00000000 User ...
2019-07-27 22:15:48 27292
原创 190705 安卓-对抗AndResGuard的重打包
换了一个apk实验后apktool b -f -p. xxx也不行,仍然报资源错误看了一下可能是鹅厂出的AndResGuard工具,会将资源文件夹/Res/xxx重命名为/r/x类的目录,导致资源解析出错针对这个混淆有shakaApktool来对抗,但由于太久没有更新所以已经失修了于是无奈回归apktool -r不解析资源文件、原样打包的思路对于AndroidManifest.xml的二...
2019-07-06 17:55:31 27412 3
原创 190702 安卓-Frida-gadget
开始鹅厂实习的社畜搬砖生活(°∀°)ノfrida-gadget的优势在于通过对应用重打包,加入gadget.so的调用,从而实现frida的hook这种途径避免了注入所需要的root权限发现了一个现成的脚本,但测了一下似乎有一些问题,明天修一下看看以下是手动流程解包apktool d xxx.apk-r选项可以使得不解析资源,但AndroidManifest.xml也不会解析,此时无...
2019-07-02 23:43:24 29844 5
原创 190617 逆向-神盾杯(Reverse)
突然想起来我还有个博客(……这一个月来各种比赛跑,然而主要都是被pizza带飞。得赶紧抽空整理一下各种题目神盾杯re500的c#没啥思路,本身对.net机制确实没啥深入理解…加入TODOLIST留待日后研究了(babyjs拿到html后发现按钮调用了checkLogin函数在控制台输入checkLogin即可看到源码obfacros一看题目描述又是--garzon家俊那个混淆狂魔...
2019-06-17 17:56:22 26940 2
原创 190505 逆向-DDCTF2019(Reverse)
咕咕咕咕咕连续若干CTF以后就是各种考试作业DDL催命_(:з」∠)_等这两周各种考察课完了慢慢补各种活儿吧~先交一下之前的DDWP-0-还请各位大佬多指正~Windows Reverse1通过段名发现是UPX壳,upx -d脱壳后进行分析核心函数只是通过data数组做一个转置,反求index即可值得一说的是data的地址与实际数组有一些偏移由于输入的可见字符最小下标就是空格的0...
2019-05-06 00:08:37 25889 5
原创 190409 逆向-RCTF2015(FlagSystem)
想起来前段时间搞了JEB3的泄露版,找了个安卓题来试试手结果发现这题目也挺有意思的23333提供的题目文件是一个二进制,十六进制查看器发现头部标着ANDROID BACKUP,显然就是个应用的备份文件了查了一下可以通过abe.jar来解包,试了一下发现解出来的文件是乱码,毫无标志于是找了一下文件解析,发现第三行为压缩标志位,源文件为0表示未压缩,于是将它改成1,再次解包,得到两个应用看...
2019-04-09 00:54:38 25458 1
原创 190407 逆向-西湖论剑杯
Re1-easyCppIDA打开发现一大堆模板很丑,但仔细看一下其实只有一堆变量来回操作而已基本上就是各种STL和vector的用法,算法名都保留下来了所以难度下降很多基本流程是接收输入、生成斐波那契数列的十六项然后对输入依次使用transform和accumulate算法分别是遍历vector中的一元运算和二元运算运算都是自定义的方法,双击算法进去可以看到lambda函数tra...
2019-04-08 00:13:51 26388 6
原创 190404 逆向-利用溢出修改TLS的re题
偶然在52上看到 这个帖子顺手打开看了一下主函数这里有个错误指令,附近没有跳转所以大概不是花往上翻一下标准的try语句,新增了一个异常处理结构可以看到handler指向了401269+1的地方,而401269正好就是错误指令地址也就是说相当于一个花了修正一下变成这个样子直接输出RROR!然后退出就全完了233注意到输入的buff在data段,以及scanf是%s来的,所...
2019-04-04 21:00:27 24497
原创 190401 逆向-华硕供应链木马样本分析
随便谷歌了一个样本来,md5:55a7aa5f0e52ba4d78c145811c830107恶意代码在__crtExitProcess中调用用GetModuleHandleW(0)拿到本模块的加载基址,然后通过偏移调用IAT中的VirtualAlloc这里IDA的Hexrays不知道为什么值优化错了,对着0x4709f找了半天都没找到东西,看了一下汇编才发现是0x11c27c接着同样...
2019-04-01 18:15:18 24083
原创 190330 逆向-嘉韦思杯re2
划一波水,re1秒了,re2看起来挺有意思的就处理一下main函数有一个花指令使得CreateFunction失败jmp跳到了自己指令的中间部分,NOP掉即可然后重新在开头按P或者右键CreateFunction就可以F5了main函数里没啥好说的,这个花不去也无所谓,反正汇编也看得出来call 8048580要返回1才可Correct先看一下这个函数的CFG比较像控制流平坦化或...
2019-03-30 22:29:02 23668 2
原创 190328 逆向-浅谈反调试
调试机制Linux通过ptrace系统调用来调试子进程对于create类型,与正常创建子进程工序相同,通过fork创建子进程后使用traceme来告知内核它需要被调试,这样等到exec执行的时候内核就会产生SIGTRAP,此时调用wait的父进程就会接收到这个信号并ptrace子进程,从而使得调试优先于子进程的所有内容而对于attach类型,是父进程直接使用ptrace去调试其他进程,如果...
2019-03-29 01:11:02 25339
原创 190326 逆向-MFC逆向技巧
MFC简介微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。–百度百科虽然由于实际应用中MFC似乎即将被淘汰,(据说微软放弃更新十几年,但从版本号和种种迹象来看似乎是还在不断更新的,V...
2019-03-27 23:43:02 26659
原创 190321 逆向-花指令去除(脚本)
Pizza的脚本中是通过get_bytes和patch_bytes两个API来将所有机器码读出然后再Patch回去的中间匹配pattern的过程是构造字符串然后find来控制这样操作的优点是find的效率奇高,对于大量数据的处理非常的快而我们之前使用的逐字符匹配pattern的优点是可控性比较强,例如通配符的存在然而缺点就是速度很慢,对于数量级较大时格外明显,因此试图修复刚开始以为速度...
2019-03-22 02:11:22 31240
原创 190320 逆向-单字节穷举
单字节穷举前言穷举是做任何题都最简单的方法但考虑输入为任意字符串,则穷举空间就有95len(95是常见可见字符的数量),随便一个flag长度为几十就会导致计算时间突破天际所以一般情况下不会考虑穷举但当题目具备一些特殊情况时就可以通过一些手段来降低穷举空间到可以接受的大小最简单的情况当然就是程序每接收一个字符都会做出反馈攻击者只需要穷举91*len次即可得到正解,即将穷举空间从几何级降...
2019-03-21 01:55:23 555
原创 190319 逆向-花指令
以前也接触过简单的花指令,基本上就是jz/jnz式的固定跳转前几天的某比赛中出现了一个相对而言比较复杂的花指令,参考pizza的笔记开始一阵学习XD前言花指令指的是没有卵用,会干扰代码阅读甚至反编译,却不影响程序功能的代码。广义上来说OLLVM、VMP一类的代码改变型混淆也属于花指令,本文所指的是指会干扰反汇编、影响机器码解析但不影响正常机器码的字节。原理产生花指令的根本原因是x86指...
2019-03-20 00:15:53 4956
原创 190309 杂项-路由配置
咕咕咕了小半年,回来继续更新啦(°∀°)ノ(尽量吧233最近都没什么比赛,所以一直在准备别的东西比如说别的比赛里有一项思科路由器的配置~通过gns3模拟器来操作的,添加IOS/IOU设备后即可进行设备操作...
2019-03-09 19:49:53 399
原创 181203 逆向-基于Frida的VM_log工具
做CTF中的VM题一直都是在python中手写一遍所有的handler来模拟执行VM,然后打log并结合代码来猜测逻辑然后慢慢地产生一个想法、本身程序也有在执行这个VM,何苦还要再手写VM呢,反正大多数情况下需要的只是log–再具体说的话就只是程序的reg和data而已通过在VM的每次loop之间插桩拿到data,也同样可以打出log由于CTF中的VM大多数情况下都不会很复杂,因此完全可以通...
2018-12-03 19:36:06 1565
原创 181202 逆向-2018鹏城杯
本次比赛的各个Re题目都对各种公开密码算法的运用考察比较多,还是挺有意思的~Reversebadblockmain函数打开发现是C++写的,充斥大量无用代码于是转头执行,发现接收输入后回弹err...搜索字符串发现有三处引用分别是两个anti_debug和一个puts_wronganti_debug分别通过ptrace和getpid()的方法,不必多说,调试的时候直接绕过即可put...
2018-12-02 23:56:19 1509 2
原创 181124 逆向-2018“柏鹭杯”厦大邀请赛初赛(Re1、2)
总体来说逆向的题目质量挺高~感觉学到了不少东西=-=就是第三题放题时间有点晚233没有公网的情况下做题难度确实比较大欢迎各位师傅交流~Re1JAVA层用JEB查看反编译代码,JAVA层做了如下操作有点绕,不知道是出题人故意还是无意地,这个处理写的很蛋疼除了上述列出的字符以外都是保留不变的output的范围是彼此分开的,因此可以写出该处理的反函数def decode(x): ...
2018-11-24 22:32:38 2500 1
原创 181118 逆向-HXB2018(Reverse)
这次的re难度不是太大……但是re2和re3都有点偏门,不太硬核233 但也挺有意思的Replaceupx -d脱壳,然后是一个比普通签到略复杂一点的签到题,没什么好说的要求table[input[i]] == atoi(data[2*i]+data[2*i+1])^0x19table = [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0...
2018-11-19 00:27:33 1085 3
原创 181116 逆向-EIS2018(SimpleAssemblyReverse)
忘记报名了OTZ就看了个"web"题,re有空再看看吧~SimpleAssemblyReverse不太明白题目里都写着Reverse了为啥还算在Web分类下面0.0静态分析及准备访问IP只有一个输入窗口和按钮之前做过几个WebAssembly的题目了,也算轻车熟路了233用Chrome按F12调出Network窗口,找到flag.wasm,选择Open in new tab,即可保存下...
2018-11-16 21:31:46 957
原创 181111 逆向-HCTF
感谢HCTF的师傅们献上的题目~相对而言比较喜欢v爷爷出的spiral(虽然有多解(斜眼其他几题难度差了点儿_(:з」∠)_Reversespiralmain函数中比较简单输入通过argv[1]送入sub_12F9E0中检查格式,并返回除"hctf{}"外的字符个数,要求为73sub_12FB10中分隔输入,处理为46+27两段内容sub_12F430中检查第一段46个字符su...
2018-11-12 20:04:32 888 4
原创 181107 开发-Windows下的SMC(VisualStudio的常量链接和ASLR)
最近又要出个题orz黔驴技穷只好又掏出来SMC这次要求平台是Windows,于是在上次的linux+gcc基础上进行改动之前在linux下实现SMC时最关键的问题是将.text段赋予写权限(或者将.data段赋予可执行权限,一个道理),使用的是mprotect这个函数而到了windows平台下虽然可以编译,但是跑不了查询了一下发现需要换用VirtualProtectVirtualProt...
2018-11-07 19:57:20 920
原创 181105 逆向-DHB(re+easy_pyc)
随手写的用来应付提交的WP╮(╯_╰)╭想想其实也没啥需要细写的,有不懂的童鞋在评论里留言吧~我会尽快回复的XD见谅啦easy_py直接反编译提示元组下标越界用010模版看了一下,几个data都没有问题那么问题只可能出在code里了简单扫了一下发现头部有一个64 23 33,这是指令(64)+数据(23 33)的格式。由于py的字节码中引用data都是通过下标来操作的,一般来讲是从0开始...
2018-11-05 23:04:48 492 2
原创 181010 逆向-inctf(ultimateGo)
整体思路和切入点看标题大概就能猜出来是Go语言IDA加载进去看,还是没符号的Go语言逆向……之前做到有符号的是从main.main函数入手,现在连符号都没有,只好从字符串突破了运行发现有输入提示“Enter pass:“和错误提示"Wrong”Shift+F12的字符串检索中没有出现这里要知道与C语言用’\0’表示字符串结束不同,Go语言会将所有字符串连接在一起,通过起始指针和字符串长...
2018-10-11 04:03:10 1483
原创 181008 逆向-inctf(load3r、Decoy)
题目提示可知bin文件为bootloader将其用IDA打开,选择16-bit模式加载,即可看到反汇编出的程序由于IDA不支持16-bit的F5,所以只能读汇编不过由于bootloader对长度有限制,必须为512字节以内,因此相对不是很复杂多提一句,按空格可以转为graph模式,这个状态下可以看到代码块之间的跳转关系,非常方便以seg000:000B ...
2018-10-09 01:20:23 777
原创 181007 安卓-构建数据库
安卓自带一个Sqlite数据库,但是我对sql不是很熟~毕竟不会开发不会web的逆向菜狗233正好看到书上有讲Litepal这个方便的工具,部署也超级简单,就实践了一下Litepal方便之处在于可以将数据库的记录与Java对象建立映射,通过Bean类来快捷地操作记录首先在build.gradle里的dependencies加上compile 'org.litepal.android:core...
2018-10-08 02:00:02 323
原创 181006 安卓-爬取数据
准备用课程表作为练手的项目~在搞最棘手的界面之前,先实现自动爬取教务系统的代码吧数据爬取最简单的就是直接通过Http连接拿到html,然后通过正则拿到分组数据不过搜索的时候发现Java下还有个jsoup更加方便:可以直接按照html的节点进行数据提取最常用的的是jsoup.connect(url).cookies(cookies).data(data).post()但是发现爬出来的总是有...
2018-10-06 23:08:18 880
原创 181005 安卓-Activity(菜单和活动间穿梭)
四大组件中的活动(Activity)类比到Windows中的话,也许Activity比较接近于浏览器中的页面每个“视觉窗口”都是一个Activity,都相当于一个新的页面,具备各自的控件、函数事件等等菜单在/res/menu/main.xml中创建布局和各个Item的控件每个item用如下格式被包含在menu中<item android:id="@+id/add_item" ...
2018-10-05 02:52:57 351
原创 180928 逆向-Flare(6-3)
在完成一轮循环以后,程序会读取自身,找到结构体部分,然后乱序再回写入文件于是可以通过一个管道启动进程,然后一边读取文件获取结构体信息,一边通过管道与程序交互将之前的脚本封装好,重复调用666次即可得到结果由于比赛还未结束,所以先不放出脚本了实践发现结构体的target_data是不会变的–当然这样比较方便,毕竟crc32和b64的正向生成函数都不在程序中,所以能变的只有顺序于是甚至可以...
2018-09-29 00:13:45 314
原创 180925 逆向-Flare(6-2)
去成都摸了个巅峰极客,感觉对渗透加深了一些理解,虽然还是不准备碰web23333靶场作为整个渗透流程的模拟,尤其是本次巅峰极客做了一个非常非常复杂的内网环境–达到三层甚至更多的跳转,还是挺有意思的 虽然如果前渗透–web不过关的话就没法开启后面的旅程了233 这样一想预选赛就掏出靶场来作为筛选,避免决赛无事可做还是挺有意义的不过作为bin狗还是希望可以在模拟过程中多加一些内容,例如APK/ex...
2018-09-26 02:06:54 386
原创 180913 逆向-Flare(6-1)
magic这个题目……看的我有点花orz主逻辑是铺好一个data,然后进行666次check 每次check如果通过的话会将data和输入进行异或,失败则会直接退出check内部乍看非常复杂,稍微逆一下可以看出来是个结构体 标好了导入进去即可使得check函数相对清晰 整体逻辑为检查长度-&gt;解密函数-&gt;调用func进行检查输入-&gt;加密函数并将输入copy到某...
2018-09-14 01:13:04 540
原创 180912 其它-实习总结
在滴滴安全部实习了近两个月,受了部门大哥和小姐姐们的不少照顾,虽然没有之前期待的单独教导,不过接触了不少甲方企业的实际需要也是收获颇丰实习期间接触了很多实际使用的APK,与CTF比起来代码量级差别及其明显,使用了大量的工程化的范式,而这是平常小应用开发、ctf题目中完全接触不到的在CTF中积累了不少逆向的技巧确实很有用,题目见多了,基本上整体的逆向方法论和思路也能培养一点,但是实际需求里及...
2018-09-12 21:57:23 757
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人