C/C++教程

buuctf-ACTF2020新生赛-oruga(2)

本文主要是介绍buuctf-ACTF2020新生赛-oruga(2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

buuctf-ACTF2020新生赛-oruga(2)

书接上文

一开始打算爆破它,不过好像有点难

于是重新回到题,首先它是一个迷宫题,因此我们要先找到的是起点 终点 方向

因此33是它的终点 //当v2这个下标走到33的时候 一切就结束了

其次我们

image-20220701004842569

是用来判断是否超出的

符合这个循环只有左上角

再者如果起点是左上角

则v4=-1的时候 就是 就一定是右 因为v4已经是1了

以此类推 得出

image-20220701005309282

写个脚本

import  struct
from ctypes import *
import  numpy
maze=[0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x23, 0x23, 0x23, 0x00, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x00, 0x4F, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x4F, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x4F, 0x4F, 0x00, 0x4F, 0x4F, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x4F, 0x4F, 0x00, 0x4F, 0x4F, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x4C, 0x00, 0x4F, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x45, 0x45, 0x00, 0x00, 0x00, 0x30, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x45, 0x54, 0x54, 0x54, 0x49, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x54, 0x00, 0x49, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x54, 0x00, 0x49, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x21, 0x00, 0x00, 0x00, 0x45, 0x45]
res=[]
for i in range(0,len(maze),1):
    k=c_byte(struct.unpack_from(">b",bytes(maze),i)[0]).value
    res.append(k)
maze=numpy.array(numpy.array_split(res,16))
print(maze)
'''
[[ 0  0  0  0 35  0  0  0  0  0  0  0 35 35 35 35]
 [ 0  0  0 35 35  0  0  0 79 79  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0 79 79  0 80 80  0  0  0]
 [ 0  0  0 76  0 79 79  0 79 79  0 80 80  0  0  0]
 [ 0  0  0 76  0 79 79  0 79 79  0 80  0  0  0  0]
 [ 0  0 76 76  0 79 79  0  0  0  0 80  0  0  0  0]
 [ 0  0  0  0  0 79 79  0  0  0  0 80  0  0  0  0]
 [35  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0 35  0  0  0]
 [ 0  0  0  0  0  0 77 77 77  0  0  0 35  0  0  0]
 [ 0  0  0  0  0  0  0 77 77 77  0  0  0  0 69 69]
 [ 0  0  0 48  0 77  0 77  0 77  0  0  0  0 69  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0 69 69]
 [84 84 84 73  0 77  0 77  0 77  0  0  0  0 69  0]
 [ 0 84  0 73  0 77  0 77  0 77  0  0  0  0 69  0]
 [ 0 84  0 73  0 77  0 77  0 77 33  0  0  0 69 69]]
 '''
 #flag{MEWEMEWJMEWJM}
这篇关于buuctf-ACTF2020新生赛-oruga(2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!