【无标题】

2.直接包含敏感文件

鉴别题目所用服务器:

  • 404界面

随便找⼀个不存在的⻚⾯显示出404之后,就可以看到服务器的类型

  • 右键检查抓包:

点击 network 之后刷新一下

2.1 包含日志文件

nginx服务器下日志文件的路径:

/var/log/nginx/access.log
/var/log/nginx/error.log

apache服务器下的日志文件路径:

/etc/httpd/logs/access_log 或者
/var/log/httpd/access_log
/var/log/apache2/error.log//错日志存放
自定义文件路径:/etc/apache2/apache2.conf //查找以ErrorLog开头的行

apache+win2003⽇志默认路径:

D:\xampp\apache\logs\access.log
D:\xampp\apache\logs\error.log

IIS6.0+win2003默认⽇志⽂件:

C:\WINDOWS\system32\Logfiles

IIS7.0+win2003 默认⽇志⽂件:

%SystemDrive%inetpublogsLogFiles

nginx ⽇志⽂件在⽤户安装⽬录的logs⽬录下

如安装⽬录为/usr/local/nginx,则⽇志⽬录就是在/usr/local/nginx/logs⾥

也可通过其配置⽂件Nginx.conf,获取到⽇志的存在路径

(/opt/nginx/logs/access.log)

我们所有的操作都会被服务器中将我们的请求信息记录在⽇志:

很显然,这是⼀条⽇志记录,包含了ip,请求时间,请求地址,以及user-Agent===>浏 览器信息,以及我们传⼊的参数,其他的基本都是不能改变的,但是User-Agent和传⼊的 参数我们是可控的,如果User-Agent是⼀句话会发⽣什么?

 利⽤ hackbar 原本的user-Agent信息被注⼊了⼀句话,在包含⽇志⽂件的时候,⼀句话被执 ⾏,最后在⽇志信息中替换成执⾏后的结果,原本 access.log 是不会执⾏⼀句话的, 但是被包含进 .php ⻚⾯之后就会以php的⽅式执⾏,我们刚好传⼊⼀句php代码,因此被执⾏。

如果参数是一句话:

  • 如果直接在url中进⾏⽂件包含可能会造成url编码导致不能被识别成php代码,因此可以借 ⽤ curl,或者 burpsuite

 虽然file掺⼊的参数,也就是我们包含的⽂件名也会被传进⽇志,但是会被进⾏url编码之后再传 进⽇志导致⽆法识别php⽆法执⾏,⽤curl则不会进⾏URL编码

  •  curl请求的地址进行双引号包含

【由于url里有&,使用&会使进程后台运行,必须对&进行转义,加单引号或者双引号。

加单引号和双引号的区别:

单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
单引号字串中不能出现单引号(对单引号使用转义符后也不行)

双引号
your_name=‘qinjx’
str=“Hello, I know your are “$your_name”! \n”
双引号里可以有变量
双引号里可以出现转义字符】

  • 转义特殊符号【】

2.2 包含session文件(无后缀文件)

  • 获取session位置存放信息

通过phpinfo的信息可以获取到session的存储位置。
通过phpinfo的信息,获取到session.save_path为/var/lib/php/session.

 或者

 没有值就在/tmp/目录下

例:

<?php
session_start();
$ctfs=$_GET['ctfs'];
$_SESSION["username"]=$ctfs;
?>

session工作原理:

  • 首先使用session_start()函数进行初始化
  • 当执行php脚本时,通过使用$_ SESSION 超全局变量注册 session变量
  • 当 P H P 脚 本 执 ⾏ 结 束 时 , 未 被 销 毁 的 s e s s i o n 变 量 会 被 ⾃ 动 保 存 在 本 地 ⼀ 定 路 径 下的session库 中 , 这 个 路 径 可 以 通 过 php.ini ⽂ 件 中 的 session.savepath 指 定 , 下 次 浏 览 ⽹ ⻚ 时 可 以 加 载 使 ⽤ .

session_start()做的初始化工作:

  • 读取名为 PHPSESSID ( 如 果 没 有 改 变 默 认 值 ) 的 cookie值,假使为 abc123
  • 若 读 取 到 PHPSESSID这个COOKIE , 创 建 SESSION 变 量 , 并 从 相 应 的 ⽬ 录 中 ( 可 以 在 p h p . i n i 中 设 置 ) 读 取 SESS_abc123( 默 认 是 这 种 命 名 ⽅ 式 ) ⽂ 件 , 将 字 符 装 在 ⼊ SESSION 变量中 ; 若 没 有 读 取 到 PHPSESSID 这 个 COOKIE , 也 会 创 建 $_SESSION 超全局变量注册 session 变量。 当PHP脚本执⾏结束时,未被销毁的session变量会被⾃动保存在本地⼀定路径下的 session库中, 这个路径可以通过php.ini⽂件中的session.save_path 指定,下次浏览⽹⻚ 时可以加载使⽤。

漏洞分析:

此php会将获取到的GET型ctfs变量的值存⼊到session⽬录下存储session的值。session的⽂件 名为sess+sessionid,sessionid可以通过开发者模式获取。

 默认路径没有值,说明session的保存路径在/tmp/⽬录下,进⼊容器看⼀下

 这是默认的文件

 【这⾥出现警导致下⾯的程序是⽆法执⾏的,这个警告说的是请求可以到达,但⽆法打开 session,只需要将session_start();放在 hilighlight_file 前边即可】

接下来修改PHPSESSID为aaa传参数 ?ctfs=ctfs

查看session文件

 如果写入一句话

如果当前⻚⾯存在⽂件包含漏洞,那么我们可以直接包含这个⽂件,进⽽执⾏php代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值