본문 바로가기

스터디/CTF

(11)
ctf 공부 11일차 HackCTF Reversing - Welcome_REV 안녕 리버싱. 실행파일이라고 한다. 실행해보니 패스워드를 달라고 해서, 임의의 문자를 인자로 주면서 실행해주니 틀린 패스워드라고 한다. gdb로 열어서 main코드들을 확인해보면 main+77지점에 check_password라는 구간이 있다. 패스워드를 체크해주는 것 같으니 bp를 걸고 스택을 확인해주면 될 것 같다. check_password하는 구간에 bp를 걸고, aaaaa를 인자로 주면서 실행한다. 함수 내부로 들어가기 위해 si를 입력해준다. 이후 계속 ni check_password 내부 코드 실행해보다가 너무 길어서 포기했다.. 명령어가 무려 539줄에 cmp도 되게 많았다.. IDA로 열어주었다. main함수의 구조를 보면, 아까 봤..
ctf 공부 11일차 HackCTF Web - 보물 주어진 페이지에서 버튼을 눌러주면 page변수에 그 숫자를 넣어주고, 일정한 길이의 값을 출력한다. 해시값 같아서 길이를 확인해보니 128글자였다. 길이 128의 해시값을 만드는 것은 sha512이니, sha512해시를 떠주는 페이지라고 보면 되겠다. page변수에 get방식으로 어떤 값을 넘겨주든, sha512해시만 떠준다... 페이지 숫자 중에 비밀이 있어서 거기에 보물을 숨겨놨다고 해서, 여러모로 추측해보았으나 모르겠어서 라업을 봤다. 그냥 정말 다양한 숫자를 page변수로 넘겨주어서 맞추는 방식을 요구하는 문제였다. 간단한 코드를 작성해서 돌리거나 BurpSuite의 Intruder도구를 이용가능하다고 한다. 코드를 작성해볼 것인데, 이때 사용가능한 requests모..
ctf 공부 10일차 HackCTF Web - Guess me 값을 입력해서 넘겨주면, GET방식으로 guess 변수에 넘겨준다. 아래의 php코드를 해석해보자. extract함수는 배열 타입으로 넘어오는 키값들을 변수화한다고 한다. 즉, get으로 넘겨주는 모든 변수들을 해당 페이지에서 변수로 사용가능하게 된다는 것이다. guess로 값을 넘겨준 것도 그 중 하나이므로 사용 가능한 것이고. guess변수에 저장된 값이 존재하면, secret.txt($filename)에 저장된 내용을 문자열로 읽어들여서, 문자열의 시작부분과 마지막 부분에 공백(or 특수문자)을 제거해주어 secretcode 변수에 저장한다. 내가 입력해줄 guess 변수의 내용과 secretcode 변수의 내용이 동일하면 flag를 출력해준다. 경로가 바로..
ctf 공부 9일차 HackCTF Basic_BOF #1 프로그램을 동작해보면, 입력을 받고, 입력 받은 문자열과 어떤 주소값으로 추정되는 무언가를 출력해준다. IDA로 열어보면, main함수는 아래와 같다. fgets에서 입력받고, 위의 동작에서 확인 가능한 [buf]: '입력한 문자'와 [check] 0x4030201을 출력해둔 후 cmp결과에 따라 je나 jne를 하는 부분이 있는데, 이 부분을 잘 조정해주어야 flag가 출력될 것 같다. cmp부분에서 [ebp+var_C] 와 0DEADBEEFh가 같아야 jmp를 하지 않아서 /bin/dash를 실행할 수 있다. main함수를 선택한 뒤, f5를 눌러서 소스코드를 확인해보았다. 역시 소스코드로 변환해주니까 이제야 프로그램 구조가 제대로 보인다. v5변수에 -55903..
ctf 공부 8일차 HackCTF Cryptography - Smooth CipherText 처음에는 카이사르 암호라고 생각하여 복호화를 시도했지만, flag가 출력되지 않았다. 특히 주어진 문장들중 가장 아랫줄에 있는 flag형식의 내용이 HackCTF꼴로 변환되지 않았다. 시저암호가 아닌 것을 알았으니, 주어진 단서만으로 분석해보려 시도했다. HackCTF에서 동일한 c가 각각 m과 A로 다른 알파벳으로 치환되는 것 만으로도 시저암호가 아닌 것은 추측가능하다. 하지만 flag형식에서 {}가 그대로 있는 것을 보아 치환암호라는 것을 알 수 있고, 카이사르암호는 아니니까 비즈네르 암호일 것이라고 추측해볼 수 있다고 한다.(모르겠어서 사실 라업 봄..) LymoADJ HackCTF 와 설마 했는데 flag가 아니었다. FLA..
ctf 공부 7일차 악성프로그램의 실행 정보를 알아야 하므로, 윈도우 prefetch를 확인해야 한다. 악성프로그램의 실행 정보를 알아야 하므로, 윈도우 prefetch를 확인해야 한다. 바탕화면에 data2.encrypted라는 수상한 파일이 존재한다. 2020년 10월 28일 14시 14분 09초를 기점으로 실행된 파일을 확인해보자. 2020년 10월 28일 14시 14분 09초를 기점으로 실행된 파일들 중 의심스러운 프로그램 VBOXTESTER.EXE가 있었다. 아까 Desktop에 동일한 이름의 실행파일이 있었던 점에서 악성파일일 확률이 더 높은 것 같다. Desktop에 위치하는 VboxTester.exe 파일을 추출해보면 아래와 같이 격리된다. VboxTester.exe 가 악성 프로그램으로 예상되므로, 해당 프..
ctf 공부 5일차 HackCTF Cryptography - Great Binary 주어진 txt 파일을 열어보면, 바이너리로 된 숫자가 8개씩 있다. 4개씩 끊어서 16진수로 나타낸 후 hxd로 빈 파일에 hex 코드로 넣어주면 flag가 나올 것 같았다. 온라인 사이트에서 바이너리들을 16진수로 바꿔주었다. hxd에서 16진수로 이루어진 문자들을 붙여넣어주었더니 flag발견 Web - 마법봉 magic과 hash키워드로 찾아보니, magic 해시 취약점이라는 게 있어서 그것대로 해주니 풀렸다.. 소스코드를 확인하면, 빈칸에 넣어주는 값이 변수 flag의 값으로 (get방식으로)넘어가고, md5로 240610708을 해시뜬 값과 입력해준 값을 sha1로 해시뜬 값이 같으면 flag를 출력한다. magic 해시 취약점이라는..
ctf 공부 4일차 HackCTF [Forensics] - So easy? 주어진 jpg파일을 HxD로 열어보니...flag가 있었다. 넣고나서 보니 속았지라니.. 역시 아래에 있는 hidden.txt가 담긴 압축파일을 열어야 할듯. 주어진 그림이 어쩐지 계속 까야하는 러시아 인형이었다. 왜 안되나 했더니 시그니처가 이상했다. 고쳐주고 해도 안되었는데.. 그게 아니라 추출범위를 잘못 잡았다..다시 복붙하니 제대로 나왔다. 역시 작심3일인가.. 오늘 양심없지만 3일 넘긴거에 의의를...ㅎ