技术标签: git
目录
git log //查看提交历史记录,从最近到最远,可以看到3次
开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码。
利用 dirsearch这类扫描工具,如果存在./git泄露的问题的话,会被扫描出来的
攻击者利用该漏洞下载.git文件夹中的所有内容。如果文件夹中存在敏感信息(数据库账号密码、源码等),通过白盒的审计等方式就可能直接获得控制服务器的权限和机会!
Git大体上分为四个结构:工作区,暂存区,本地仓库(版本库),远程仓库
(1)工作区
所谓工作区,就是项目放置的位置。直白的说就是 .git 所在文件夹,就是你的工作区
(2)暂存区
暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
(3)本地仓库
本地仓库(版本库)用于存储各种版本(分支)的信息。直接点,.git 文件就是你的版本库,其中有一个 HEAD 文件,存储着用于指向当前分支的游标,通过这个游标就可以切换到版本库中存储的各个版本
(4)远程仓库
这个很好理解,就是一个服务器存贮着你的各种项目,像国内的 gitee ,国外的 github , gitlab 等等
.git目录:使用git init初始化git仓库的时候,生成的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。
COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,用户一个参考文件
config:Git仓库的配置文件
description:仓库的描述信息,主要给gitweb等git托管系统使用
HEAD:这个文件包含了一个档期分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent
hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他
git托管系统会经常用到hook script(钩子脚本)
index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
info:包含仓库的一些信息
logs:保存所有更新的引用记录
objects:所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名
refs:这个目录一般包括三个子文件夹,heads、remotes和tags,heads中的文件标识了项目中的各个分支指向的当前commit
ORIG_HEAD:HEAD指针的前一个状态
git init 初始化一个git仓库
git add && git commit //git 添加文件和提交文件
git status 查看当前仓库状态和内存状态
git ls-files -u 显示冲突的文件,-s是显示标记为冲突已解决的文件
git diff 对比工作区和stage文件的差异
git diff -cached 对比stage和branch之间的差异
git ls-files -stage 检查保存在stage的文件
git log 显示到HEAD所指向的commit为止的所有commit记录
git reset -hard HEAD放弃工作区和index的改动,HEAD指针仍然指向当前的commit
下载git参考资料:kali下载使用GitHack_kali下载使用githack_kali安装gitclone-csdn博客-程序员宅基地
git命令的参考资料:
GIT常用命令大全——赶紧收藏_git命令大全-程序员宅基地
1.把文件添加add和提交commit到版本库:
把文件添加add和提交commit到版本库
$ git add test.txt //添加
$ git commit -m "wrote a test file" //提交
$ git commit -m "add 3 files." //一次性提交多个文件
注意:必须在当前版本库和当前目录下
2.版本控制:(加粗加红的是常用的)
$ git log //查看提交历史记录,从最近到最远,可以看到3次,查看commit提交的历史数据,git log默认会输出commit hash, author, date, commit message。
git diff HEAD:显示工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的的所有不相同文件的增删改。
$ git log --pretty=oneline //加参,简洁查看
$ git reflog //查看每一次修改历史
$ cat test.txt //查看文件内容
$ git status //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id) //回退版本
$ git checkout -- test.txt //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt //丢弃暂存区的修改(若已提交,则回退)
3.远程仓库:
$ ssh-keygen -t rsa -C "[email protected]" //创建SSH Key
$ git remote add origin [email protected]:Daisy/AKgit.git //关联
$ git push -u origin master //将本地内容推送到远程仓库(第一次)
$ git push origin master //将本地内容推送到远程仓库(之后)
$ git remote -v //查看远程仓库信息
$ git remote rm origin //删除远程仓库(解绑)
$ git clone [email protected]: Daisy/AKgit.git //克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote //查看远程库的信息
$ git remote -v //查看远程库的详细信息
4.$ git stash //将现场储藏起来
$ git stash list //查看储存的工作现场,列 出Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复//恢复和删除
$ git stash apply
$ git stash drop
//恢复并删除
$ git stash pop 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。$ git cherry-pick 4c805e2 //复制修改
1.使用dirsearch扫描,发现有git泄露
2.先用cd命令进入githack,进入Githack目录:python2 GitHack.py,再对网站进行处理
3.用git log查看提交历史记录
4.使用git diff来文件对比 或者用git reset回退文件版本,去文件夹中打开文件发现flag
1.使用disearch扫描,发现有git漏洞
2.使用GitHack克隆目录
3.进入新文件后,与上题一样,先用git log查看提交历史记录发现了add flag的历史,但是发现使用git reset回退文件版本与git diff进行文件对比均无法得到flag。
4.于是可使用git stash pop提取git的暂存文件
git stash //备份当前工作区的内容,保存到git栈中,从最近的一次commit中读取相关内容
git stash pop //从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。获取之后,会删除栈中对应的stash
1.扫描成功后githack生成一个文件夹dist,里面直接存放有重新生成的flag文件
注意:index虽然也是暂存文件,但是使用git log查看提交历史记录,发现指针直接指向add flag的分支,故查看目录文件直接有flag。
文章浏览阅读2.7k次。让代码运行在不同国家环境下,都能准确获得指定国家、时区的时间!判断美国是否冬令时、夏令时,能自定义返回时间的格式等其他API。完整时间、完整时间格式调整、年月日 | 日月年 | 月日年、年月日格式自定义:顺序、分隔符、时分秒、年、月、日、小时(24小时制)、分、秒、星期_js 获取当前的德国时间
文章浏览阅读981次,点赞17次,收藏16次。int age=20;int是整型%d表示打印十进制数据short int短整型(与整型只是空间上的区别)
文章浏览阅读2.7k次,点赞5次,收藏3次。vue.js / uniapp / nuxt.js / react.js 使用 math.js 数学库,math.add() 怎么把多个数字进行累加计算综合,vue math.js 库如何实现一些小数或整数加在一起,math.js math.add() 怎么进行数字的叠加累加,vue math.add() 计算多个整数的总和,math.add() 计算一堆小数累加在一起的结果,uniapp math.js 数学库,实现 math.add() 数字累加,math.add() 如何将数组内的数字进行相加叠加,J_math.add
文章浏览阅读94次。冒泡排序 工作原理: 第一次排序:从数组中依次取出相邻两个元素,进行比较,小的元素被被放在大的元素前面,然后小的元素不在参排序。 第二次排序:再从刚比较过的大的元素开始,依次向后取出相邻的两个元素进行比较,,小的元素被被放在大的元素前面, 然后小的元素不在参排序。 ..... 一次类推,直到排序完成。动图链接:https://www.runoob.com/w3cnote/bubble-sort.html代码演示: public static void main(Stri_真冒泡排序
文章浏览阅读183次。10.1集合类概述为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存_创建集合长度为1 的list
文章浏览阅读834次。我的情景是这样的:一个grid(就叫gridA吧),最后一列的每行都是超链接,点击超链接时会弹出一个窗体,这个窗体也需要一个grid(gridB)展示,并且呢,gridB所需的数据需要gridA里的某列的值(把这个列叫做Param)作为参数。于是就产生了点击gridA的某行的超链接,获取该行的Param列的值这样的需求。不知道为什么,我用var param=this.grid..getSe_extjs grid 判断点击的是哪一列
文章浏览阅读356次,点赞5次,收藏8次。这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!docker逃逸:1、由内核漏洞引起;2、由Docker软件设计引起;3、由配置不当引起。k8s:简单来说,跟docker一样,是个容器系统。常见漏洞:未授权访问、提权漏洞。
文章浏览阅读500次。本文是阿里巴巴 PTS 团队《Performance Test Together》系列专题分享,霍格沃兹测试学院经特别授权转载,也会结合学员实际需求组织大咖公开课主题分享,文末有福利!性..._压测环境 资源配置 与生产不一致
文章浏览阅读68次。一、什么是uni-appuni-app是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。二、uni-app适合什么样的开发者以及它有哪些优点1.uni-app适合那些有Vue.js开发经验的开发者尤其是那些需要同时开发iOS、Android和Web应用程序的开发者。同时,uni-app也适合初学者,因为它的学习曲线比较平缓。
文章浏览阅读137次。【数据分享】1999—2021年地级市各类交通工具的客货运量和拥有量数据(Shp/Excel格式)
文章浏览阅读548次。本篇文章介绍了安装SQL Server 2008企业版的软硬件配置要求,安装过程的详细步骤,以及需要注意的事项。安装步骤(1). 在安装文件setup.exe上,单击鼠标右键选择“以管理员的身份运行”,如下图所示:(2). 打开如下所示的”SQL Server安装中心”对话框:(3). 选择左边的安装选项,单击右边的“全新SQL Server独立安装或向现有安装添加功能”选项,如图所示:(4). 在打开”SQL Server 2008安装程序“对话框中,出现“安装程序支持规则” 选项,可以看到,一些_sql server 2008 enterprise
文章浏览阅读2.1k次。地址 https://flutter.io/docs/get-started/install/windows中文教程地址 https://flutterchina.club/setup-windows/需要下载 git ,下载地址 git for win,安装完成之后需要 配置环境变量。获取 Flutter SDK,推荐使用 git clone 的方式如我想将安装目录放在C...