Anime 3840x2216 artwork digital art sword dragon white background anime boys weapon simple background minimalism sushi


每日学习汇总 2023-04-01

每日学习

readwise day log

  • 可见,受难的人有受难的人的活法,这种活法,非身历其境的,不能体会它的艰苦;但这种艰苦,对伟大的人说来,也不过是“苦其心志”的一种磨练与过渡,一念之转,一切艰苦,也就统统可以心平气和、可以若无其事、可以不以为意、可以视为当然,也就不足道了。 - 李敖
  • 伏尔泰说得好:“你说的话,我一句也不赞成;但是我要拼命为你争取你有说这话的权利。”民主的可贵,就是在于人人有“站到亮处来”说话的权利,人人有表现他的真知灼见或胡说八道的权利。 - 李敖
  • 当有人笑话耶稣是傻子的时候,其实谁都不傻,仅仅是两种价值观不兼容。 遥远的救世主,豆豆
  • 技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。 - 人月神话
  • 如果身边无人聆听,你可以翻开子弹笔记,写一封信给“亲爱的鸭子”,或者其他温柔的、值得信任的、包容的对象。 - 子弹笔记
  • 在这种框框教育出来的人民,自然就是整天喊万岁唱梅花的、整天“感谢政府德意”的、整天歌颂“大有为政府”的。这样发展的自由民主,是畸形的自由民主、是奴性的自由民主、是绵羊的自由民主,不是男子汉的自由民主! - 李敖

技术学习

1、python发序列化

pickletools.dis(opcode)
pickle.loads(opcode)

Python 反序列化漏洞通常发生在接受不可信数据并使用 PythonpicklecPickle 模块时,攻击者可以通过反序列化操作来执行恶意代码。攻击者可以构造恶意的数据,借助 PythonPickle 模块执行任意代码,这将导致严重的安全问题。

攻击者可以利用反序列化漏洞来实现以下攻击:

• 代码注入和远程代码执行

• 会话劫持和会话固化攻击

• 认证绕过和凭据盗窃

• 敏感数据泄露

以下是一个使用 pickle 模块反序列化漏洞的漏洞示例:

import pickle
import os


class Exploit(object):

  def __reduce__(self):
    return (os.system, ('cat /etc/passwd',))

def serialize_exploit():
  exploit = Exploit()
  with open('exploit.txt', 'wb') as f:
    pickle.dump(exploit, f)

def deserialize_exploit():
  with open('exploit.txt', 'rb') as f:
    pickle.load(f)

serialize_exploit()
deserialize_exploit()

在这个例子中,我们定义了一个 Python 类 Exploit,它在 reduce() 方法中调用了一个系统调用来打印 /etc/passwd 文件的内容。

serialize_exploit() 方法将该类实例序列化为二进制格式,并将其存储在名为 exploit.txt 的文件中。接下来,deserialize_exploit() 方法将该文件反序列化,这将导致系统调用被执行,进而打印 /etc/passwd 的内容。

要防止 Python 反序列化漏洞,建议使用其他更安全的数据格式,例如 JSON 或 YAML。如果必须使用 Python Pickle 模块,请做好以下措施:

• 不要从不可信的源接收传入的数据。

• 在反序列化之前验证输入数据,例如使用数据模式、签名和哈希值。

• 不要使用 pickletools.dis 和相关功能的不受信任的 pickle 数据。

• 不要允许不受信任的用户在 pickle 数据中传递任何模块、函数、类或其他类型,在解压数据之后,它们将完全暴露给攻击者。

最重要的是,不要相信不受信任的数据,以及使用来自受信任和可靠来源的数据,并根据不同的语言和框架实施最佳实践和最佳安全措施。

学习心得

看视频学习反序列化比看文章好多了,文章只要一分析起来就云里雾里,但视频会有很多不会讲,比较浅显。

问题记录

待学习内容

  • 反序列化 burpsuite靶场