반응형

CTF 604

[JISCTF] Baby Reverse - 리버싱 / IDA

제목처럼 간단한 리버싱 문제 아무런 설명없이 파일만 덩그러니 주어진다. Easy.zip 파일 압축을 풀어보면 Easy 라는 이름의 파일이 들어있다. 리눅스 환경에서 file 명령어를 통해 어떤 파일인지 확인할 수 있다. ELF 파일이라고 나오는데 ELF는 리눅스에서 실행가능한 실행파일이다. 한번 실행시켜 봤더니 실행하자마자 Try harder!! 라는 문구가 나오면서 프로그램이 종료된다. IDA라는 디스어셈블러를 이용해 Easy 파일을 열어 main 함수의 수도코드를 살펴보았다. 가장 먼저 보이는 조건문에서 argc가 1인지 확인을 한다. 여기있는 argc는 argument의 갯수를 의미한다. 아까처럼 ./Easy 라고만 실행하면 argc 는 1이 되어서 Try harder!! 가 출력되고 끝나는 것이다..

CTF/리버싱 2023.01.17

[CTFlearn] PIN - 리버싱 / IDA

CTFlearn의 쉰 여섯번째 문제 이번엔 처음으로 나온 리버싱 문제이다. 문제 난이도가 Medium으로 분류되어 있는데 풀어보면 Easy 수준으로 느껴질만큼 쉽다. 문제에서 주어지는것은 rev1 파일이다. 리눅스 환경에서 file 명령어를 통해 어떤 파일인지 확인할 수 있다. ELF 파일이라고 나오는데 ELF는 리눅스에서 실행가능한 실행파일이다. 한번 실행시켜 봤더니 실행하자마자 Masukan PIN = 이라는 문구가 나오며 사용자 입력을 받는데 123 이라고 입력해봤더니 PIN salah! 라는 문구가 출력되었다. 검색해보니 salah 는 잘못되었다는 뜻이라고 한다. IDA 라는 디스어셈블러를 이용해 rev1 파일을 열어보았다. main 함수의 수도코드를 가장 먼저 살펴보니 scanf 로 사용자의 입..

워게임/CTFlearn 2023.01.13

[JISCTF] Unknow Ransomware - MISC / Base64

어렵지 않은 Unknow Ransomware 문제 뭔가 카데고리 분류하기 애매해서 MISC 로 넣었다. MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제 설명을 읽어보면 unknown ransomware에 감염되어서 파일이 암호화 되었다고 한다. 암호화된 파일이 주어지는 flag.enc 파일인데 이걸 decrypt 하는것이 문제의 목표이다. Notepad++ 을 이용해 flag.enc 파일을 열어봤더니 위와 같은 내용으로 채워져 있었다. 파일의 맨 끝을 보니 == 로 끝나고 있었다. = 은 Base64에서 사용하는 패딩으로 저렇게 알수없는 알파벳+숫자들이 있는 데이터의 맨 끝이 = 또는 == 이라면 Base64 로 인코딩 되었다고 생각하면 거의 맞다. Cybe..

CTF/MISC 2023.01.12

[CTFlearn] The Credit Card Fraudster - 프로그래밍 / Python

