type
status
date
slug
summary
tags
category
icon
password
暑假第二周的学习
STL练习题
前面是STL的初始化,vector里面的值是v20里面的值
第一步先进行了map操作
这里就是对经过map操作后vector容器里面的值取出来进行操作,其实就是高低位变换然后取反
最后就是比较,取v17这个容器和v18进行比较
思路梳理完了接下来就是写脚本
Capstone引擎的学习
这里拿一道最近刚做的DownUnderCTF 2024作为学习
首先capstone是一个反汇编引擎
我这里随便找了一段代码,它主要实现的是反汇编
DownUnderCTF 2024-jmp_flag
我们看最后的判断,sub_1200的返回值要为真
qword_9010的值要为0
其实就是将你传入的值作为参数,(your_input[i])*128)+0x60,然后将基址+(处理的值)赋值为rax,然后跳转rax的值,有很多个函数就是对qword_9010内存处的值进行处理
有好多函数都是对qword_9010内存处的值赋值为-1,我们要做的是让qword_9010处的值不要为-1
但是函数太多了,而且这里的函数都是我手动修复,我们不可能手动把值都复制出来
首先我们要获取的东西是啥,我们要获取的是&操作的值,capstone的好处就是可以遍历所有函数,同时我们还可以提取里面的值,最后进行一个爆破操作
后记
其实一直想用idapython实现自动化,那天看杭电的一个师傅的博客,说他们队里面有个idapython大师,到时候取试一下这个思路
学习进度
这周主要学习了C++的面向对象和STL,C++反汇编的体现,以及capstone引擎
C++的学习进度: 学了面向对象和STL,目前只学了一些常见的STL,例如string,vector,list,map,C++的内存管理、对象模型还没有去了解
关于STL的运用,其实自己也找了一道题作为自己的检验,但是这道题明显是STL最基础的用法
同时也参考这个师傅的文章进行了学习
同时也学习了如何用idapython dumpSTL容器的内存
std::string内存布局
IDA dump脚本
std::map内存布局
IDA dump脚本
std::vector内存布局
IDA dump脚本
遇到的问题
C++面向对象
其实C++面向对象里面我觉得刚开始接触最难懂的地方是虚函数,就是不太懂它的运行机制,我觉得自己可能还是需要从堆栈的角度去理解一下
做题遇到的问题
就是这两天做的HITCONCTF 2024,里面有一道叫做antivirus的题目
里面给了两个文件 print_flag.cbc 和run.sh, print_flag.cbc为反病毒的签名
run.sh里面的内容起到的作用是就是扫描这个exe是否符合这个签名
然后我们找到clamav
这个字节码有1000多行,我们肯定不能纯逆
找到一个师傅博客里面是SECCONCTF2022 一道题的考法跟这个一模一样,但是那个师傅写了个解释器,我们把它的那个解释器拿过来改一下
后面主要遇到的问题是解析出了LLVM的代码,然后不知道如何下手了
其实也想系统的去了解一下LLVM,但是一直不知道从哪开始下手,现在遇到LLVM的题要不就是用插件,要不就是傻傻的动调
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- Author:5m10v3
- URL:https://5m10v3.top/article/ef4095d1-4045-405c-995d-73202bf68b86
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts