본문 바로가기

CTF

(53)
holyshield BrokenPiano holyshield BrokenPiano이문제는 대회 때 아쉽게 못풀었던거같다 피아노 모양에 C#으로 된 바이너리이다 그리고 사진 처럼 버튼마다 클릭시 값을 가지게 되는데값을 다 누른 후 버튼 17을 누르면 된다 우선 버튼 17을 보면 this.code가 null과 같다면 return을 한다 그렇기 때문에 아무버튼이나 한번 눌러주고 버튼 17을 눌러준다버튼 17은 오른쪽 맨 끝 검은 건반이다 지금은 접속이 안되는데 저 위에 사이트에서 base64로 인코딩된 값이 나온다임시로 base64로 인코딩해서 값을 서버에 넣고 위에 부분에 아이피와 포트를 변경해서 풀도록 하겠다이런식으로 기존 바이너리를 인코딩해서 서버에 넣었다 엄청긴데 저걸 풀어서 a.exe로 만든다 그리고 a.exe가 있다면 해당 소스처럼 내가 ..
holyshield sound holyshield sound 앱을 실행하면 이렇게 나온다우선 아이디와 패스워드를 구해야하는데 로그인 실패 부분이있다아이디를 obj 변수에 저장하고패스워드를 obj2에 저장한다그리고 밑에 보면 i==length가 같아야하는데 결론은 아이디와 패스워드가 같아야한다obj를 이용해 b.a에 한글자씩 보게되는데 이렇게 나온다그래서 아이디를 한글자 입력하고 패스워드를 알아내야하는데b부분을 조금만 보면알 수 있다i2 = 33이다내가 입력한 문자를 carr2에서 찾고i가 증가한만큼 carr에서 찾는다그리고 더하는데하지만 리턴값에서 조금 변동될 수 있다고로 이렇게 4개를 찾았는데 이런식으로 패스워드는 엄청 많다아무거나 입력하고 로그인성공을하게 되면이런 판이 뜨게 되는데 소리를 아무리 질러도 90이 안넘어간다그래서 처음..
holyshield puzzle holyshield puzzle이런식으로 이미지가 주어지는데 이걸 합쳐서 하나의 이미지로 만들어야한다 http://swlock.blogspot.kr/2015/12/script-python-tile.html 우선 이 글을 참고했다파일 이름이 00_00.png이런식인데 1단계는 쉽게 통과할 수 있다2단계는 base64인데 디코딩을해서 파일이름을 위와같이 만들어주고 합치면된다이제 3단계인데 3단계는 MD5로 되어있다 md5는 복고화가 일일이 안되니반대로 생각해보면된다 파일 형식은 00_00.png이런식이다 그러므로 01_01.png이름을 md5로 해서 찾으면 된다12345678910111213import osimport hashlib for x in range(1, 100): for y in range(1, ..
holyshield ransome holyshield ransome이 문제는 ransomware파일과 그걸 당한 hwp 파일을 하나 주었다 우선 파일 아이콘을 보니깐 파이썬을 많이해서 그런지 pyinstaller로 실행파일을 만들었다는걸 알아차렸다 그래서 디컴파일법을 검색해봤는데 pyinstxtractor.py 이런 pyc로 바꾸는 디컴파일 소스가 존재했다 소스를 돌려보니 ransome이라는 파일이 나왔는데 그 파일은 pyc가 아니였다 파일 헤더를 살펴보면 63 00 00 00 으로 시작하는데 파이썬 2.7점 버전의 pyc 확장자인 03 F3 0D 0A을 붙여주고 뒤에 4바이트는 00으로 채운다 그러면 pyc 파일이 만들어지게 되는데 그걸 다시 디컴파일하면 소스가 나타난다1234567891011121314151617181920212223..
holyshield easylang holyshield easylang우선 문제가 이렇게 나왔다 이게 헥스레이가 안되서 답답했는데바이트 사이즈를 수정해주면 헥스레이를 사용할 수 있다 여기서 컴파일러를 선택하고 int가 8바이트로 되어있는걸 4로 변경해준다그럼 이제 헥스레이가 되는데 main_func2 함수를 헥스레이하고 밑으로 내리면 XOR한 값과 비교하는 부분이 있다일단 18h로 24자라는걸 알 수 있다 01234567890012345678901234를 입력해주고 실행하면이런식으로 알 수 있다HS{we1come_t0_rhfod!!:)}
holyshield StudyScala holyshield StudyScala 12345678#StudyScalaa = [48, 49, 65, 71, 85, 95, 97, 100, 101, 102, 103, 105, 108, 114, 116, 121, 123, 125, 34, 52, 12, 43, 99, 43, 55, 1, 3, 4, 72, 83]b = [4, 5, 19, 12, 13, 8, 6, 7, 15, 5, 3, 0, 14, 5, 1, 14]result = ""for x in b: result += chr(a[x]) print resultColored by Color Scriptercs 일단 1번 문제다 답이 비교적 간단한 문제였다 처음에 인증을 못했는데 자세히 보니깐 앞과 뒤에 HS{}이걸 붙여주더라HS{U_4lready_G0t_1t}
RC3 CTF GoReverseMe 주말이라고 천천히 아주 느긋하게 푼 문제다 실행하면 인자를 안줘서 뜨는 문구 같다 그냥 빈 파일을 하나 만들고 인자로 줘보자 자 실행했더니 바탕화면에 flag.enc라는 파일이 만들어졌다 그냥 랜섬웨어로 암호화한 것처럼 보이는 파일이 나타난다 우선 실행을 하면 runtime_text라는 함수가 있는데 헥스레이로 봤을 시 main_step으로 1~4까지 함수가 있다이 부분을 분석하면 쉽게 풀 수 있을 듯 하다 main_step1을 보면 어떤 값을 가져와 0x69랑 XOR 연산을 한다 위에 루프를 지나서 덤프창을 보니 golang-or-bust라는 값을 볼 수 있다처음엔 어디에 쓰는지 모르니 일단 알아두기만 하자main_step1은 더이상 볼일이 없다 이제 main_step2를 봐야하는데그냥 봐도 너무 길다..
RC3 2016 CTF FLE 이번 문제는 희근이형이 추천해준 문제다 파일 크기가 작고 비교적 쉽다 argv로 인자를 받아서 flag랑 비교한다비교해서 맞다면 gottem을 출력하는데그 위에 보면 enc(dest)라고 함수가 하나있다 이렇게 생겻는데 XOR연산을한다 이걸 코딩하면 12345678910111213141516171819202122a = [0x36, 0x22, 0x57, 0x12, 0x2A, 0x2E, 0x30, 0x12, 0x30, 0x29, 0x21, 0x12, 0x22, 0x2D, 0x25, 0x78, 0x49, 0x38, 0x2B, 0x6A, 0x36, 0x24, 0x49, 0x73, 0x2B, 0x2E, 0x2F, 0x76, 0x2A, 0x26, 0x49, 0x79, 0x2B, 0x33, 0x00]b = [0x25..