전체 글 (48) 썸네일형 리스트형 SQL Injection(개념, 유형, 대응 방법) SQL Injection ?> SQL Injection은 데이터베이스에 악의적인 SQL 구문을 주입하여 웹 애플리케이션을 공격하는 해킹 기법이다. 공격자는 데이터베이스의 데이터를 추출하거나 인증을 우회할 수 있다. SQL Injection 공격은 웹의 사용자 입력 부분에서 발생한다. SQL Injection 유형 1. Classic SQL Injection> Classic SQL Injection은 가장 일반적인 형태의 공격이다. 사용자의 입력을 통해 SQL 구문을 주입하여 데이터베이스의 데이터에 접근하거나 조작할 수 있다. 예시 ) select * from member where id = '사용자입력값' 위의 SQL 구문은 member 테이블에서 사용자 입력값인 id의 데이터를 모두 추출하는 구문이다... Authorization 6 문제 링크에 접속을 해서 sfUser / sfUser1234 계정으로 로그인을 했다. 관리자의 개인 정보를 확인하기 위해 마이페이지로 이동을 한다. 마이페이지의 파라미터에 user=sfUser이 요청된 것을 볼 수있다. user 파라미터를 admin으로 바꿔봤다. user 파라미터를 admin으로 바꾸니 flag를 발견할 수 있었다. Authorization 5 문제 링크에 접속했더니 로그인과 문의 게시판 버튼이 보인다. 공지 사항에 게시글을 쓰기 위해 로그인 버튼을 누른다. 문제에서 주어진 sfUser / sfUser1234 계정으로 로그인한다. sfUser 계정으로 로그인한 것을 볼 수 있다. 공지 사항 버튼을 눌러 공지사항 게시판으로 이동한다. admin이 작성한 flag 임시 저장이라는 게시글을 볼 수 있다. 게시글을 클릭했더니 권한이 없습니다. 라는 알림창을 볼 수 있었다. 게시글의 파라미터 중 id가 42인 것을 확인할 수 있다. sfUser가 작성한 게시글에 들어와서 id를 42로 바꾸면 똑같이 권한이 없습니다. 라는 알림창이 뜨는 것을 볼 수 있다. 게시글 수정 페이지로 들어와서 파라미터 id를 42로 바꾼 후 요청했다. .. Authorization 4 문제 링크로 접속을 하니 로그인과 문의 게시판 버튼이 나왔다. 공지 사항 게시판에 게시글을 남기기 위해 로그인 버튼을 눌렀다. 문제에서 주어진 sfUser / sfUser1234 계정으로 로그인을 하였다. 공지사항 게시글을 쓰기 위해 공지 사항 버튼을 눌러 공지사항 게시판으로 이동한다. admin이 작성한 공지 사항 게시글이 있고 sfUser 계정에서는 글쓰기 버튼이 보이지 않는 것을 확인할 수 있었다. 공지 사항 게시판의 경로는 notice_list.php이고 게시글의 경로는 notice_read.php인 것을 확인할 수 있었다. 그렇다면 글쓰기의 경로도 추측해 볼 수 있다. notice_post.php를 입력한 결과 Not Found가 떴다. notice_write.php를 입력한.. Authorization 3 문제 링크에 접속을 하면 로그인 창이 뜬다. 문제에서 주어진 sfUser / sfUser1234 계정으로 로그인을 한다. sfUser 계정으로 로그인을 하고 Fire 버튼을 눌렀더니 '권한이 없습니다' 라는 알림창이 뜬다. 클라이언트 측에서 자바스크립트를 통해 알림창을 띄운 것으로 보인다. burp suite을 통해 response를 확인한 결과 Fire 버튼의 onclick 속성이 goMenu('9999','')로 되어있는 것을 볼 수 있었다. user.js와 game.js 자바스크립트 파일이 연결 되어있는 것을 발견했다. game.js 에서 goMenu 함수를 찾아보았지만 발견하지 못했다. user.js에서 goMenu 함수를 찾아본 결과 함수를 발견할 수 있었다. 자바스크립트가 .. Authorization 2 문제 링크에 접속하게 되면 로그인 창이 뜬다. 문제에서 주어진 아이디 sfUser / 비밀번호 sfUser1234 계정으로 로그인을 했다. sfUser 계정으로 로그인을 하고 Fire 버튼을 눌렀더니 '권한이 없습니다.' 라는 알림 창이 뜬 것을 볼 수 있다. 이 알림창은 클라이언트 측에서 띄워지는 것으로 자바스크립트로 인해 알림창이 띄워진 것을 알 수 있었다. burp suite을 통해 response를 확인한 결과 Fire 버튼의 onclick 속성이 goMenu라는 함수로 설정되어있는 것을 볼 수 있었다. Fire 버튼을 클릭하면 goMenu 함수가 실행된다. js 파일을 확인해보니 user.js와 game.js가 연결되어있는 것을 확인했다. game.js 응답에서 goMenu 함.. Authorization 1 문제 링크에 접속하면 로그인 창이 나타난다. 아이디가 sfUser / 비밀번호 sfUser1234 계정으로 로그인했다. sfUser 계정으로 로그인을 한 결과 발사 버튼은 관리자만 이용 가능합니다. 라는 문구와 함께 버튼이 나타나지 않는 것을 볼 수 있다. burpsuite을 통해 response를 확인한 결과 버튼이 주석처리로 되어있는 것을 확인하여 주석을 제거해주었다. * 주석을 제거하지 않아도 href="fire_attack_danger.php" 를 보고 fire_attack_danger.php에 직접 접근해도 flag를 찾아낼 수 있다. Fire 버튼이 나타났다. 버튼을 누르니 flag를 발견할 수 있었다. GET Admin 3 아이디 testId, 비밀번호 testPwd 라는 계정을 생성했다. 자동으로 testId_admin이라는 관리자 계정도 생성되었다. testId 계정으로 로그인한다. 마이페이지에서 비밀번호를 변경하기 위해 test123을 입력하고 Update 버튼을 누른다. burp suite으로 마이페이지의 회원 정보 수정 request를 확인했다. POST 방식으로 body에 id, info, pw, csrf_token이 요청되는 것을 볼 수 있다. 마이페이지에 접근할 때 토큰이 생성되고 회원 정보를 수정할 때 토큰을 요청하여 생성된 토큰을 통해 인증하는 것으로 보인다. 마이페이지의 response를 보면 토큰이 숨겨져 있는 것을 볼 수 있다. POST 방식이였던 요청을 GET 방식으로 바꾸어.. 이전 1 2 3 4 ··· 6 다음