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

Posted 贝塔安全实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次分析上传代码中碰到的PHP语言的时间知识相关的知识,希望对你有一定的参考价值。



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

php文件

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

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

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


二: 本地测试上传

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

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

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

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

 

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

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

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

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

发现已经可以成功上传。

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


三:确定后缀

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

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

得到第一次时间为20190907123413,最后一次时间为20190907123421。即从201909072341300到2019090712342199
打开bp开始抓包,爆破

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

遗憾的没跑出,404。

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


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

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

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

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

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


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

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

五:分析data函数

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

常见解决办法

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

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

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

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

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

六:参考链接 

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

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


更多的学习资源,

更好的学习氛围,



以上是关于记一次分析上传代码中碰到的PHP语言的时间知识的主要内容,如果未能解决你的问题,请参考以下文章

记一次面试

记一次简单的GetShell案例

记一次SSM项目小结

记一次URL重定向漏洞的探测脚本的优化

记一次分析别人源码的过程

记一次SpringBoot使用WebUploader的坑