Hacking_study 45

UNION SQL injection

SQLi 데이터 추출 sql 질의문의 결과가 화면 상에 출력되는 경우와, 화면 상에 출력되지 않는 경우는 다른 방식으로 SQLi 공격을 해야한다. sql 질의문 결과가 화면에 출력 되는 경우 : UNION sqli 공격 step 1. 공격 서버의 쿼리문 추리 select ???? from ???? where ???? 까지 추리하는 건 어렵지 않다. step 2. 취약점 확인 간단한 and 문 (ex) and '1'='1 을 넣어서, sqli 공격을 가늠한다. step 3. 컬럼(column)개수 확인 union문을 쓰려면 union문 양 옆의 select문의 컬럼 개수가 같아야 한다. 이를 위해 order by 구문을 활용한다. 만약 order by 1, order by 2 입력했을 때는 정상 출력되고,..

워게임 만들기! (Lv1. 브루트포스)

코드 소스 1. index.php 브루트포스 button { display: inline-block; padding: 5px 10px; background-color: gray; color: white; font-size: 18px; text-decoration: none; border-radius: 5px; } 010-1234-5678에 전송된 PIN코드를 입력하세요 Enter Colored by Color Scripter cs 2. login.php Colored by Color Scripter cs 3. good.php 브루트포스 로그인 성공 Colored by Color Scripter cs 세션 파기하는 기능은 뺐다ㅎ... 풀이 index.php 화면 잘못된 pin을 입력하면 아래 사진처럼 로그..

워게임 만들기! (Lv0. process jump)

코드 소스 1. index.html 핵미사일 시스템 .missile-button { display: inline-block; padding: 10px 20px; background-color: #f00; color: #fff; text-decoration: none; font-size: 18px; border-radius: 5px; } Nuclear Missile! 퐈이어 Colored by Color Scripter cs 2. process1.php 핵미사일 시스템 .missile-button { display: inline-block; padding: 10px 20px; background-color: #f00; color: #fff; font-size: 18px; text-decoration: no..

워게임 만들기! (Lv0. 쿠키변조)

코드 소스 1. index.php : 로그인 폼 로그인 페이지 로그인 현재 아이디/비밀번호는 good/morning 입니다. admin계정으로 로그인 하세요. 로그인 Colored by Color Scripter cs 2. login.php : 로그인 처리 Colored by Color Scripter cs 폼에서 받아온 username 과 password를 변수에 저장하고, loginuser 쿠키의 값을 username으로 설정했다. good/morning 계정으로 로그인했을 때만 welcome.php로 이동되게 했다. 3. welcome.php : 로그인 성공 시 메인페이지

SQL select 구문 / 로그인 유형 2가지 / SQL injection

DB 구조 database :엑셀 파일 table : 엑셀 시트 column : 열(세로 데이터) row : 행(가로 데이터) 예를 들어, 다음과 같은 테이블에서 column은 3개, row는 2개이다. 맨 위의 행은 이름표와 비슷한 역할을 하는 것으로, 행 정보를 담고 있다. 따라서 행의 개수를 셀 때 포함하지 않는다. 이름 userid password 푸딩 custard pudding 케이크 cheese cake SQL 의 select 구문 SELECT [column] FROM [table] WHERE (조건); ※ SQL 에서 and 연산과 or 연산 and : and 양 옆의 조건 둘 다 참이어야 실행 or : or 양 옆의 조건 둘 중 하나만 참이어도 실행 한 쿼리문에 and 와 or 연산 둘 ..

워게임 만들기! (쿠키 변조 맛보기)

이래도 되나? 싶을 정도로 순한 맛으로 만들었다. (내 능력의 한계......) Natas를 참고해서, 올바른 id와 pw를 입력했을 때는 loggedin 이라는 쿠키의 값을 true로 설정하고, 틀린 id와 pw를 입력했을 때는 loggedin이라는 쿠키의 값을 false로 설정했다. 그리고 loggedin 쿠키의 값이 true일 때만 로그인 성공되게 했다. 1. login.php 코드 소스 로그인 폼이 있는 페이지 코드 소스는 다음과 같이 간단하게 만들었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 로그인 페이지 body { text-align: center; } form { display: ..

인증 우회 가능 케이스 및 공격 방법

웹 api에서는 다양한 방식(쿠키 및 세션, 토큰, 2FA, 소셜 미디어 로그인 등)으로 로그인을 처리하는데, 가장 많이 사용되는 로그인 인증은 쿠키와 세션을 이용하여 아래와 같은 단계로 이루어진다. 사용자가 로그인 페이지에 접속한다. 사용자가 입력한 아이디와 비밀번호를 서버로 전송한다. 서버는 전송받은 아이디와 비밀번호를 데이터베이스 등에서 확인한다. 사용자 정보가 올바르면, 서버는 해당 사용자에게 고유한 세션 ID를 발급한다. 서버는 발급된 세션 ID를 쿠키에 저장하여, 사용자가 다시 접속할 때 해당 쿠키를 이용하여 인증한다. 사용자는 인증된 상태로 서비스를 이용할 수 있게 된다. 위 과정에서 쿠키는 사용자가 인증된 상태를 서버에서 유지하기 위한 용도로 사용된다. 쿠키는 사용자의 브라우저에 저장되어,..

3주차 회원가입 / 아이디 중복 검사

현재 메인페이지 겸으로 쓰고 있는 로그인 페이지에서 회원가입 링크를 눌렀을 때 리다이렉트 될 회원가입 폼 페이지부터 만들었다. register.php 코드소스. 로그인 폼과 형식 똑같이 만들었다. 회원가입 페이지 회원가입 하기 회원가입 Colored by Color Scripter cs 회원가입 처리과정은 register_process.php로 보낸다. register_process.php 코드 소스

쿠키 / 세션 / 세션id

내가 만든 쿠키~🍪 기본적으로 웹 서버는 클라이언트를 기억할 수 없습니다. HTTP 프로토콜의 Connectionless와 Stateless 특징 때문입니다. Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미합니다. 특정 요청에 대한 연결은 이후의 요청과 이어지지 않고 새 요청이 있을 때 마다 항상 새로운 연결을 맺게 됩니다. Stateless: 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미합니다. 이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 없습니다. 따라서 웹 서버가 클라이언트 측을 기억하게 하기 위해 쿠키(Cookie)를 이용합니다. 쿠키(cookie): 클라이언트 측에서 웹 사이트를 방문할 때, 서버에서 전송하는 작은 데이터 조각입니다. ..