1day漏洞反推技巧实战(3)
代码审计必备技能,github代码对比,写一笔:
搜索某开源组建漏洞,搜索出来某个版本rce:
通过消息得出:存在漏洞版本:1.10.10 ,修复漏洞版本1.10.11
去github寻找apache-airflow:
打开就是主分支:
切换到漏洞版本分支:
有两个办法:
(1)https://github.com/apache/airflow/tags
一个个翻,翻到对应版本,往下拉
(2)搜索Tags分支,切换分支:
切换过来然后:
切换分支下载对应版本项目:
git clone -b 1.10.10 https://github.com/apache/airflow.git
这样就把存在漏洞的版本下载下来了,修复版本是1.10.11
下载修复版本:
git clone -b 1.10.11 https://github.com/apache/airflow.git
下载之后可通过
git diff 文件夹1 文件夹2:
这样就可以查看修改了哪些文件:
除了下载下来查看,也可以直接网页查看对比:
https://github.com/apache/airflow/compare/1.10.10...1.10.11?diff=split
可以看到1.10.10~1.10.11之间提交的Commits和修改的文件:
查看代码修改,左侧是修复前,右侧是修复后的代码片段:
遇到的问题:Commit太多了,版本更新迭代的文件太多了,这时候,我们怎么定位到哪个是问题文件?
(1) 理想状态:第三方漏洞预警平台提供了对应的漏洞Commit提交记录
(2)只知道某种漏洞类型,如sql注入类型/rce类型
大部分都是2,如果是1的情况,直接看对应的Commit提交记录就可以了,不要那么费劲
如果是2,只知道漏洞类型怎么办?
举例子说明:git diff配合grep:
git diff airflow airflow_novuln/ | grep "command" > aa.txt
去漏洞版本项目中搜索部分代码片段:
grep -rn "echo \"Here is the message: '" ./
找到漏洞文件,如果还有更好的方法,麻烦留言!
1day漏洞反推技巧实战(3)的更多相关文章
- 1day漏洞反推技巧实战(1)
学习笔记里的存货(1) 以前看了一篇推特老外做赏金猎人的文章,感触有点深,作者没有写相关漏洞分析,只是说了自己挖了多少个漏洞,这里简单的分析下: 1day漏洞在很多时候至关重要,不管是在红蓝对抗,还是 ...
- 1day漏洞反推技巧实战(2)
学习存货(2) CVE-2018-11784简单分析之反推的魅力 看着挺有趣的,简单分析下: 通过搜索tomcat漏洞找到: http://tomcat.apache.org/security-7.h ...
- Gym 101102J---Divisible Numbers(反推技巧题)
题目链接 http://codeforces.com/gym/101102/problem/J Description standard input/output You are given an a ...
- Python高效编程技巧实战 实战编程+面试典型问题 中高阶程序员过渡
下载链接:https://www.yinxiangit.com/603.html 目录: 如果你想用python从事多个领域的开发工作,且有一些python基础, 想进一步提高python应用能力 ...
- dwr2反推
package services; import org.directwebremoting.Browser; import org.directwebremoting.ScriptSessions; ...
- Anipang2反推文档
此文档主要用于一个开发同学尝试学习描述一个产品的基本设计.也许工程师都应该有类似能力. 反推的基础,目前是自己玩过的一些关卡和youtube上的一些关卡通关视频,主要是前120关.(120关后面应该是 ...
- base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法
用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...
- JavaScript反调试技巧
一.函数重定义 这是一种最基本也是最常用的代码反调试技术了.在JavaScript中,我们可以对用于收集信息的函数进行重定义.比如说,console.log()函数可以用来收集函数和变量等信息,并将其 ...
- HackerRank - string-reduction【反推】【规律】
HackerRank - string-reduction[反推] 题意 给出一串 只有 字母 a, b, c 组成的字符串,然后没两个不同的字符碰到一起都可以变成另外一个字符,然后变到最后,求最短的 ...
随机推荐
- 【计项02组01号】Java版图形界面计算器
Java版图形界面计算器1.0版本 项目分析[1.0] 组成部分 代码结构 (1)窗口的创建 在<JDK 核心 API>中我们提到,创建一个窗口需要使用 JFrame 类.在本实验中,我们 ...
- 设计模式-Java版-全-附代码-超生动实例
阅读推荐:设计模式-简单篇 项目地址:https://gitee.com/zwtgit/gof23 学习网站推荐: https://refactoringguru.cn/design-patterns ...
- system (color XX )函数详解:调整控制台颜色的命令
1.指定控制台输出的颜色属性 2.颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景.每个数字可以为以下任何值之一: 例如: "COLOR fc" 在亮白色上产生亮 ...
- 《剑指offer》面试题68 - I. 二叉搜索树的最近公共祖先
问题描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p ...
- 【VictoriaMetrics】vm单机版和vm-storage的查询功能的对比
1.vm-storage源码调用表 文件 行号 函数 说明 app/vmstorage/main.go 53 main 入口94行调用srv.RunVMSelect() app/vmstorage/t ...
- 【机器学习基础】无监督学习(1)——PCA
前面对半监督学习部分作了简单的介绍,这里开始了解有关无监督学习的部分,无监督学习内容稍微较多,本节主要介绍无监督学习中的PCA降维的基本原理和实现. PCA 0.无监督学习简介 相较于有监督学习和半监 ...
- QT之事件机制
MyPushButton.h: #ifndef MYPUSHBUTTON_H #define MYPUSHBUTTON_H #include<QPushButton> #include&l ...
- golang中锁
一.什么场景下需要用到锁当程序中就一个线程的时候,是不需要加锁的,但是通常实际的代码不会只是单线程,有可能是多个线程同时访问公共资源,所以这个时候就需要用到锁了,那么关于锁的使用场景主要涉及到哪些呢? ...
- Error: xz compression not available解决办法
centos6升级php时误安装: rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mir ...
- Android开发----使用 Room 将数据保存到本地数据库
Room介绍以及不使用SQLite的原因 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库. 处理大量结构化数据的应用可极大地受益于 ...