随笔分类 -  ctf学习

摘要:fastjs 通过搜索字符串找到切入点位quickjs。 通过更改源码dump出字节码的汇编。 function sdfsfsdf(str,key){ var v,k,n,z,y,delta,mx,e,q,sum,p; if(str==""){ return(""); } v=str2long(st 阅读全文
posted @ 2021-10-31 16:40 mio_yy 阅读(118) 评论(0) 推荐(0)
摘要:safe_box 这个题目利用了debug_blocker技术,创建一个互为调试和被调试的进程来阻止程序被调试。 并且利用了子进程的触发异常来与父进程通信,达到smc子进程的目的。 Odd_code 题目利用了jmp far 0xxxxxx的指令来切换cpu的执行模式,从32位切换为64位。再利用r 阅读全文
posted @ 2021-10-03 22:08 mio_yy 阅读(36) 评论(0) 推荐(0)
摘要:re1 1.ida分析 程序加了扰乱堆栈的花指令去除即可。 花指令: 改跳转逻辑即可,去除后。 2.程序执行流程 首先程序验证了输入长度在[0xC,0x2D]之中,并且格式为WMCTF{xxxxxxxxx}。 然后取出{}内的字符串的前4个按一定规则生成一个表,然后再读取后16个字符。 程序会对读取 阅读全文
posted @ 2021-09-04 16:34 mio_yy 阅读(296) 评论(0) 推荐(0)
摘要:Rev_Dizzy ida分析 分析得出对输入的每个字节都进行了运算,然后跟特定数据比较。 2.解题思路 只要把带比较数据作为输入把运算反着运行一遍就行了,利用py脚本来使运算反向。 py脚本: f1=open('D:\桌面\祥云\\re\\d.txt','r')#顺序 f2=open('D:\桌面 阅读全文
posted @ 2021-08-24 19:49 mio_yy 阅读(334) 评论(0) 推荐(0)
摘要:pipeline exp from pwn import * context.log_level='debug' #p=process('./pipeline',env={'LD_PRELOAD':'./libc-2.31.so'}) p=process('./pipeline') libc=ELF 阅读全文
posted @ 2021-08-13 13:35 mio_yy 阅读(58) 评论(0) 推荐(0)
摘要:no_output 可以说简单,也可以说难的题目。会用ret2dlresolve就简单,不知道就难。 exp: from pwn import * import time context.log_level = 'debug' #p=remote("39.105.138.97","1234") s= 阅读全文
posted @ 2021-08-11 21:24 mio_yy 阅读(106) 评论(0) 推荐(0)
摘要:babypwn exp from pwn import * from z3 import * context.log_level='debug' p=process(["/root/glibc-all-in-one-master/libs/2.27-3ubuntu1_amd64/ld-2.27.so 阅读全文
posted @ 2021-08-09 20:24 mio_yy 阅读(83) 评论(0) 推荐(0)
摘要:canary3 最后临死挣扎做了个题目,不亏。 关键就在这个验证,一开始看到有个md5加密,以为是把输入的密码md5后来比较。但是查md5发现那串东西什么也查不出来,然后觉得爆破也是不可能的,给的信息有点少。 然后在尝试输入32个字符后,发现比较时s2字符串的内容变了。才注意到s和s2是相邻的,那么 阅读全文
posted @ 2021-08-01 20:07 mio_yy 阅读(108) 评论(0) 推荐(0)
摘要:re easy_re 1.ida分析 有一处花指令,修改这个花指令。 2.分析 首先输入长度为5,然后把输入进行了加密,把加密得到的结果再进行一定的运算,最后和0x421930的数据进行对比。 重点是0x403250函数,这个函数是一个变异的md5,在当时做的时候没有看出来。 F函数:(X&Y)|( 阅读全文
posted @ 2021-05-29 15:09 mio_yy 阅读(73) 评论(0) 推荐(0)
摘要:Print 1.首先通过查看官方的WP,得知程序中实现了一个brainfuck语言的解释器。但是在自己去分析的时候就怎么也看不出来哪里实现了解释器,更不用说提取出其中的bf程序了。 2.在热心师兄的帮助下,找到了程序的分析方法。 3.首先程序的解释器:https://github.com/HexHi 阅读全文
posted @ 2021-05-07 15:28 mio_yy 阅读(217) 评论(0) 推荐(0)
摘要:crash 1.通过阅读其他的WP得知得到的是一个coredump文件,这里当时拿到文件都不知道怎么下手。 可以通过linux 的readelf -h命令来查看文件类型 2.直接ida分析 可以看到函数的符号表是缺失的。 3.从coredump文件中提取出二进制文件。 通过winhex打开cored 阅读全文
posted @ 2021-05-01 21:55 mio_yy 阅读(342) 评论(1) 推荐(0)
摘要:Re-white give 1.查壳为无壳,并且为x64的exe程序。 2.ida分析 运行程序,输出2行字符串。但是在ida中没有找到相应的字符串,猜测应该是把字符串加密了。 3.动态调试 得到这样的基本流程。 此处为输入数据的sha256加密,不过在一开始的时候没有认出来是sha256,大写的菜 阅读全文
posted @ 2021-03-11 14:29 mio_yy 阅读(104) 评论(0) 推荐(0)
摘要:1.首先这个程序在运行时创建了许多链表。 37x37的矩阵列表 2.check输入的长度是否为37 3.然后创建一个操作的链表,把37x37的矩阵和输入做矩阵乘法,组后得到的结果对25927求余。 4.最后把output2和一个数组进行比较。 sage脚本: res = [12586, 18694, 阅读全文
posted @ 2021-02-11 13:45 mio_yy 阅读(150) 评论(0) 推荐(0)
摘要:pypy 首先ida打开分析,通过字符串查找发现有许多Py开头的字符串,猜测是pyinstaller。 用readelf -S 文件名 查看验证 然后执行命令 archive_viewer.py文件可以在https://github.com/pyinstaller/pyinstaller得到 得到相 阅读全文
posted @ 2021-01-21 12:18 mio_yy 阅读(113) 评论(0) 推荐(0)
摘要:re123 首先用die查看 知道是一个chm文件。 然后用windows自带的hh.exe反编译这个文件。 命令为:HH.EXE -decompile 目标文件 得到关于这个文件的.htm文件。 可以看到那一段BASE64就是要用powershell执行的命令的BASE64加密后,所以我们BASE 阅读全文
posted @ 2021-01-20 14:46 mio_yy 阅读(213) 评论(0) 推荐(0)
摘要:这一题可以说挺费耐心的,复现了三天左右才做出来。 首先 通过函数sub_405bf0实现其他操作的分发。 图中均为分发的函数,然后就是通过动态调试来查看这些函数都实现了怎样的功能。 其中比较重要的几个函数是sub_402030,sub_402410,sub_4024c0 在调试过程中会找到有几个地方 阅读全文
posted @ 2020-12-15 22:34 mio_yy 阅读(191) 评论(0) 推荐(0)
摘要:解题收获: 1.文件的展开依赖于PE表,文件有两种状态:一种是在磁盘的非展开状态,和在内存中的展开状态。 2.通常情况下,文件的每个节的位置需要按照PE表中的节表的文件中块偏移的大小来排列。 3.异或操作的其他表示 a=10 b=(a|A)&~(a&A) c=a^A #输出结果显示b==c prin 阅读全文
posted @ 2020-11-30 16:28 mio_yy 阅读(37) 评论(0) 推荐(0)
摘要:re3 首先IDA打开分析,我啪的一下就找到了fake的main函数,很快啊。然后看到一个if判断,又啪的一下把输入给逆了出来,也是很快。但是我tm看到的是this_is_the_fake_flag,出题的你不讲武德。 然后再ida中注意到有一大段未成功显示的代码,然后就找到了真正的main函数和c 阅读全文
posted @ 2020-11-24 15:43 mio_yy 阅读(193) 评论(0) 推荐(0)
摘要:1.so_much ida打开得到从main()函数发现一个get_flag()函数。 get_flag函数: void __usercall get_flag(__int64 a1@<rcx>, __int64 a2@<rbp>, __int64 *a3@<rdi>, __int64 *a4@<r 阅读全文
posted @ 2020-10-03 17:40 mio_yy 阅读(197) 评论(0) 推荐(0)
摘要:菜是原罪。菜是原罪。菜是原罪。 1.WannaFlag 在做这一题的时候呢,通过用IDA的字符串搜索得到了输出FLAG的函数。但是却倒在了输出函数前的逻辑代码,还有就是在调试时的下GetWindowsTextA函数的断点。 2.EasyRe 对于代码段和数据段的理解还是不够深刻。在第一次用IDA打开 阅读全文
posted @ 2020-09-11 01:31 mio_yy 阅读(227) 评论(0) 推荐(0)