漏洞挖掘365天挑战

时间: 2022.1.1——2023.1.1

每天两小时,每日更新

此挑战的主页: 漏洞挖掘365天挑战

欢迎关注我的小报童:P小二的每日思考

有人加我,那就建个群吧。如果过期了,加我微信pxiaoer2025。

漏洞挖掘365天挑战微信交流群

目录:

1月

第一周

第二周

第三周

第四周

2月

第一周

第二周

第三周

第四周

3月

第一周

第二周

第三周

第四周

第五周

4月

第一周

  • Day091: 4.1
  • Day092:4.2
  • Day093:4.3

第二周

  • Day094:4.4
  • Day095:4.5
  • Day096:4.6
  • Day097:4.7
  • Day098:4.8
  • Day099:4.9
  • Day100:4.10

第三周

  • Day101:4.11
  • Day102:4.12
  • Day103:4.13
  • Day104:4.14
  • Day105:4.15
  • Day106:4.16
  • Day107:4.17

第四周

  • Day108:4.18
  • Day109:4.19
  • Day110:4.20
  • Day111:4.21
  • Day112:4.22
  • Day113:4.23
  • Day114:4.24

第五周

  • Day115:4.25
  • Day116:4.26
  • Day117:4.27
  • Day118:4.28
  • Day119:4.29
  • Day120:4.30

5月-开始漏洞挖掘

第一周

  • Day121: 每日漏洞挖掘——5.1
  • Day122: 每日漏洞挖掘——5.2
  • Day123: 每日漏洞挖掘——5.3
  • Day124: 每日漏洞挖掘——5.4
  • Day125: 每日漏洞挖掘——5.5
  • Day126: 每日漏洞挖掘——5.6
  • Day127: 每日漏洞挖掘——5.7
  • Day128: 每日漏洞挖掘——5.8
  • Day129: 每日漏洞挖掘——5.9
  • Day130: 每日漏洞挖掘——5.10
  • Day131: 每日漏洞挖掘——5.11
  • Day132: 每日漏洞挖掘——5.12
  • Day133: 每日漏洞挖掘——5.13
  • Day134: 每日漏洞挖掘——5.14
  • Day135: 每日漏洞挖掘——5.15
  • Day136: 每日漏洞挖掘——5.16
  • Day137: 每日漏洞挖掘——5.17
  • Day138: 每日漏洞挖掘——5.18
  • Day139: 每日漏洞挖掘——5.19
  • Day140: 每日漏洞挖掘——5.20
  • Day141: 每日漏洞挖掘——5.21
  • Day142: 每日漏洞挖掘——5.22
  • Day143: 每日漏洞挖掘——5.23
  • Day144: 每日漏洞挖掘——5.24
  • Day145: 每日漏洞挖掘——5.25
  • Day146: 每日漏洞挖掘——5.26

成果:

月份 第一周 第二周 第三周 第四周
1月 NULL NULL NULL NULL
2月 NULL NULL NULL NULL
3月 NULL NULLNULL NULL
4月 NULL NULLNULL NULL
5月
6月
7月
8月
9月
10月
11月
12月
总计

【每日一书】5.19 分布式机器学习-算法,理论与实践

即刻链接: https://web.okjike.com/originalPost/628614f7150c9c7214696b32

5.19 分布式机器学习-算法,理论与实践

这本书入手于2018年11月17日,当年12月10日读完。可以作为分布式机器学习的入门书。

书中介绍了分布式机器学习框架的一些基础知识,包括单机优化,数据模型并行,通信机制,分布式机器学习算法和一些系统。系统主要介绍了基于IMR,基于参数服务器和基于流的机器学习系统。

TensorFlow 在2017年发布eager的时候,我在现场,觉得这是一个变革,回去就做了一个分享。 当时的PyTorch还不成气候,没想到今天会有如此地位。

当时我还去看过TensorFlow的代码,想想能不能贡献点代码。那个时候,NLP训练数据量不算多,很多时候一台机器+fasttext搞定,对分布式训练不了解,就去读了一下代码。

分布式机器学习主要有三个场景:
1. 计算量太大
2. 训练数据太多
3. 模型规模太大

现在就NLP的发展,像BERT和其变种,还有GTP-3这种面向生成的大模型,上面三个场景都占了。

BERT出来的时候,还能折腾折腾,8块V100跑一跑,像后面的大模型就只有等API了。我也变成做AI落地的了。

像IMR的系统,同步+数据并行,Spark MLlib都算比较简单的,属于大数据平台变化过来的。

基于参数的服务器,目前还是有很多开源项目的,Multiverso、PS Lite、KunPeng等等。

基于流的,目前是主流,一个有向无环图定义,可以灵活的数据并行,模型并行或者混合并行。

像Tesorflow、Pytorch、Paddle都属于基于流的,后面的趋势就是支持大规模训练的框架,像OneFlow就是以兼容Pytorch,一键分布式加速为亮点。

还有一个趋势,就是云原生的训练架构,把训练任务完全微服务化。后面看看发展吧。

我自己有个FAI的框架想法,目前还处于调研和开发阶段,还没开源,是基于Rust来实现的一个非常简单的深度学习框架,希望后面能完成和开源出来。

分布式机器学习框架论文很多,没法推荐。我就推荐一下,李沐老师在B站讲了两节课,讲PS架构和最新的Google Pathways架构,可以看看。

1.参数服务器(Parameter Server)www.bilibili.com
2.Pathways www.bilibili.com

【每日一书】5.18 人工智能与游戏

即刻链接:https://web.okjike.com/originalPost/6284c15c360fb4affaec764e

#每日一书# 加入的第一天,搞个新玩法。 随手拍一张,手上正在读的书或者身边已经读过的书,然后说说与这本书的故事。

5.18 人工智能与游戏

入手时间2021年8月,目前粗略读过一遍,正在根据这本书的内容写GameAI专栏。

专栏目前有9篇,书中内容太概括,一页内容就可以花很多时间去扩展,专栏有种给自己挖坑的感觉。

为什么读这个? 因为要做GameAI方向的产品,对游戏AI的传统方法不怎么熟悉,想有一个整体的视角。

这本书可能今年才能读完,因为还要为专栏做一个演示程序,包括了传统的方法,机器学习算法,深度学习和强化学习的一些demo,这工作量不小。

除了这本关于游戏AI的书外,我还有另外3,4本书,还有一些论文,后面再介绍。

08.DPU网络开发SDK—DPDK(七)

接上次内容继续对rte_eal_init()所做的工作进行分析。
 
24. 内存初始化
24.2. 内存分配
调用eal_memalloc_init()来处理内存分配,前半部分根据进程是primary还是secondary走不同的流程,后半部分两者相同。

前后两个初始化过程中,用到了一个特殊的func,rte_memseg_list_walk(),该func的传入参数是一个rte_memseg_list_walk_t类型的函数指针及void *通用指针。在list_walk()中,会对rte_config.mem_config.memsegs列表中每一个memseg list依次调用函数指针指向的函数,且保证了整个过程中是在mem_config.memory_hotplug_lock锁的保护下进行的。

  • 以secondary方式
通过list_walk()来调用secondary_msl_create_walk()来为每个memseg list分配内存,该func中,根据primary的memseg list的大小,初始化一个local_memsegs结构,初始化还是调用rte_fbarray_init()来实现。primary的memseg list的大小从mem_config.memsegs获取到。

  • 以primary方式
该过程中,通过test_memfd_create执行memfd_create系统调用,测试当前系统是否支持创建匿名的内存共享,检查结果根据当前系统的一些配置情况决定是否以错误退出。

分primary和secondary之后,不管哪种方式初始化,都会执行fd_list_create_walk()。create_walk()对每个memseg list调用alloc_list(),alloc_list()会初始化文件描述符列表数组fd_list,每个memseg list对应一个数组项,数组项中会指向一块内存,用于存储文件描述符,这里的文件描述符即为匿名内存共享文件的描述符。

24.3. 初始化大页
初始化大页同样分primary和secondary

  • 以primary方式
调用rte_eal_hugepage_init(),如果internal_config设置了legacy_mem,那么调用eal_legacy_hugepage_init(),否则调用eal_dynmem_hugepage_init()。

 A. eal_dynmem_hugepage_init()
对于每一种大小类型的大页,确定好每个socket上页面的数量;统计出每个numa node上的内存大小;根据这些信息调用eal_dymem_calc_num_pages_per_socket()最终确定每种大小类型的页面的数量。

确定好这些信息之后,多次调用eal_memalloc_alloc_seg_bulk()来映射页面,该func通过list_walk()调用alloc_seg_walk()来完成这些工作。

B. eal_legacy_hugepage_init()
分为两种情况执行,一种禁用hugetlbfs情况下,另一种是在启用情况下。
 
a. 禁用hugetlbfs
此时允许的内存大小为64GB,页面大小为4KB,以此得出所需要的一个页面数量之后,调用eal_memseg_list_init_named()来重新初始化mem_config.memsegs[0]这个memseg list。然后通过eal_memseg_list_alloc()间接调用eal_get_virtual_area()为memseg分配虚拟地址,下一步通过mmap()系统调用创建匿名映射并获得匿名映射地址addr,接下来通过eal_memseg_list_populate()填充mem_config.memsegs[0]这个memseg list,以addr为基准计算出每个memseg的地址,填到相应的结构体中。
 
b. 启用hugetlbfs
首先统计出用了哪几种大小类型的大页内存,并且计算出总的大页内存页面数量,分别存放在used_hp数组和nr_hugepages当中。接下来开辟一块内存tmp_hp,用于存放nr_hugepages个struct hugepage_file结构,hugepage_file结构用于存放一些信息,比如该大页被映射到进程地址空间的哪个虚拟地址,大页物理地址是多少,所属socket_id是多少。

接下来,对于每一种页面大小类型的大页,做如下操作:

1.调用map_all_hugepages()映射该大小类型的所有大页,具体做法是调用open()打开大页在/sys文件系统中的文件,然后mmap()之后获取一个虚拟地址,并记录在结构体当中。

2.如果启用了物理地址,且IOVA的模式不是VA,那么调用find_physaddrs()获取到每个大页的物理地址并保存下来,否则调用set_physaddrs()设定一个伪物理地址。

3.调用find_numasocket()确定每个大页所属的socket_id。

4.根据物理地址将tmp_hp进行排序。

接下来根据tmp_hp中的信息,统计出每个socket每种大小类型的大页的数量,更新这些信息更新到internal_config.hugepage_info结构体当中,并最终确定每个socket下大页的数量。

接下来调用create_shared_memory()创建一个共享文件,大小为nr_hugepages个struct hugepage_file结构体,路径为/var/run/dpdk/rte/hugepage_data;接下来调用copy_hugepages_to_shared_mem()将该进程中分配到的大页信息写入到该文件当中。需要指出的是,到此为止所需要分配的内存就分配完了,后续不会再根据需要再额外分配大页内存,即使在DPDK进程运行过程中遇到内存耗尽的情况,所以在最后的收尾工作中,会将一些不需要的memseg list做释放处理。

  • 以secondary方式
调用rte_eal_hugepage_attach()来实现,同样分为是否设置了lagacy_mem,分别调用eal_legacy_hugepage_attach()和eal_hugepage_attach()

A. eal_legacy_hugepage_attach()
打开primary进程创建的文件/var/run/dpdk/rte/hugepage_data,并读取相应的信息,该文件的是多个hugepage_file结构体。对于每一个结构体中包含的信息,通过mmap()将大页内存还原到当前secondary进程当中,并以此初始化memseg list。

