前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次分析上传代码中碰到的PHP语言的时间知识

记一次分析上传代码中碰到的PHP语言的时间知识

作者头像
安全小王子
发布2020-07-31 17:17:46
1.1K0
发布2020-07-31 17:17:46
举报
文章被收录于专栏:betasecbetasec

本文作者:久久久久久久(贝塔安全实验室-核心成员)

一:起因,朋友给我发了个php文件

php文件

2-12行没有任何限制,任意上传,网上随便找个前端的上传代码

二:本地测试上传

后面用json_encode加密,百度在线json解密就好了

上传失败,发现本地创建的upload文件夹也无文件,遂再次对代码进行查看

发现后端代码是$_FILES['photo-path'],前端代码是name=file。客户端文件系统的文件的名称与后端不对应,将其改为photo-path,重新上传

发现已经可以成功上传。

三:确定后缀

第6行与第10行可得文件名只是用时间加随机2位数命名,得到思路,本地用$t=date("YmdHis");确定时间开始时间,记录一次,上传成功,刷新记录时间,得到最后时间,中间加上00-99爆破即可。

得到第一次时间为20190907123413,最后一次时间为20190907123421。即从201909072341300到2019090712342199

打开bp开始抓包,爆破

遗憾的没跑出,404。

四:这时我朋友发话了,他说传上去就能确定时间,一顿操作,拿下了。

细看了下他操作,它是将时间代码放在在线网站验证,然后用python跑随机

发现与我不同的是时间不同,我的比他时间慢了差不多8个小时。我又本地与在线相同代码同时跑下

五:分析data函数

string date ( string format [, int timestamp ] )。format 必需。规定时间戳的格式。timestamp 可选。规定时间戳。默认是当前的日期和时间。但php在使用date函数的时候,是以UTC为参照物计算时区。时间获取默认是从0时区的时间,但中国是在东八区,所以刚好相差八个小时。

常见解决办法

1)php.ini配置文件中规定时区

date.timezone = "PRC"(PRC为中华人民共和国的英文单词缩写)

2)在php代码开头加上date_default_timezone_set('Asia/Shanghai')或者是ini_set('date.timezone','Asia/Shanghai')

六:参考链接

https://www.tangshuang.net/2794.html

https://www.runoob.com/php/php-ref-date.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 betasec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档