제5회 허난성 "금방패 신안컵" 네트워크 및 데이터 보안 대회 실기 대회 WP의 일부(일부 내 아이디어 및 분석)(주요 기타 암호)

우후

코멘트가 없습니다. 다음은 제 생각과 분석 중 일부입니다. 질문이나 제안 사항이 있으면 언제든지 저에게 연락하실 수 있습니다.

목차

질문이 나오자마자 다 온다

작업 내용:

플래그 값:

주제 2 명예

작업 내용:

플래그 값:

질문 3: 아직 RSA를 모르는 사람이 있는지 살펴보겠습니다.

작업 내용:

플래그 값:

질문 4 하키에

작업 내용:

플래그 값:

주제 5 글꼴

작업 내용:

플래그 값:

질문 6 에이프코인

작업 내용:

플래그 값:

주제 7 Easyphp

작업 내용:

플래그 값:

질문 8 Ezupload

작업 내용:

플래그 값:

질문 9 get_source

작업 내용:

플래그 값:

모두들 어서( •̀ Ω •́ )y 또 뵙기를 기대하겠습니다 


문제 해결 아이디어와 프로세스

주제 1 모두 여기에 있습니다

작업 내용:

첨부파일에 압축된 패키지가 하나만 있습니다.

단, 압축해제에는 비밀번호가 필요합니다. 소스코드를 확인하고 비교한 결과의사 암호화인 것으로 확인되었습니다.

09를 00으로 변경

제목을 얻으세요

분명히기본 디코딩

txt로 넣어주세요

사용++ 아님확대/축소 열기 및 플래그 가져오기

플래그 값:

플래그{cp2ae315-eef4-3fra-a768-cd9xb19cdk4e}

주목2Honor

작업 내용:

사진이 한장만 첨부되어 있어요

일반소스 코드 보기

두 번째 사진 발견

Kaliforemost분류

사진 가져와? 이해가 되세요

여러 가지 도구를 사용해 본 후

사용stegDetect를 사용하여 스테가노그래피의 존재 여부 확인

StegDetect.exe -tjopi -s 10.0 00001995.jpg

그런 다음 stegseek를 사용하여 rockyou 사전(kali와 함께 제공)을 사용하여 폭발시킵니다.

stegseek 00000000.jpg rockyou.txt

최종 암호화된 문자 가져오기

f6l3-a6ag3c}{-bc4c5e28-e4649c76b0-707e6069

이것은 아닙니다펜스 암호는 카이사르 암호입니다

시도함 펜스 비밀번호 12개 열 수

온라인 웹사이트(표준 웹사이트는 아직 빠져나올 수 없습니다)

울타리 암호화/복호화 - Bugku CTF

플래그 값:

플래그{424c076e-768c-3636-acb5-4676900b9eec}

질문 3 RSA를 모르는 사람이 있는지 살펴보겠습니다

작업 내용:

파이는 하나뿐이다

이것은 표준 RSA를 살펴봅니다.

근거원호초 희생각본

여기에는 두 개의 스크립트가 제공됩니다.

from Crypto.Util.number import *

c=8232151627233115772131180151146951323147507324390914513031444555762539986162650

p=8666789885346075954502743436174521501697

q=2449101960789395782044494299423558347143

n = p*q

phin = (p-1)*(q-1)

e=37777



m = pow(c,e,n)

print(long_to_bytes(m))

import gmpy2
from Crypto.Util.number import *
def find_m(c, d, n, p, q):
    f = (p - 1) * (q - 1)
    e = 37777
    d_inv = gmpy2.invert(d, f)
    m = pow(c, d_inv, n)
    return m
c = 8232151627233115772131180151146951323147507324390914513031444555762539986162650
e=37777
p = 8666789885346075954502743436174521501697
q = 2449101960789395782044494299423558347143
n = p*q
f = (p-1)*(q-1)
d = gmpy2.invert(e,f)
m = find_m(c, d, n, p, q)
print(long_to_bytes(m))

플래그 값:

깃발{r5a_Who_w0nt}

주 4 hakiehs

작업 내용:

아직 파일이 하나뿐이네요

Vsdx 접미사

이렇게문서 파일 직접 변환할 수 있습니다압축 패키지 형식 < a i=4>내부의 단서를 찾아보세요

압축을 풀다

Crypto-hakiehs\attachment\attachment\visio\media

이 주소에서 사진 비밀글을 찾아보세요

통과정보 검색

해당 항목 찾기비교표

플래그를 얻으려면 소문자를 비교하십시오.

플래그 값:

플래그{linkzeldaganon}

주목 5 Font

작업 내용:

이 질문은 약간 흥미롭습니다. 상상력을 발휘해 보세요 완전히 기타로 넘겨도 됩니다.

첨부파일은 사진 한장뿐입니다

민첩한 여우와 게으른 개

이미지 속성에서 팁을 찾았습니다.

처음에는 이모티콘 복호화인줄 알고 aea도 해봤는데 안되더군요.

따라서 이 암호화 방법은질문자 만 만들 수 있습니다.

비교표는 그림이나 텍스트에 있어야 합니다.

그러나 고려해야 할 사항이 질문은 비밀번호 질문입니다기타가 아닙니다

따라서스테가노그래피를 너무 많이 사용하지 말고단순하게 유지해야 합니다

총 2줄이 있어요

추측 한 줄은 답이고 한 줄은 비교입니다

세공35적표

그럼 사진을 보세요

그림의 문자 그대로의 의미는

민첩한 갈색 여우가 게으른 개를 덮칩니다.

번역에는 35자 이상이 필요합니다35자

TheQuickbrownfoxjumps overthelazydog

이것을 사용하여첫 번째 줄(◎☀◐♬¤☾♀☹☽§♪℗♩haus)♪®♂¤ ☒ ♫〼♪ڞ◐§◎☀◐◑☼♭©☺♪√)구성 비교표

