CTF-COMMENT-WP

Comment是代表去添加一些评论或者注释

描述中说“程序员GIT写一半跑路了,没来得及Commit”,这是很明显的一个提示

git stash恢复:

最常用的就是使用git clone把github上的源码下载下来,在实际上当你把代码提交给github时是分为两个步骤的:一个git add,另一个是git commit。

在git工具里存在一个缓存区stage,当在工作区写完代码后,首先是使用git add,就是把修改后的代码放到了stage缓存区,但是修改之前的代码也是可以找打的,也存在stage缓存区里,虽然现在看到的是修改后的代码,但是之前的代码并没有被删掉,只有当你进行 git commit 上传到git hub 中的master中,缓存区才会被清除,也就是之前修改的代码才会被覆盖掉。在git commit之前,可以利用git stash把修改前的代码恢复。

查看页面和页面源代码后没有有效的信息,可能存在代码信息泄露

先对目标进行目录扫描,使用御剑或者dirsearch

https://github.com/maurosoria/dirsearch

扫描结果中是存在很多git隐藏目录

是可以访问的,虽然是Forbidden,不代表是不存在的,知识没有访问.git目录下的文件

然后就可以利用githacker这个工具进行代码的获取,必须指定到.git目录

执行完成后会生成一个文件夹并包含一个php文件

但是里面的代码是不完整的

然后使用git stash进行恢复,stash@{0}表示之前的版本

使用git stash apply 变更为历史版本

查看变更后的php文件,明显比之前看的内容要多

在写入时候使用addslashes进行了转义,所以不会触发任何操作的

在发帖前需要对密码进行一次爆破,用户名:zhangwei 密码:zhangwei***

对后面的字符进行爆破,结果是zhangwei666

这个测试payload证明二次注入漏洞是存在的,重点是要结合源码,理解为什么这样构造payload

确定利用二次注入后可以读取文件后,然后进行下一步操作

如果确定flag不存在数据库中后,可以尝试读取bash_history,就是曾经输入的命令集合,发现存在一个.DS_Store文件,然后查看此文件,但是它的文件格式会有一个截断,然后通过HEX转码读取出来,读取后在利用16进制解码解出,解码后有一个flag的文件,

然后根据上面的命令行,判断出.DS_Store文件的路径,构造payload

‘,content=hex(select load_file(‘/tmp/html/.DS_Store’)),/*

Comment是代表去添加一些评论或者注释

描述中说“程序员GIT写一半跑路了,没来得及Commit”,这是很明显的一个提示

git stash恢复:

最常用的就是使用git clone把github上的源码下载下来,在实际上当你把代码提交给github时是分为两个步骤的:一个git add,另一个是git commit。

在git工具里存在一个缓存区stage,当在工作区写完代码后,首先是使用git add,就是把修改后的代码放到了stage缓存区,但是修改之前的代码也是可以找打的,也存在stage缓存区里,虽然现在看到的是修改后的代码,但是之前的代码并没有被删掉,只有当你进行 git commit 上传到git hub 中的master中,缓存区才会被清除,也就是之前修改的代码才会被覆盖掉。在git commit之前,可以利用git stash把修改前的代码恢复。

查看页面和页面源代码后没有有效的信息,可能存在代码信息泄露

先对目标进行目录扫描,使用御剑或者dirsearch

https://github.com/maurosoria/dirsearch

扫描结果中是存在很多git隐藏目录

是可以访问的,虽然是Forbidden,不代表是不存在的,知识没有访问.git目录下的文件

然后就可以利用githacker这个工具进行代码的获取,必须指定到.git目录

执行完成后会生成一个文件夹并包含一个php文件

但是里面的代码是不完整的

然后使用git stash进行恢复,stash@{0}表示之前的版本

使用git stash apply 变更为历史版本

查看变更后的php文件,明显比之前看的内容要多

在写入时候使用addslashes进行了转义,所以不会触发任何操作的

在发帖前需要对密码进行一次爆破,用户名:zhangwei 密码:zhangwei***

对后面的字符进行爆破,结果是zhangwei666

这个测试payload证明二次注入漏洞是存在的,重点是要结合源码,理解为什么这样构造payload

确定利用二次注入后可以读取文件后,然后进行下一步操作

如果确定flag不存在数据库中后,可以尝试读取bash_history,就是曾经输入的命令集合,发现存在一个.DS_Store文件,然后查看此文件,但是它的文件格式会有一个截断,然后通过HEX转码读取出来,读取后在利用16进制解码解出,解码后有一个flag的文件,

然后根据上面的命令行,判断出.DS_Store文件的路径,构造payload

‘,content=hex(select load_file(‘/tmp/html/.DS_Store’)),/*