본문 바로가기

전체 글

(113)
[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("..
[드림핵 워게임] sql injection bypass WAF - 문제 - 풀이 문제 사이트에 접속하면 뜨는 첫 화면이다. SQL 문이 있고, 그 아래 결과가 뜨는 부분이 있고, 그 아래 입력창이 있다. INSERT INTO user(uid, upw) values('abcde', '12345'); INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}'); INSERT INTO user(uid, upw) values('guest', 'guest'); INSERT INTO user(uid, upw) values('test', 'test'); INSERT INTO user(uid, upw) values('dream', 'hack'); 파일을 다운로드해서 init.sql 파일을 살펴보면 위와 같은 계정을 삽입하는 sql 문을..
[드림핵 워게임] error based sql injection 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 탐색하기 사이트에 접속하면 처음 뜨는 화면이다. admind을 입력해서 전송해보니 완성된 쿼리문이 뜬다. 쿼리 실행 결과에 대해서는 출력되는 내용이 없다. 이 문제의 이름이 error based sql injection이라는 것을 생각해보았다. error based sql injection은 고의로 에러를 발생시켜 출력되는 에러 메시지를 통해 원하는 정보를 노출시키는 공격이다. 에러를 발생시키기 위해 admin' and i=1-- 이라는 값을 입력해보았다. 에러 메시지가 뜬다. 하지만 원하는 정보는 뜨지 않는다. 원하는 정보가 에러 메시지에 보이도록 하기 위해서 적당한 입력값을 찾아야한다. 2. 익스플로잇 코드 작성하기 구글링을 하다가 extractva..
[Digital Overdose CTF] Can you tell me my email?(미해결) admin 계정의 이메일 주소를 찾는 문제다. 위의 문제에 대해 아래와 같이 접근해보았다. 사이트에 접속하면 뜨는 첫 화면이다. 메뉴바의 오른쪽 끝에 있는 Online users를 클릭해보면 admin 유저가 뜬다. admin을 클릭해보면 Send Email이라는 말풍선이 뜬다. 어떤 식으로 접근해야 할지 짐작이 안 돼서 힌트를 열어보았다. testmail 파라미터를 확인하라는 힌트이다. url을 확인해보니 testmail이라는 파라미터가 있어서 해당 파라미터에 이메일 주소 형식의 값을 임의로 입력해보았다. admin 유저 밑에 testmail이라는 유저가 떴다. 이후로 어떤 식으로 진행해야할지 짐작이 가지 않아서 힌트를 하나 더 열어보았다. 세번째를 알기 위해서는 둘이 필요하다는 힌트이다. 힌트의 의미..
[드림핵 워게임] blind sql injection advanced 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 페이지 기능과 코드를 확인한다. 사이트에 접속했을 때 처음으로 뜨는 페이지이다. 쿼리문과 uid 입력창을 확인할 수 있다. INSERT INTO users (uid, upw) values ('admin', 'DH{**FLAG**}'); INSERT INTO users (uid, upw) values ('guest', 'guest'); INSERT INTO users (uid, upw) values ('test', 'test'); 다운로드한 파일 중에서 init.sql의 코드를 살펴보면 계정이 3개 삽입되어 있는 것을 확인할 수 있다. 입력창에 guest를 입력하면 상단에는 완성된 쿼리문이 뜨고, guest 라는 계정이 존재하므로 아래에는 user "gu..
[드림핵 워게임] funjs 위의 문제를 아래와 같은 과정으로 풀어보았다. 1. 페이지의 기능을 확인한다. 드림핵 사이트에서 다운로드한 파일을 브라우저에서 실행하면 위와 같은 배너가 창을 마구 돌아다닌다. 입력창에 임의의 입력값 flag를 입력하면 잘못된 입력값이기 때문에 NOP!이라는 문구가 뜨는 것을 확인할 수 있다. 2. 코드를 확인한다. if (flag[_0x374fd6(0x17c)] != 0x24) { text2img(_0x374fd6(0x185)); return; } for (var i = 0x0; i < flag[_0x374fd6(0x17c)]; i++) { if (flag[_0x374fd6(0x176)](i) == operator[i % operator[_0x374fd6(0x17c)]](_0x4949[i], _0x42..
[드림핵 워게임] login-1 위의 문제를 아래와 같은 과정으로 풀어보았다. 1. 페이지 기능을 확인한다. 사이트에 접속하면 뜨는 첫 화면이다. 메뉴바 오른쪽 끝에 있는 Login을 클릭한다. 로그인 폼이 뜬다. 아래에는 register와 forgot password? 라고 써있는 하이퍼링크가 있다. register를 클릭한다. 계정을 등록할 수 있는 폼이 뜬다. userid=user, password=1, Name=user 로 하여 아무 계정을 하나 등록한다. 계정을 등록하면 성공적으로 등록되었다는 텍스트와 함께 백업코드가 출력된다. 등록한 계정으로 로그인한다. 로그인에 성공하면 Home으로 리다이텍트된다. 메뉴바에는 계정 정보가 뜬다. ID : user 를 클릭한다. userID와 UserName, 그리고 UserLevel이 출력..