전체 글 (63) 썸네일형 리스트형 웹 해킹 공부일기장 4 - 2 (SQL Injection 정리) 이때까지 SQL Injection으로 인증우회, 데이터 추출하는 방법에 대해 알아보고 공부하였습니다. 데이터를 추출하는 방법에는 UNION SQL Injection, Error Based SQL Injection, Blind SQL Injection 이렇게 3가지 기법을 알아보았습니다. SQL Injection으로 데이터를 추출하는 것은 결국 우리가 원하는 select 문을 실행하게 하는 것입니다. 각 기법의 특징이 다르기 때문에 주어진 상황에 맞는 기법들을 사용하여야 합니다. SQL Injection 기법 총 정리 1. UNION SQL Injection 유니온 SQLI는 select를 한번더 사용할 수 있게 해주며 select한 두 개의 결과 테이블을 합쳐 결과를 가져와 출력시키는 기법입니다. 이때 .. 웹 해킹 공부 일기장 3 - 과제 (챌린지2) 3. flag를 찾아라 1) SQL Injection 포인트 찾기 아이디: normaltic 비밀번호: 1234 정상적으로 로그인 시 다른 챌린지와 마찬가지로 redirect로 index.php로 이동시켜줍니다. normaltic'을 입력하니 우리가 생각한데로 문법에러가 화면에 출력됩니다. extractvalue함수를 사용해서 로직에러가 발생하는지도 확인해보았습니다. 우리가 원하는 데이터를 화면에 출력하기 위해 select를 사용할 수 있는지 확인까지 해보니 전부 사용가능합니다. 2) 공격 format 만들기 위에서 select 'test' 부분에 우리가 원하는 SQL 구문만 넣어주면 될 것입니다. ' and extractvalue('1', concat(0x3a, (__SQL__))) # 공격 포맷 만들.. 웹 해킹 공부 일기장 3 - 과제 (챌린지1) 1. flag를 찾아라 1) SQL 포인트 찾기 아이디: normaltic 비밀번호: 1234 정상적으로 입력 시에는 로그인 성공하면서 redirect로 index.php로 이동시켜줍니다. 사용할 SQL Injection 기법 구분은 우리가 입력한 부분이 SQL 구문으로 사용될 것이라 판단되는 곳의 결과로 화면에 출력 되는 경우 에러메시지가 출력되는 지 확인해보고 되면 Error Based SQLI 에러메시지가 아니라 결과가 화면에 출력되는 경우에는 UNION SQLI 만약 결과가 화면에 출력되지 않고 성공 여부에 따라 결과가 달라질 경우는 Blind SQLI를 사용하면 될 것 같습니다. 일단 에러가 발생하면 화면에 에러메시지를 출력해주는 지 확인해보겠습니다. normaltic' 을 입력해주니 SQL s.. 웹 해킹 공부 일기장 3 - 2 (Blind SQL Injection) 이때까지는 화면에 SQL 질의 결과가 출력될때 사용할 수 있는 SQL Injection 기법을 공부했습니다. 하지만, SQL Injection은 가능한데 결과가 화면에 출력이 되지 않는 경우도 있을 것입니다. 예를 들면? 로그인 페이지같은 경우에는 우리가 입력한 값으로 SQL 쿼리문을 만들어 결과를 처리한 후 성공 여부에 따라 다른 페이지를 보여주거나 다시 입력을 받을 것입니다. 이런 경우에 어떻게 데이터를 빼낼 수 있을까요?? 바로 성공 여부에 따른 결과 차이를 통해 알아낼 수 있습니다. 음... 우리는 SQL Injection으로 우리가 원하는 질의를 실행시킬 수 있습니다. 이때! admin의 패스워드는 admin이 맞아? 이렇게 데이터베이스에 질문하여 맞으면 성공 결과 틀리면 틀렸을 때의 결과를 확.. 웹 해킹 공부 일기장 3 - 1 (Error Based SQLI) 데이터베이스 SQL 결과가 화면에 출력할 경우 UNION SELECT를 사용하면 데이터베이스에서 원하는 데이터를 select하여 데이터를 추출할 수 있었습니다. 이번 시간에 배울 것은 SQL 결과로 화면에 에러메시지를 출력할 경우 사용할 수 있는 SQL Inejction 방법입니다. Error Based SQL Injection 왜?? 에러메시지가 화면에 출력될까요? 보통 개발하는 과정에서 개발자가 어디서 에러가 났는지 확인하기 위해 에러메시지를 화면에 출력하게 만들어놓고 개발을 하다 개발을 완료하고 이 부분을 지우지 않고 그대로 서비스한다면 우리는 일부러 에러를 만들어 에러메시지를 화면에 출력하게 할 수 있습니다. 에러가 화면에 출력될 수 있다는 것은 알겠습니다. 하지만 우리는 모든 에러에서 Error.. 웹 해킹 공부 일기장 2 - 과제 (챌린지 2) 2. 진짜 비밀 데이터를 찾아라!! 일단 어떤 웹 서비스를 하는지 확인부터 해보겠습니다. normaltic을 검색하니 normaltic 계정의 정보가 화면에 출력됩니다. - 아마? 입력한 아이디로 데이터베이스에서 해당아이디의 정보를 찾아 출력해주겠죠? nor를 검색하니 nor 아이디를 검색하는데 info에는 정보가 나오지 않습니다. 뭐지?? normaltic의 계정이 나오지 않은 것을 보니 like로 패턴 검색하는 것 같지는 않습니다. nor아이디가 있는데 info의 값이 없는건가? 생각할 수도 있습니다. 음... normaltic' or 1 # 을 입력하였는데 normaltic의 info 값이 출력되는 것을 보니 SQL Injection이 가능한 부분이며, id부분은 데이터베이스에서 가져오는 것이 아닌.. 웹 해킹 공부 일기장 2 - 과제 (챌린지1) 1. 비밀 데이터를 찾아라!! 계정의 아이디를 입력하면 해당 계정의 정보를 우리에게 보여주는 페이지인 것 같습니다. 아무래도 데이터베이스에 계정 정보를 저장하고 우리가 입력한 아이디를 찾아 우리에게 보여줘야하기 때문에 아이디 입력란은 데이터베이스와 연결되어 있는 부분일 것입니다. 우리가 강의 정리에서 배운 union select를 사용하기 위한 절차대로 한번 해보겠습니다. 1) SQL Injection 포인트 찾기 일단 아이디 입력란이 데이터베이스와 연결되어있을 것이라는 생각을 해보았습니다. 그럼 데이터베이스에 명령하는 쿼리문이 어떻게 되어있을 지 추측해보겠습니다. admin이라고 입력만 했는데 adminer 아이디의 정보가 나왔습니다. 그럼 아마 아이디에 대해 like 절로 패턴검색을 할 것이다 추측할.. 웹 해킹 공부 일기장 2 - 과제 1. doldol 계정의 데이터만 가져오기 (하나의 계정 데이터만 출력) 나의 password를 적으면 정보를 출력해주는 사이트가 있습니다. 이 사이트는 비밀번호가 맞는 지 검사하기 때문에 사진처럼 우리가 입력한 패스워드로 쿼리문을 만들어 아이디와 비밀번호가 둘 다 맞는 정보를 가져옵니다. 일단 SQL Injection을 통해 전체 계정의 정보를 출력해볼 수 있습니다. // 입력: 'or '1'='1 select * from memeber where id='normaltic' and pass='' or '1'='1'; 이렇게 입력하면 where 조건을 검사하여 조건에 맞는 데이터를 select하여 우리에게 보여줍니다. 우리는 논리 연산인 and, or 에도 우선순위가 있어 and가 먼저 계산되는 것을 압.. 이전 1 2 3 4 5 6 7 8 다음