본문 바로가기

CTF

(18)
[Pointer Overflow CTF] Easy as it Gets 보호되어 있는 글입니다.
[HSpace CTF] HSpace Free Board 문제 사이트에 접속하면 처음으로 보이는 페이지이다. 로그인폼이다. Sign UP 페이지로 이동해서 회원가입을 한다. 회원가입한 계정으로 로그인한다. Login success! 라는 알림창이 뜬다. 게시판이 있고 포스팅을 할 수 있다. 게시물을 하나 만들어본다. Post버튼을 클릭하면 Post done. 알림창이 뜬다. 다시 게시판으로 돌아가보면 내가 작성한 글이 올라와있다. 게시물을 열어보면 위와 같이 내용을 볼 수 있다. url을 확인해보면 /read.php가 렌더링되었고 id 파라미터를 전송한 것을 볼 수 있다. id 파라미터를 0으로 바꾸어 본다. 아무 내용도 없는 게시물이 조회된다. id 파라미터에 sql injection을 시도해보면 될 것 같다. 우선 컬럼이 몇 개 있는지 찾아본다. 1. id..
[TJCTF 2023]swill-squill 1. 사이트 기능 확인 처음 페이지에 방문하면 뜨는 페이지이다. Name과 Grade 입력란과 Register 버튼을 확인할 수 있다. 값을 입력해서 Register 해보았다. Register를 하고 나니 Note 입력란과 Save Note 버튼이 있는 페이지로 연결된다. 노트를 입력해보았다. 같은 페이지의 상단에 내가 입력한 노트가 보여진다. 2. 코드 확인하기 def create_db(): conn = sqlite3.connect(':memory:') c = conn.cursor() c.execute( 'CREATE TABLE users (name text, grade text)') c.execute( 'CREATE TABLE notes (description text, owner text)') c...
[BYUCTF 2023] Notes (미해결) 1. Server 페이지 기능과 코드 확인 우선 Server 링크로 접근해 페이지와 코드를 확인해보았다. server.py 코드의 상단을 먼저 살펴보면 다음과 같다. FLAG = open("flag.txt", "r").read() SECRET = open("secret.txt", "r").read() users = [{'username':'admin','password':SECRET}] # NEVER DO THIS IN PRODUCTION fyi notes = [{ "note":FLAG, "user":"admin", "id":"00000000000000000000000000000000", "shared":[] }] csrf_tokens = [] users 배열에는 admin 계정을 포함한 사용자 계정 정..
[Vishwa CTF] Eeezzy(미해결) 1. 시작 받은 링크로 들어가면 뜨는 첫 화면이다. 로그인 폼을 확인할 수 있다. 코드도 제공되고 있다. 분석해보면, username과 password 값을 GET 방식으로 받고 있다. 둘다 값이 존재하면 $flag와 값을 비교해서 $flag와 값이 같으면 $_SESSION['status']에 $flag를 저장하고 다르면 "Invalid username or password"라는 문구를 저장한다. 예외가 발생하면 $_SESSION['status']에 $flag를 저장한다. 2. 페이지 기능 확인 username과 password에 임의의 값을 입력하고 로그인을 했더니 로그인 폼 안에 Invalid username or password라는 문구가 출력된다. 앞서 코드를 살펴본 바에 따르면 $_SESSION..
[LINE CTF 2023] old pal(미해결) 1. 시작 링크로 들어가면 나오는 첫 화면이다. 주소창을 확인해보면 password 파라미터에 아직 값이 입력되지 않은 상태인 것을 확인할 수 있다. my $pw = uri_unescape(scalar $q->param("password")); 코드를 확인해보면 password 파라미터의 값을 $pw 변수가 받고 있는 것을 확인할 수 있다. password 파라미터에 올바른 패스워드 값을 입력하면 되는 것으로 보인다. 2. 코드 분석 if (eval("$pw == 20230325")) { print "Congrats! Flag is LINECTF{redacted}" } else { print "wrong password :("; die(); }; FLAG와 직접적으로 관련된 코드부터 살펴보면, 패스워드가..
[LINE CTF 2023] baby simple gocurl 1. 시작 링크로 들어가면 뜨는 첫 화면이다. 3개의 입력창이 있는데, URL을 입력하는 창, 헤더 Key를 입력하는 창, 헤더 Value를 입력하는 창이다. 입력값을 입력한 뒤 CURL이라고 쓰여 있는 버튼을 클릭하면 값이 전송된다. cURL의 뜻을 몰라 검색해봤다. curl은 client url의 약자로, 프로토콜을 이용해 URL로 데이터를 전송하여 서버에 데이터를 보내거나 가져올 때 사용하는 명령어라고 한다. 페이지가 어떻게 동작하는지 확인하기 위해 URL입력창에 플레이스홀더로 들어있는 값 https://line.me/en/을 그대로 입력해서 제출해보았다. 해당 URL이 가리키는 페이지 소스가 아래 박스에 출력되었다. 2. 코드 분석 코드를 살펴보면 엔드포인트 3개를 확인할 수 있다. r.GET("..
[Digital Overdose CTF] Can you tell me my email?(미해결) admin 계정의 이메일 주소를 찾는 문제다. 위의 문제에 대해 아래와 같이 접근해보았다. 사이트에 접속하면 뜨는 첫 화면이다. 메뉴바의 오른쪽 끝에 있는 Online users를 클릭해보면 admin 유저가 뜬다. admin을 클릭해보면 Send Email이라는 말풍선이 뜬다. 어떤 식으로 접근해야 할지 짐작이 안 돼서 힌트를 열어보았다. testmail 파라미터를 확인하라는 힌트이다. url을 확인해보니 testmail이라는 파라미터가 있어서 해당 파라미터에 이메일 주소 형식의 값을 임의로 입력해보았다. admin 유저 밑에 testmail이라는 유저가 떴다. 이후로 어떤 식으로 진행해야할지 짐작이 가지 않아서 힌트를 하나 더 열어보았다. 세번째를 알기 위해서는 둘이 필요하다는 힌트이다. 힌트의 의미..