Angr 入门到放弃(二)
发布时间
阅读量:
阅读量
本篇直接以一个例子来进一步学习angr在CTF比赛中的实战
2021年SCTF上的checkin(虽然叫checkin但是并不是很checkin就是了)
这是一个auto pwn,每次连上去先进行一个sha256的验证,然后会给出一大段base64加密后的数据,接收下来然后解密并保存成二进制文件,是一个ELF格式的可执行程序,拖进ida里面会发现,程序逻辑很简单但是量很大,通过不断的读入字符串和数字,然后对数据进行异或,异或之后再和一些固定数据比较,根据比较结果进行跳转。并且每次连上去拿到的程序不一样,要求在120秒以内跑完(事实证明其实十秒以内就跑的完)。
这个问题位于最深层区域存在栈溢出漏洞,并预设了后门函数入口。这意味着我们需要利用自动化工具来识别能够到达溢出点的输入数据。然后我们只需将栈溢出操作转换为返回地址指向外部代码即可。而Angr则能够完美地承担这一自动化任务。
大致来看看程序逻辑:

涉及数千行的伪代码结构分析工作在当前阶段并不可行。然而由于该算法的核心逻辑相对简单易懂因此我们可以专注于实现关键部分。具体而言我们需要设计特定的 hook 点来处理以下几点:针对
全部评论 (0)
还没有任何评论哟~