CTFlearn 의 쉰다섯번째 문제 이번엔 Easy난이도의 프로그래밍 문제이다. 이전문제들과 달리 뭔가 설명이 길어서 조금 긴장했다. 내용을 대강 읽어보면 INTERPOL에서 추적하고 있는 신용카드 사기꾼을 붙잡았는데 사기꾼이 가지고 있던 영수증에 찍힌 신용카드 번호의 일부분을 보고 신용카드 전체 번호가 어떻게 되는지 알아내는것이 목표이다. 힌트는 두가지가 주어진다. 1. 신용카드 번호는 123457의 배수이다. 2. 신용카드 번호 는 Luhn 알고리즘으로 검증할 수 있다. 한번 파이썬으로 구현해본다. cardnum_f = '543210' cardnum_b = '1234' for i in range(999999): cardnum_m = ('00000' + str(i))[-6:] cardnum = int(..

워게임/CTFlearn 2023.01.11

[JISCTF] Malicious2 - 포렌식 / John the Ripper

간단한 포렌식 문제 Malicious 1 이 있었는지 기억이 안나는데 일단 캡쳐해둔건 Malicious 2 밖에 없다. 별다른 문제 설명 없이 mycv.docx 파일만 덩그러니 주어진다. mycv.docx 파일을 열려고 보니 비밀번호가 걸려있었다. docx같은 오피스 파일 비밀번호를 crack 하기위해 John the Ripper 라는 도구를 자주 사용한다. 여러가지 비밀번호를 crack 해주는 기능을 가지고 있다. 칼리 리눅스에서 offic2john > hash 명령어로 hash 파일을 생성해준 다음 john 명령어로 John the Ripper 를 사용해 hash 파일의 원래 값을 찾아준다. 조금 더 확실하게 찾기 위해 강력한 wordlist 파일은 rockyou.txt 파일을 --wordlist 옵..

CTF/포렌식 2023.01.10

[CTFlearn] Simple bof - 포너블 / 버퍼오버플로우

CTFlearn의 쉰네번째 문제 드디어 처음나온 포너블 문제이다. 포너블이라서 살짝 쫄았는데 이건 내가 봤던 포너블 문제중에서 가장 쉽고 친절한 문제였다. 문제 제목에 나온것처럼 문제의 목표는 버퍼오버플로우를 하는것이다. 먼저 문제에서 주어지는 bof.c 코드를 살펴본다. 크기가 16인 padding, 크기가 32인 buff 배열이 있고, nonsecret에는 0xffffff00, secret에는 0xdeadbeef 라는 값이 각각 들어있다. 프로그램을 실행시키면 Input some text: 를 출력하면서 사용자의 입력을 받는데, 입력을 받을 때 입력값에 대한 길이를 검증하지 않기 때문에 버퍼오버플로우 취약점이 발생한다. 버퍼오버플로우로 secret 변수의 값을 0x67616c66 으로 덮어쓴다면 pr..

워게임/CTFlearn 2023.01.09

[Affinity CTF] wholeisbetter - 포렌식 / Base64

pdf와 관련된 포렌식 문제 난이도가 그렇게 어렵지 않은 문제이다. 이전에 Root Me에서 비슷한 문제를 풀이했었다. (https://hackingstudypad.tistory.com/340) 문제에서 주어지는 것은 There_is_a_flag_somewhere.pdf 파일이다. 안에 들어있는 내용은 위와 같은데, 이번 문제에서는 내용은 전혀 읽어볼 필요도 없다. 주어진 pdf 파일을 strings 명령어로 살펴보니 중간에 누가봐도 수상한 문자열들이 보였다. Li0t, Li4t, LS0u 등이 계속 반복되는데 뭔가 Base64로 인코딩 된 것 같았다. 이 데이터는 Root Me에서 했던것 처럼 PDFStreamDumper 라는 도구를 이용해서도 확인이 가능하다. CyberChef(https://gchq..

CTF/포렌식 2023.01.07

[CTFlearn] Image Magic - 프로그래밍 / 포렌식 / PIL

CTFlearn의 쉰세번째 문제 이번엔 처음으로 나온 프로그래밍 카테고리의 문제이다. 사실 여기서 분류는 프로그래밍으로 했지만 거의 포렌식 문제라고 생각한다. 간만에 CTFlearn에서 생각해볼 만한 문제가 나와서 재미있었다. 문제 설명을 읽어보면 누군가가 사진의 픽셀을 가져와 재구성했다고 이걸 PIL 모듈을 이용해 복원할 수 있냐고 물어본다. 이미지가 변경되기 전 Width는 304라는 힌트도 주어진다. 이것이 문제에서 주어지는 out copy.jpg 파일이다. 아무것도 없는것 처럼 보이는데 사실은 그게 아니다. 이미지를 우클릭해 속성을 보면 너비가 27968, 높이가 1인 것을 볼 수 있다. 아까 문제 설명에서 본대로 누군가가 이미지의 픽셀을 일렬로 쭉 늘어놓은 것이다. 일단 원래의 높이를 구해준다...

워게임/CTFlearn 2023.01.06

[HackTheBox] Weather App - 웹해킹 / SSRF / SQL Injection

HackTheBox에서 제공하는 웹 해킹 문제 난이도가 Easy로 되어있는데.. Easy 치고는 좀 어려운 편이라고 생각한다. 문제 페이지에 접속하면 이런 화면이 나온다. 문제 제목 그대로 날씨를 알려주는 기능이다. 대구에서 접속 안했는데 이상하게 대구라고 뜬다. 같이 제공되는 문제 파일을 보면 날씨를 알려주는 index.html 페이지 외에도 login.html, register.html 페이지가 있는것을 확인할 수 있다. URL에 직접 /login, /register 라고 입력하면 이렇게 접속이 가능하다. router.post('/register', (req, res) => { if (req.socket.remoteAddress.replace(/^.*:/, '') != '127.0.0.1') { re..

[Root Me] XSS DOM Based - AngularJS - 웹해킹 / 크로스사이트스크립트

Root Me에서 제공하는 크로스 사이트 스크립트 문제 이전에 포스팅 했던 문제들과 비슷한 맥락이다. (https://hackingstudypad.tistory.com/48) (https://hackingstudypad.tistory.com/297) (https://hackingstudypad.tistory.com/334) (https://hackingstudypad.tistory.com/362) 지난 문제들 풀이를 보면 조금 이해하기 쉽다. 문제설명을 읽어보면 이번 문제의 목표 역시 admin 의 session cookie 값을 훔치는 것이다. 문제페이지에 접속하면 이런 화면이 나온다. Name Encoder 라고 적혀있고 Main과 Contact 페이지를 이동할 수 있다. Main 에서는 Enter ..

워게임/Root Me 2023.01.04
반응형