首页 > 其他分享 >angr使用记录

angr使用记录

时间:2024-03-14 22:23:02浏览次数:23  
标签:函数 记录 recv dataLen angr 使用 wchar data

由于毕设需要,这几天在使用angr符号执行自动化挖掘格式化字符串漏洞,但是对angr的了解不多,导致在使用的时候屡屡碰壁,在此记录一下。

本来写了一个简单的通用检测脚本,但是在使用脚本对CWE-134的一个样例(SARD)进行分析时,发现无法找出漏洞点。

检测脚本测试格式化字符串漏洞的逻辑很简单,就是对关键函数的参数进行检测,看其是否符号化。

初步阅读待测程序源码,发现其漏洞点为swprintf函数,问题程序段如下:

void CWE134_Uncontrolled_Format_String__wchar_t_listen_socket_snprintf_68b_badSink()
{
    wchar_t * data = CWE134_Uncontrolled_Format_String__wchar_t_listen_socket_snprintf_68_badData;
    {
        wchar_t dest[100] = L"";
        /* POTENTIAL FLAW: Do not specify the format allowing a possible format string vulnerability */
        SNPRINTF(dest, 100-1, data);
        printWLine(dest);
    }
}

在符号执行时,我对swprintf函数挂钩子抓取参数信息,发现其data地址处内容为空,并未符号化。

 输出结果:

 因此对data进行溯源,发现其来源为:recvResult = recv(acceptSocket, (char *)(data + dataLen), sizeof(wchar_t) * (100 - dataLen - 1), 0);

即data处内容为recv函数得到的套接字传输数据,对recv函数挂钩子抓取参数信息

 打印buf参数,发现输出如下:

 可知data地址为0x7ffefdbc,但是后面的参数为一个未初始化的符号变量,且可能是wcslen结果不确定造成的,阅读待测程序源码发现dataLen的定义为size_t dataLen = wcslen(data);

因此可知angr在符号执行时wcslen计算结果不确定导致recv函数未能对data地址处数据符号化,从而导致swprintf函数处的格式化字符串漏洞未被找出。

知道了问题产生的原因,解决方法就很暴力了,在钩子处直接把固定地址提出来将符号数据写入即可。

小小的问题,大大的折磨

标签:函数,记录,recv,dataLen,angr,使用,wchar,data
From: https://www.cnblogs.com/Explosion556/p/18074157

相关文章

  • 使用Dockerfile构建一个django项目
    公司使用docker流程(以图书管理系统为例)第一步:有一个项目,pycharm开发着,开发完后第二步:在项目路径下新建Dockerfile,写入FROMpython:3.9MAINTAINERzengWORKDIR/softCOPY./requirements.txt/soft/requirements.txtRUNpipinstall-rrequirements.txt-ihttps://pypi.d......
  • 使用EasyExcel读取Excel文件遇到的小问题
    没有读取到内容的问题excel内容具体代码importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.annotation.ExcelProperty;importjava.io.File;importjava.util.List;publicclassTestEasyExcel{publicstaticvoidmain(String[]args){Lis......
  • 什么是服务器端广告插入(server side ad insertion - SSAI)- 为什么说采用IAB技术实验室
    服务器端广告插入(SSAI-serversideadinsertion)是在联网(有线)电视上广告竞标行动中的最流行的技术解决方案之一。SSAI是一种在视频流加载到用户设备之前将广告植入在一起的技术。它可以用于任何连接或超顶级(overthetop-OTT)视频环境,包括社交环境,但大部分需求来自CTV的爆......
  • 千帆AppBuilder使用指南-个人中心(上)
    我的应用概述您可根据业务需求和使用场景,基于不同官方应用快速完成个人应用的创建,完成创建的个人应用将全部展示于【我的应用】,您可对已发布的个人应用进行在线网页分享体验和API调用。管理我的应用您可通过应用列表,快速查看和管理所有您个人创建的应用。应用配置点击「......
  • vue3 瀑布流 vue-masonry使用方法
    npminstallvue-masonry--savemain.js文件中引入import{VueMasonryPlugin}from"vue-masonry";app.use(VueMasonryPlugin)在页面中使用<divv-masonrytransition-duration="0.3s"item-selector=".item"......
  • Langchain-Chatchat开源库使用的随笔记(一)
    转自:https://zhuanlan.zhihu.com/p/6760612691Chatchat项目结构整个结构是server 启动API,然后项目内自行调用API。API详情可见:http://xxx:7861/docs ,整个代码架构还是蛮适合深入学习 在这里插入图片描述 2Chatchat一些代码学习2.112个分块函数统一使用截止2023......
  • 有手就会Python自定义模块使用
    1.自定义模块自定义模块一般是在项目中根据自己的需求进行的封装项目中自定义了额一个模块,module.pyname="张三"age=23weight=160height=187deftest():print("测试的方法")defdemo():print("天使的眼泪")deffn():print("老鼠爱大米")2.......
  • MongoDB从0到1:高效数据使用方法
            MongoDB,作为一种流行的NoSQL数据库。从基础的文档存储到复杂的聚合查询,从索引优化到数据安全都有其独特之处。文末附MongoDB常用命令大全。目录1.引言MongoDB简介MongoDB的优势和应用场景2.基础篇安装和配置MongoDBMongoDB基本概念使用MongoDBShel......
  • 信息收集域名搜索工具及使用
    域名扫描工具oneforall特点:相对较慢,相对较全,误报率高subDomainsBrute2、服务器信息收集pin域名网站归属信息ip138.comCDN内容分发网络绕过cdn访问真实ip方法:(1)超级ping使用所在全国不同地区服务器去访问该网站获取返回ip判断是否使用cdn工具:https://ping.chinaz.com......
  • Python使用RocketMQ(消息队列)
    消息队列在日常开发中比较常用的开发中间件,每家大厂一般都会具有自己的消息队列服务器。本文主要讲述Python中如何使用RocketMQ的相关SDK。希望大家在阅读本文前可以先了解一下RocketMQ的基本知识。使用 pipinstallrocketmq-ihttps://pypi.tuna.tsinghua.edu.cn/sim......