【攻防世界】Reverse——bad_python writeup_攻防世界bad_python

77 阅读4分钟

from ctypes import * from Crypto.Util.number import bytes_to_long from Crypto.Util.number import long_to_bytes

def encrypt(v, k): v0 = c_uint32(v[0]) v1 = c_uint32(v[1]) sum1 = c_uint32(0) delta = 195935983 for i in range(32): v0.value += (v1.value << 4 ^ v1.value >> 7) + v1.value ^ sum1.value + k[sum1.value & 3] sum1.value += delta v1.value += (v0.value << 4 ^ v0.value >> 7) + v0.value ^ sum1.value + k[sum1.value >> 9 & 3]

return (
 v0.value, v1.value)

if name == 'main': flag = input('please input your flag:') k = [255, 187, 51, 68] if len(flag) != 32: print('wrong!') exit(-1) a = [] for i in range(0, 32, 8): v1 = bytes_to_long(bytes(flag[i:i + 4], 'ascii')) v2 = bytes_to_long(bytes(flag[i + 4:i + 8], 'ascii')) a += encrypt([v1, v2], k)

enc = [ '4006073346', '2582197823', '2235293281', '558171287', '2425328816', '1715140098', '986348143', '1948615354']
for i in range(8):
    if enc[i] != a[i]:
        print('wrong!')
        exit(-1)

print('flag is flag{%s}' % flag)

使用下面的代码得到flag



from ctypes import *

def decrypt(v, k):
v0 = c_uint32(v[0])
v1 = c_uint32(v[1])
sum1 = c_uint32(0)
delta = 195935983 sum1.value = delta * 32 for i in range(32):
v1.value -= (v0.value << 4 ^ v0.value >> 7) + v0.value ^ sum1.value + k[sum1.value >> 9 & 3] sum1.value -= delta v0.value -= (v1.value << 4 ^ v1.value >> 7) + v1.value ^ sum1.value + k[sum1.value & 3]

return (  
    v0.value, v1.value)

if name == 'main':

k = [255, 187, 51, 68]

dec = []
for i in range(0,8,2):
    enc = [4006073346, 2582197823,   2235293281, 558171287,  
           2425328816, 1715140098,  986348143, 1948615354] 
    dec+=decrypt([enc[i], enc[i + 1]], k)  

print(dec)

byte_array = bytearray()
for i in range(0, 8): num = dec[i]
for i in range(4):
byte = num >> (8*(3-i)) & 0xff
byte_array.append(byte) flag = ''.join([chr(x) for x in byte_array]) print("flag{"+flag+"}")





### 最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

#### 👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/f3f8a12911af44a28f5f127522b78d12~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770801984&x-signature=nIIPI08Bg30kx%2FKX%2Fj6FjR37VGs%3D)

#### 👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/bf4ac188ac524c50a19f288b0fe7923b~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770801984&x-signature=xaGYyJrOxXlrupvdwDKIVIbNjh4%3D)



#### 👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/dfcb9b53004d4ddf9a45b57f1346ddc5~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770801984&x-signature=Si3xL06XO362raTr%2F3jQBOMzCeg%3D)



#### 👉实战案例👈



学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。



因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/18c099982ecf45fda3c25c13428307a4~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770801984&x-signature=IMVzmrvMD8WP%2FyiaMKOr55Ri9qM%3D)



#### 👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/25464fabaad24454b6a325956b33891c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1770801984&x-signature=uVw4ePQa%2FzG3IR8xNj9JCNqKjRQ%3D)



**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**