√:g;♪:0;☺ d; © y; ♭ z; ☼ a; ◑ l; ◐ e;☀ h; ◎  t;§  r; ◐  e; Ҟ  v; ♪  o; 〼  s; ♫ p; ☒  m;¤  u;♂  j;® x;♪ o; t  f; ♩  n;℗  w; ♪ o; §  r; ;☀ h; ◎  t

마지막으로 이 비교표에 따르면

두 번째 줄을 풀어 깃발을 얻으세요

플래그 값:

 플래그{qtsyjfgvbndhflhgfnmjfhko}

질문 6 에이프코인

작업 내용:

dirsearch를 사용하여 디렉토리를 스캔하고 소스 코드 누출을 찾으십시오.

/static/font/ 디렉터리에서 .txt.php 백도어 파일을 찾았습니다.

CMD5에서 암호를 해독하여 연결 비밀번호 74658263을 얻고, Ice Scorpion을 사용하여 연결하여 플래그를 얻습니다.

플래그 값:

플래그{50ddd4d4-c403-422f-af67-3805077076aa}

주제 7 Easyphp

작업 내용:

프롬프트에 따라 힌트.php 파일을 읽으려면 PHP 의사 프로토콜을 사용하십시오.

Base64 디코딩 후 소스 파일 가져오기

힌트.php 코드에 따르면 get->__call에서 eval 함수를 실행하기 위해 팝 체인을 구성해야 합니다.

각 매직 메서드를 호출하는 방법

__call(): 존재하지 않거나 보이지 않는 멤버 메서드를 호출할 때 PHP는 먼저 __call() 메서드를 호출하여 메서드 이름과 해당 매개변수를 저장합니다.

__isset(): 객체의 존재하지 않거나 액세스할 수 없는 속성에 isset() 또는empty() 함수를 사용할 때 자동으로 호출되며 속성 이름을 매개변수로 전달합니다. .

__wakeup(): 객체가 역직렬화되기 전에 자동으로 호출되며( unserialize() 함수 사용), 이 메서드에서 객체 상태를 다시 초기화할 수 있습니다.

__destruct(): 객체가 소멸되기 전에 자동으로 호출되는 클래스의 소멸자

__toString(): echo 또는 print 출력 개체를 사용하여 개체를 문자열 형식으로 변환하는 경우 __toString() 메서드가 호출됩니다.

구성된 팝 체인(역방향)은 다음과 같습니다. __isset()을 사용하여 __call()을 트리거한 다음 __toString을 사용하여 __isset()를 트리거하고 마지막으로 __destruct()를 사용하여 __toString()을 트리거합니다. 참고로 속성 개수를 나타내는 값이 실제 속성 개수보다 큰 방식으로는 __wakeup을 우회할 수 없지만 dog->b ​​주소를 a에 주고 c를 할당하면 된다. ct 수업으로. get::__call()->mouse::__isset()->ct::__toString()->dog::__destruct()

그리고 힌트.php는 많은 기능을 필터링하기 때문에

따라서 문자열 타입을 나타내는 s를 대문자로 S로 표기하면 해당 값은 16진수로 해석됩니다. (길이는 변경할 수 없습니다.)

realflag 디렉터리의 파일 보기

플래그를 얻으려면 you_want_flag.php 파일을 확인하세요.

깃발을 얻으세요

플래그 값:

플래그{28fabc34-48bb-4959-b3c7-a67ddb343d8d}

질문 8 Ezupload

작업 내용:

dirsearch를 사용하여 디렉터리를 검색하여 플래그 파일을 찾고 플래그에 액세스합니다.

깃발을 얻으세요

플래그 값:

플래그{71a58713-31d7-4ae7-a5f7-d4889a8ec2e3}

추세구 get_source

작업 내용:

주소에 접속해 보니 해당 웹사이트는 php7.4.21을 사용하고 있는 것으로 나타났습니다. php<=7.4.21개발서버 소스코드 유출 취약점이 생각나서 이 취약점을 이용해 idnex.php를 보았습니다.

세 개의 변수 a, b, pwn을 POST하고 a는 b와 같을 수 없으며 a의 MD5 값은 pwn의 sha1 값과 같아야 합니다. 배열을 사용하여 플래그를 우회하고 가져올 수 있습니다.

깃발을 얻으세요

플래그 값:

플래그{25e02e06-3553-4a5b-bfa9-b1fff4745dde}

모두들 어서( •̀ Ω •́ )y 또 뵙기를 기대하겠습니다 

추천

출처blog.csdn.net/m0_68012373/article/details/134621058