CTF 27

[dreamhack] video_in_video

이 문제를 다운로드 해보면 다음과 같은 jpg 이미지가 있습니다. 한번 열어 보니, 다음과 같이 생겼습니다 Hex Fiend를 이용하여 이미지의 헥스 값을 한번 확인해보겠습니다 일단은 헤더가 FFD8FFE0~로 시작하는 것을 보니 JPG 파일은 맞긴 맞는가 보다. 그럼 JPG 파일의 푸터(FFD9)를 한번 찾아보자! 정말.. 수상한 위치에 나온다..... 왠지 뒤에는 다른 형식의 파일이 붙여진것 같은데?! 라는 기분에 헤더를 한번 검색해봤더니 이게 mp4의 ftyp-mmp4-mdat 파일의 구조인데, 이를 참고하면 우리는 ftyp-isom-moov 파일임을 알 수 있다! 즉, 영상이 숨겨져 있다는 것... 그렇다면 처음의 jpg만 따로 추출하면 어떤 사진이 나올까? 처음이랑 똑같은 이미지가 나온다......

WARGAME/forensic 2023.06.02

[dreamhack] ROT128

문제 설명 다운로드 해 보면 encfile과 rot128.py 파일이 존재합니다. 이때, rot128.py로 이미 암호화된 파일이 encfile이겟죵 ​ rot128.py를 복호화할 수 있는 코드를 짜면 되겠다! 그럼 한번 rot128.py 코드를 분석해봅시다 with open('flag.png', 'rb') as f: plain_s = f.read() 1. flag.png를 바이너리 파일로 열고 plain_s 라는 변수로 읽어옵니다 ​ plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s] 2. plain_list 리스트를 생성하고 각 바이트의 값을 16진수로 변환한 후 2자리로 맞추고 대문자로 변환하여 저장합니다. ​ enc_list = list(r..

[dreamhack] sleeping shark

역대급... 시간이 오래 걸린 문제 ㅜㅜ ​ 문제 파일을 다운 해보면 pcap라서 저는 와이어샤크로 분석을 했습니다 ​ 일단 tcp follow 해봤는데 별로.. 쓸모 있는 정보는 나오지 않았습니다 ​ ​ http follow를 했더니 흥미로운게 중간에 보입니다. ​ 보이시나요? ​ 보이시나요? ​ 이 문장이... 상당히 흥미롭습니다. SQL 인젝션으로 보이죠 ​ url decode 해보면 SELECT IF(ASCII(SUBSTRING((SELECT flag FROM s3cr3t LIMIT 1), 35, 1)) = 156, SLEEP(3), 0) 인데 이 문장의 의미는 다음과 같다: 주어진 s3cr3t 테이블에서 35번째 문자의 ASCII 코드 값이 156인지 확인하고 나서 맞으면 3초 대기하고 틀리면 ..

WARGAME/forensic 2023.05.30

[dream hack] baby-linux

참 재밌는 문제입미다 웹사이트를 실행해보면요 요렇게 생겼습니다 ​ 그럼 이제 python 파일을 한번 볼게여 ​ 이 코드를 한번 분석해 봅시다. ​ user_input = request.form.get('user_input') cmd = f'echo $({user_input})' 우선 요 부분을 보면 웹페이지에서 볼 수 있는 text 입력 칸이 user_input이라는 변수로 받게 되고 cmd라는 변수에 저장됩니다. ​ if 'flag' in cmd: return render_template('index.html', result='No!') 그리고 만약 우리가 입력한 값에 'flag'라는 철자가 들어가게 된다면 무조건 No!를 출력하도록 되어있는 걸 볼 수 있습니다. ​ try: output = subp..

WARGAME/misc 2023.05.30

[써니나타스] 18번

뭔가 딱봐도 아스키 같아보이지 않나요?? 아스키로 변환 해보겠습니당 ​ https://onlineasciitools.com/convert-decimal-to-ascii 온라인 툴 사용해서 아스키로 바꿨는데도 이상한 암호문이네요 ​ 근데 써니나타스에 자체 툴이 있는걸 아시나요? 저는 18번을 풀면서 알았습니다...... 바로 디코드 해봅시다.. ​ 딱보면 base64같죠? 써니나타스 툴로 디코드하면 비번이 나와용 ​

[h4cking game] ROX

flag.py 파일을 살펴보자 여기서 보면 known_plaintext를 알맞게 바꿔서 result를 올바른 거를 출력하도록 하는것으로 보인다! ​ 그대로 "?????"로 해놓고 출력해보면 결과는 요렇게 이상하게 나온다.. ​ 근데 우리는 결정적인 힌트를 알죠 바로 flag 형식이 H4CGM{~~} 인거를 아니깐 known_plaintext에 H4CGM을 넣어보자! enjoy~어쩌구의 결과가 나왔다. ​ 여기서 중요한 사실! result를 연산할때 XOR연산이 있다는것에 주목해라. XOR연산의 특징 중 하나는 a ^ b = c a ^ c = b 요렇게 연산이 가능하다는 것이다. 즉, enjoy를 넣어서 해보면 우리가 원하는 flag 형식이 나온다는것! ​ 해보면 다음과 같이 flag가 나온다 ​ ​