B. eal_hugepage_attach()
调用eal_memalloc_sync_with_primary(),该func会调用sync_walk()。sync_walk()会根据primary进程中的memseg list信息初始化自己的memseg list。sync_walk()会调用sync_existing()去打开/sys文件系统中的大页文件去确认已经被primary分配的内存和未被primary分配的内存跟memseg list中的信息是一致的,在确保一致的情况下才可以进行后续工作。
未完待续… 
往期回顾:
07.DPU网络开发SDK—DPDK(六)
06.DPU网络开发SDK—DPDK(五)
05.DPU网络开发SDK—DPDK(四)

Day127: 每日漏洞挖掘——5.7

1.Bypass Rate Limit — A blank space leads to this random encounter!

https://infosecwriteups.com/bypass-rate-limit-a-blank-space-leads-to-this-random-encounter-e18e72fbf228

2.记首次HW|某地级市攻防演练红队渗透总结

https://xz.aliyun.com/t/11300

3.SignUp functionality hunting mindmap


https://pbs.twimg.com/media/FR_LtLgWQAAMisI?format=jpg&name=4096×4096

4.Nuclei: Packing a Punch with Vulnerability Scanning

https://bishopfox.com/blog/nuclei-vulnerability-scan

5.Ferrari subdomain hijacked to push fake Ferrari NFT collection

https://www.bleepingcomputer.com/news/security/ferrari-subdomain-hijacked-to-push-fake-ferrari-nft-collection/

漏洞分析

  1. https://hackerone.com/reports/1181946 分析:https://youst.in/posts/cache-poisoning-at-scale/
  2. https://hackerone.com/reports/927338 利用图片的元数据来定位
  3. https://hackerone.com/reports/1250474 绕过line的2FA
  4. https://hackerone.com/reports/1173153 cache-poisoning-at的又一例

挖掘进度

私有项目的Recon

《原则》笔记——生活原则4:理解人与人大不相同

生活原则4: 理解人与人大不相同

因为人的大脑结构不同,人和人天生有擅长和不擅长的差别。

读书厉害的人通常不等于需要的聪明人。想招聘的人是独立的思考者,有创造力,概念性强,常识性强

4.1 明白你与其他人的思维方式能带来的力量
a.我们拥有各种天生特征,既可能帮助自己也可能伤害自己,取决于如何应用。

大多数特征都是“双刃剑”,可能带来好处和害处。特征越极端,它可能带来的好处或害处就越极端。

  • 创造性和目标导向的人: 擅长新主意,能会低估日常生活细节的价值
  • 任务导向的人: 善于处理细节,但是可能会低估创造性的价值


4.2有意义的工作和有意义的人际关系不仅是我们做出的美好选择,而且是我们天生的生理需求

脑的构造先天使人需要并享受社会合作。人脑的进化史是从本能、关注自身发展为更抽象、更关注普遍的事物。

所以人都是需要生活在社会中,都需要社交。


4.3理解大脑里的主要斗争,以及如何控制这些斗争,以实现“你”的愿望
a.要明白,意识与潜意识在不断斗争。

我们的灵感大爆发往往就是从潜意识区域“喷出”的。我们经历这些创造性突破的时刻,通常是在放松、不试图与它们所在的大脑区域(通常是新皮层)沟通的时候。

大脑里面有两个你在打架。能激发创意的是,是放松的时候,包括淋浴和冥想。

我每天冥想试试。

b.要知道最常发生的斗争是情绪和思考的斗争。

情绪: 主要是由潜意识性的杏仁核控制的

理性思考: 主要是由意识性的前额皮层控制的

情绪其实就是一种被杏仁核绑架了,遇到危险,与人争论的生理反应。主要是我们不能放任本能反应,因为可能会反应过度。

确实,我们需要控制本能反应,比如演讲紧张,投资等等。


c.调和你的情绪和思考。

需要引导个人进化,是需要经常思考,为什么会被杏仁核绑架。当时出现了什么,然后还要采取措施去避免。 比如,很多人会控制不了情绪,暴跳如雷,打人等,也是被绑架了。


d.善择你的习惯。

习惯是由大脑底部的基底核驱动的,那是一块高尔夫球大小的组织。基底核控制着你的行为,但它藏得很深,本能地运行,所以你意识不到它。

