分类: CTF学习日志

38 篇文章

春秋杯冬季赛day2 easy_http复现
这个题比较恶心的地方有两个,第一个是这个题没有libc,把所有libc的函数自己重写了一下,符号表全部抹掉了,所以有很大的逆向难度,第二个是这个题有很多进程,多进程调试也是比较繁琐的一个点,看过官方题解后,发现漏洞点本身其实是比较简单的,就是逆向难度确实比较大,ida有些地方反编译的也跟狗屎一样,所以这里我从一个做题者看ida的角度来分析这道题 题目分析 iot类型的题目,3成靠看,7成靠猜,这里猜测if里面的函数应该是某个检查,核心应该是红框里的函数 主体长这样,第16行的函数一开始乍一看比较…
2024羊城杯httpd复现
当时做的时候完全不会,现在学了一点iot,又看了看其他师傅的wp,发现这个题其实很简单 题目分析 一上来首先是一个切换目录,由于我是本地环境,所以把这里patch掉,不然程序运行不起来 接着就是接受请求头,根据后面的代码分析可知格式为 GET /xxx HTTP/1.0 第二行要填Host: xxx.xxx.xxx.xxx 第三行填Content-Length: xxxxx(不超过5位) 这里要做一个目录穿越的检查,不能回退到上级目录,只能用绝对路径或者当期路径。不过这个也不担心,前面告诉你了是…
从零搭建一个IOT/pwn环境
我用的环境是纯净的wsl的kali-linux子系统(现在还是强烈建议用Ubuntu22.04),什么也没有,接下来我们开始一步步搭建pwn环境,默认带的Python是3.12.7,建议读者也下载和我一样的python版本,避免后续环境由于版本不同出现问题 后文所有的Ubuntu-24.04下的安装命令都用蓝色标识,如果某条安装没有标明Ubuntu-24.04,则说明命令没有变化 换源 终端输入 sudo vim /etc/apt/sources.list 输入"i",出现INSERT字样,此时…
C++异常机制
人生的第一道C++ 原理解析 什么是C++异常机制? 网上的文章并不算多,并且都是就题论题讲的,所以我理解的也不是很透彻,这里只能说把我理解的尽可能清楚地解释给大家,也不一定保证所有细节都正确,但至少从调试的角度来说,我说的大体上是没有问题的。 C++的异常机制主要通过try,catch,throw这三个关键字来实现,具体的实现方式这里就不多赘述了,可以自行百度B站,你需要知道的比较重要的点就是try递归式的向上回溯搜索。 void func1() { throw "you catch the …
浅谈一下如何挖掘一个IOT漏洞
目前我自己本身也是对IOT比较感兴趣,在一点点的学习,目前都是从最基本的路由器开始学起,也算是小有心得,故写此文,希望能够帮助到大家。 说在前面 首先我们要了解一下有哪些漏洞类型会出现在路由器里:最常见的漏洞主要有这么几个(这些是我目前所了解的,后续随着学习深入会逐步增加)栈溢出漏洞,任意命令执行漏洞,信息泄露漏洞,任意文件上传漏洞等等,需要掌握的技能主要有计算机系统基础,计算机网络的基本知识,需要了解一点pwn和web的攻击手法,另外,由于物联网固件大多采用ARM或者MIPS架构,而日常使用的…
MISC脚本收集——爆破篇
生成密码字典的脚本 import itertools as its # words = 'abcdefghijklmnopqrstuvwxyz1234567890' words='1234567890' r = its.product(words, repeat=6) # repeat要生成多少位的字典 with open("pwd.txt", "a")as f: for i in r: f.write("".join(i)) f.write("".join("\r")) print("已保存为…
MISC初探——图像篇
BUUCTF:[SWPU2019]神奇的二维码 用到的工具:QR research——二维码检测 binwalk——分离文件 Audacity——音频处理 BUUCTF:[SWPU2019]神奇的二维码_buuctf [swpu2019]神奇的二维码-CSDN博客 题目是一个二维码,扫描之后是flag_is_not_here,binwalk看一下发现藏了好几个zip,没有加密的zip存放了base64加密过的密码,其中一个用base64加密了20次,解出来以后是一个摩斯密码音频 BUUCTF:金…
MISC脚本收集——编码篇
多次base64过的密文解码脚本 import base64 def decode(f): n = 0 while True: try: f = base64.b64decode(f) n += 1 except: print('[+]Base64共decode了{0}次,最终解码结果如下:'.format(n)) print(str(f,'utf-8')) break if __name__ == '__main__': f = open('./flag.doc','r').read(…