Web:
1.接 头 霸 王:
知识点是几个重要关键字的使用:
一:Referer的含义自行百度或者参考:
二:(X-Forwarded-For参考:https://baike.baidu.com/item/X-Forwarded-For/3593639?fr=aladdin)
三:User-Agent: https://blog.csdn.net/weixin_43900387/article/details/104086069
四: POST 方法
五: Last-Modified: 和 If-Unmodified-Since:
详情参考: https://blog.csdn.net/weixin_43900387/article/details/104085435
和 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/If-Unmodified-Since
直接进入链接发现下图原页面,它提出了第一个要求: 你需要把访问来源改成:https://vidar.club/ 即:Referer头
1阶段)用burpsuite抓包后:在报文处添加一行 Referer:https://vidar.club/
如图:进行添加,划线处是添加的地方
然后我萌得到了新的response报文,新的提示:你需要从本地看
2阶段)根据提示要求添加X-Forwarded-For:127.0.0.1或者X-Forwarded-For:localhost
response得到如图: 要求我们使用Cosmos浏览器,即和浏览器相关的User-Agent报文的更改
3阶段)把User-Agent:的报文改成User-Agent:Cosmos 我这里比较暴力写的不太规范
如图:
改好之后send:得到提示你需要把请求方法改成POST(不多解释)
4阶段)更改方法为POST:
得到新提示:flag(即答案)将在2077年之后更新,请耐心等待.
5阶段)注意当前的一段response头部的报文:Last-Modified
为了便于学习而不是省省事,用实践验证理论
先添加If-Unmodified-Since:Tue, 26 Jan 2064 00:00:00 GMT 这个时间比最新更改的时间早,所以不会得到flag(答案),
改法如图:
如果想得到答案应该是添加:
If-Unmodified-Since:Tue, 26 Jan 2077 00:00:00 GMT (正确答案之一,可以自行尝试其他答案),必须是个比Last-Modified:(更新)晚的时间点 这样才能得到答案
如图:得到flag(答案)
趁着还没结束赶紧试一下
关于,If-Unmodified-Since:再次补充:
经过我伙伴的测试,他说改为20781发现得不到flag,
然后我测试了一下 9999年可以 但是万年以上就不行了,
测试一下,测试代码如下:
<?php
var_dump(strtotime('Fri,03 Jan 10000 00:00:00 GMT'));//false
var_dump(strtotime('Fri,03 Jan 9999 00:00:00 GMT'));//true
?>
测试结果,可见万年以上就不能解析了:
使用了strtotime()函数
strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)。
注意:如果年份表示使用两位数格式,则值 0-69 会映射为 2000-2069,值 70-100 会映射为 1970-2000。
注意:请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),则使用欧洲的 d-m-y 格式。为了避免潜在的错误,您应该尽可能使用 YYYY-MM-DD 格式或者使用 date_create_from_format() 函数。