利用Angr进行简单CTF逆向分析-符号执行 (利用ANUSPLIN进行插值)

教程大全 2025-07-20 16:09:50 浏览

一、符号执行概括

简单的来说,符号执行就是在运行程序时,用符号来替代真实值。符号执行相较于真实值执行的优点在于,当使用真实值执行程序时,我们能够遍历的程序路径只有一条,而使用符号进行执行时,由于符号是可变的,我们就可以利用这一特性,尽可能的将程序的每一条路径遍历,这样的话,必定存在至少一条能够输出正确结果的分支,每一条分支的结果都可以表示为一个离散关系式,使用约束求解引擎即可分析出正确结果,这就是符号执行的简单阐述。

Angr是一个利用python开发的二进制程序分析框架,我们可以利用这个工具尝试对一些CTF题目进行符号执行来找到正确的解答,即flag。当然,要注意的是符号执行的路径选择问题到现在依旧是一个很大的问题,换句话说也就是当我们的程序存在循环时,因为符号执行会尽量遍历所有的路径,所以每次循环之后会形成至少两个分支,当循环的次数足够多时,就会造成路径爆炸,整个机器的内存会被耗尽。

利用Angr进行简单CTF逆向

二、Angr使用

个人感觉Angr在求解REVERSE题目时很有用,但在处理PWN题目时,多用在一些辅助的位置,比如寻找 strcmp 等敏感的函数等,这次我们简单的讲解一下如何使用Angr进行REVERSE题目的分析求解。我首先讲解一下Angr在实践中的几步关键操作,之后会使用一个简单的CTF题目进行实践。推荐大家使用ipython进行简单的实践,ipython的tab补全可以让你看到Angr中很多奇妙的函数。

1. 运行程序

我们在得到一个程序时,首先需要对此程序创建一个Angr工程。

我们可以通过这个工程得到程序的一些信息,比如程序名p.filename等等。

然后需要将这个程序运行起来,并且处理程序的一些输入,前面已经说过,在符号执行时,我们使用的并不是真实值,而是一个个符号,可以简单的理解为变量,所以我们需要构造一个Angr中的符号来当做程序的输入。

(1)命令行参数

当程序要求命令行参数时,我们首先需要使用claripy这个模块来定义抽象的数据。

claripy的BVS函数可以创建一个指定长度的抽象数据,BVS函数要求两个参数,***个参数为变量名,第二个参数为变量长度。

这样,我们就创建好了一个命令行参数,我们现在可以将程序运行到程序入口处,并获得当前的一个状态。

P.factory是工厂函数的一个集合,在这里面可以调用各种各样的函数来进行符号执行,其中entry_state()函数接收一个list作为程序的命令行参数并且返回程序入口的状态(这个状态将在2.2节讲解)。

(2) 标准输入

当程序需要从标准输入处读取数据时,需要使用read_from()函数,要注意,这个函数位于状态中,并且我们可以对输入进行一些约束以减少符号执行遍历的路径。

这表示我们从标准输入读入了5个字节,并且每个字节都不为换行符。

2. Angr中程序的几种状态

我们在之前提到了获取程序入口点的状态,状态在Angr中表示着程序符号执行后的几种结果,在Angr中,当获取到程序入口点的状态后,我们需要使用Angr的Simgr模拟器来进行符号执行

表示从入口点出创建一个模拟器来进行符号执行。

在 Angr 寻找路径时,程序的当前状态有多种表示。

3. 获取输出

当符号执行遍历玩路径后,会产生大量的状态,我们则需要从这些状态中找出我们所需要的一条路径。

我们可以获取当前状态程序的输出

命令行参数

标准输入

在求解命令行参数和标准输入的值时,我们使用了约束求解引擎来进行求解

3. Angr实践

bin(re50)下载:

脚本编写

运行

我们就得到了正确的key值 9563


街舞动作名称简介