想要养成习惯,需要反复练习,产生自控力。你需要明白大脑是如何工作的,养成更好的习惯。

要认识到习惯是怎么产生的。 习惯其实是一种惯性,把一直做的事情继续做下去,这个时间是18个月。


e.坚持友善地训练“较低层次的你”,以养成好的习惯。

需要友善的训练本能,情绪化的自我,训练它才能养成好的习惯。而好的习惯是不需要想就可以执行的,这也算是一种本能。


f.理解右脑思维和左脑思维的差别。

左脑: 顺序推理,线性思维

右脑: 识别主题,发散思维。


g.理解大脑可以改变的程度。

近年来的研究显示,从身体锻炼到学习冥想,很多种练习都能给人脑带来物理性和生理性变化,从而影响人的思维与记忆能力。

改变的最好方法是做心理练习。

4.4认识自己和他人的特性
a.内向与外向。

  • 内向: 聚焦于内向世界,从思想,记忆和经验中汲取能量。
  • 外向: 聚焦于外部,从与人相处中汲取能力。


b.直觉与感知。

  • 直觉者: 全局
  • 感知者: 细节


c.思考与感觉。

  • 思考者: 理性分析客观事实,考虑所有与具体情况相关的已知、可证明因素,富有逻辑性地决定如何行动
  • 感觉者: 关注人与人之间的和谐,他们最好从事一些需要很多同理心、人际沟通、关系构建的工作


d.计划与发觉。

  • 计划者: 喜欢专注于计划并遵行
  • 发觉者: 观察情况,然后往前分析原因,寻找应对办法。他们还会看到可以对比、选择的多种可能性,经常因看到太多可能性而无所适从


e.创造者、推进者、改进者、贯彻者与变通者

  • 创造者:提出新想法,新概念。 喜欢非结构化,抽象,喜欢创新和不走寻常路。
  • 推进者: 传递这些新想法并推进。他们喜欢感觉和人际关系,管理各种人的因素。他们非常善于激发工作热情。
  • 改进者: 挑战想法。他们分析计划以寻找缺陷,然后以很客观、符合逻辑的方式改进计划。他们喜欢事实和理论,以系统性的方式工作。
  • 贯彻者也可以叫作执行者: 他们确保重要的工作得到执行,目标被实现。他们关注细节和结果。
  • 变通者是以上4种类型的结合。他们能根据特定需求调整自身,并能从各种各样的视角看待问题。


f.关注任务与关注目标

关注任务: 善于管理没有什么变化,按部就班的事物。

关注目标: 能看到逐渐变化的大局,也更有可能做出有意义的改变,预估未来的事件。最适合创造新东西(新组织、新计划等),管理频繁变化的组织


g.职场人格量表。

主要关注一些品质比如: 毅力、独立性、抗压能力、分析能力等,预测员工行为和工作适配性、满意度。

是为了了解员工的一些人格特质。


h.塑造者是能从构想一路走到构想实现的人。

塑造者: 能提出独特和有价值的愿景,并以美妙的方式实现愿景(通常是在他人的质疑之下)。塑造者既能看到全局,也能看到细节。

塑造者通常有一些共同特征:极富好奇心;有把事情弄清楚的强烈冲动;近乎叛逆地独立思考;需要宏大别致的梦想;务实并坚毅地排除万难、实现目标;了解自己和其他人的长处和短处,所以能协调团队来实现目标。也许更重要的是,他们能同时持有相互冲突的想法,并从不同角度来看待这些想法。他们通常喜欢和其他真正的聪明人一起探索,能在全局和细节之间自如地来回跳跃,并相信二者同样重要。

你最需要的勇气不是驱使你战胜别人的勇气,而是不管其他人对你有何冀望,你始终坚持做最真实的自我的勇气。


4.5无论你要实现什么目标,让合适的人各司其职以支持你的目标,是成功的关键
a.管理你自己,并协调其他人实现你的目标。

管理你的本能,养成好的习惯。然后让各种不一样的人帮助你实现你的目标。