분류 전체보기 117

[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가 나온다 ​ ​

728x90