街舞动作名称简介. B-boyBreaking Boy, Boogie Boy,只要是跳Breaking的都叫-Boy的团体个人或B-Boy团体间的挑战(俗称尬舞)Burned专门用来指称在尬舞时被打败的团体或个人由几个舞者一起连结或执行舞蹈动作指的是一个B-Boy最好的动作或wack当一个人做错了动作拉着自己滑过地板,Slide这个名字就告诉B-Boy该做“滑”的动作从别人那里偷学动作.1990B-Boy倒立且旋转,然后随着身体重量的移转由一只手换到另一只手做动 作,做到脚着地为止.(俗称手转)2000用一只手倒立,尽可能的旋转直到脚着地为止.(又称倒立手转) Airplanes风车加上双手向两旁尽量伸展高到你可以以抓住它们开始时,双手双脚都放在地上,脸朝上.一只手支撑住身体的重量脚往上踢然后旋转,在脚着地前另一只手先着地.如果做的正确的话应该整个身体都能旋转到一个最基本的动作向其它B-Boy挑战尬舞.双脚蹲下,背向后仰双手支撑,然后一只脚向空中踢,踢的越高越好.然后双脚向后跳跃,重复-lehhed applejacks和Applejacks一样,不同的是并非踢一只脚,而是踢两只脚利用背部作旋转的表演.所有的重量平衡在背的上半部,脚缩起来尽量靠近身体.旋转的要诀就是双脚在空中做圆形的划动.(俗称背旋)Backswipe和Airswipe是相同的,但是除了当你的脚在一半的时候加进来,你改变方向回到开始时的动作风车,双手环抱在前就像风车一样,不同的是他不是用手或用头去转,而是用胃(肚皮)和UFO类似,除了膝盖是在伸直的双手中,然后双脚是离开地面的开始时坐在地上,双脚在身前形成V字形.然后手撑在双脚间,接下来撑起身体,只有手能碰地,然后转圈,Bronco先从脚开始,然后是只有一只手向下,脚往后踢然后脚又再次放下,重复所有的动作类似像Flare,不同的是双脚在身前伸直向上,然后转圈上下跳动在Cannonball的动作中双手环抱着膝盖就像Airswipes,但不只做一个.作Airswipes一次又一次且动作中间不停顿一个几乎和Handglide相同的旋转动作,除了当旋转的手离开地面旋转又重回地面时,会有偶而重量转变成为推挤手。 如果做的好,看起来就像是连续的旋转动作。 Double99就像作一个2000(Onehand99),但是当你要放下一只手换成另一只手时,踢脚以得到速度然后续作2000(Onehand99)的动作,每一只手持续的作不停下来. Downrock用手的中心支撑着整个舞者的重量然后腿和脚持续的作有节奏的圆形的舞动,腿和脚的动作又是绕着手的动作做.通常会结合Freezes和Hesitations动作,并且是在其它动作之后紧接着做动作和位置类似像手转,不一样的是用手轴转而手释放在腹部的位置类似像风车,脚一样要在空中做很大的圆圈,但是不要动肩膀,而是将重量放在双手上动作和位置类似像手转,不一样的是用拳头转用手让身体做水平的平衡,但是除了脚之外,脚要弯曲以帮助平衡用手作风车并且横跨过整个胸部当B-Boy在尬舞时,当他很有可能会输掉时所做的动作风车的动作,但是却不是由肩膀转到肩膀而是用头去转.(俗称刷头风车)Handglide和Bboy在做Float的动作相似,不同的是只有一只手支撑身体,另一只手帮忙去推着旋转.(我们称为直升机)Headslide当一个Headslide动作完成后反转,用头停住用你的头转.要用手和脚去开始旋转.(就是头转)Helicopter一只脚在身体下另一只脚向外伸展,另一支伸展的脚则是做Horozontalplane画圆动作时仍然持续伸直,然后越过另一只脚底下在绕道前面去(Freeze)停止或暂停,在做Downrock圆圈动作时-up背部平躺撑起,脚在后面转动然后把脚踢向空中,上半身跟着起来再用脚着类似像风车一样,不同的是脚都是交*弯曲的所有的重量都平衡在碰到地板的那一只膝盖上,另一只脚则伸起在高处,旋转的要诀就是利用双手去推,速度的增加是在一连串动作做完后靠着在后面的脚拉向自己的身体以产生速度只转一下的风车用手盖住胯下的部分作风车作Kip-Ups的动作然后背部下降再重复做一次这被认为是一个很需要弹性的动作.大腿放在背后,膝盖放在肩膀上靠近耳朵的位置,小腿在前面,重量平衡在手或是脚或是两者.

特洛伊木马名字的前缀是什么

按照个人喜好,或者随便乱打的名,但是木马的大小不会超过 1M ,不会低于120KB一下。 。

三菱PLC中的M8147表示什么意思,什么情况下为1,什么情况下为0?

三菱PLC特殊继电器M8147监控的是Y0脉冲输出,M8148监控的才是Y1脉冲输出。 特殊继电器M8147和M8148的作用是当Y0和Y1有脉冲输出时,M8147和M8148置1,没有脉冲输出时置0。 M8147是三菱PLC中的特殊继电器。 M8147监控的是Y0脉冲输出,M8148监控的是Y1脉冲输出。 PLSY:16位连续执行型脉冲输出指令 DPLSY:32位连续执行型脉冲输出指令。 FXPLC的PLSY指令的编程格式:PLSY K1000 D0 Y0K1000:指定的输出脉冲频率,可以是T,C,D,数值或是位元件组合如K4X0。 D0:指定的输出脉冲数,可以是T,C,D,数值或是位元件组合如K4X0,当该值为0时,输出脉冲数不受限制。 Y0:指定的脉冲输出端子,只能是Y0或Y1。 扩展资料:继电器线圈在电路中用一个长方框符号表示,如果继电器有两个线圈,就画两个并列的长方框。 同时在长方框内或长方框旁标上继电器的文字符号“J”。 继电器的触点有两种表示方法:一种是把它们直接画在长方框一侧,这种表示法较为直观。 另一种是按照电路连接的需要,把各个触点分别画到各自的控制电路中,通常在同一继电器的触点与线圈旁分别标注上相同的文字符号,并将触点组编上号码,以示区别。 参考资料来源:网络百科-继电器

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