본문 바로가기

웹 해킹

(40)
웹 해킹 공부 일기장 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가 먼저 계산되는 것을 압..
웹 해킹 공부 일기장 2 - 1 (SQL Injection 데이터 추출) 저번 주차에서 SQL injection이 무엇인지? 그리고 SQL Injection을 통해 인증을 우회하는 방법을 공부해보았습니다. 이번 주차에서는 SQL Injection을 사용하여 데이터베이스의 데이터를 추출하는 방법을 알아보겠습니다. 웹 서버에서 데이터베이스를 사용하기 위해 SQL 쿼리를 사용하여 데이터베이스에게 명령을 내리는 과정이 있을 것입니다. 전 시간에 했던 로그인도 우리에게 아이디와 비밀번호를 입력받아 SQL 쿼리문을 만들어 해당 아이디와 비밀번호인 데이터가 있는지 데이터베이스에 확인해서 있으면 달라고 하는 명령을 내리는 것입니다. 즉, SQL Injection은 이때 우리의 입력을 받기 때문에 우리가 원하는 데이터베이스에서 수행해줬으면 하는 명령을 하게하기위해 쿼리문을 조작하는 것입니다...
웹 해킹 공부 일기장 1 - 과제 (챌린지) 4. 관리자 계정으로 로그인하기. 하지만 계정의 아이디를 알 수 없다... 관리자 계정으로 로그인을 하려고 하는데 아이디를 알 수 없는데 어떻게 로그인할까요?? 일단 SQL Injection이 가능한지 먼저 알아보겠습니다. 일단 확인해보니 SQLI 가 가능하며 비밀번호를 틀리게 입력하여도 로그인이 가능한 것을 보니 식별과 인증을 동시에 하기때문에 SELECT로 찾은 계정이 있기만하면 해당 아이디로 로그인이 되는 것 같습니다. 모든 계정에 대해 SELECT할 수 있다면 해당 계정으로 로그인이 될 것 같습니다. // 추측 로그인로직 select * from users where id='$userId' and password='$userPw'; // or 1=1로 전체 계정에 대해 limit로 한 계정만 가져..
웹 해킹 공부 일기장 1 - 과제 1. admin 계정으로 로그인하기 doldol의 계정으로 로그인을 하니 loginProc.php를 GET으로 입력한 데이터와 함께 userId=doldol & userPw=dol1234 요청을 보내는 것 같습니다. 그런데 응답에서 result: "ok" 가 보이는데 이것으로 왠지 로그인 성공 여부를 결정할 것 같습니다. 그럼 admin으로 로그인하면 어떤 결과가 나오는지도 확인해보겠습니다. 역시나!! result값이 fail로 나옵니다. 그럼 응답을 ok로 바꿔주면 로그인이 될 것 같습니다. 보통 기본적으로 버프 스위트는 요청만 잡기때문에 응답을 잡기위해서는 원하는 응답의 요청을 오른쪽 클릭하면 Do intercept에서 이 request의 respons를 잡겠다는 것을 클릭하고 Forward로 요청을..
웹 해킹 공부 일기장 1 - 2 (인증 우회) 간단한 실습을 하면서 SQL Injection으로 인증우회하는 것을 배웠는 데 직접 챌린지를 통해 해보겠습니다. 챌린지 1. normaltic1 계정으로 로그인 하기 저번 시간에 어떻게하면 SQL Injection을 사용하는지 알았으니 한번 써보자!! 오잉??? 로그인이 실패하네요... 주석이 안되나?? 생각해볼 수 있습니다. 하지만 우리에겐 다른 방법이 하나 더 있습니다. 휴.. 다행히 이 방법이 먹히네요. 챌린지 2. normaltic2 계정으로 로그인하기 오!! 주석을 사용하니 바로 로그인이 되었습니다. 챌린지 3. admin 계정으로 로그인하기 우리가 배운 방법이 안되네요... 이번 챌린지에서 알아야 할 것이 있습니다. 바로 앞에서 했던 것은 우리가 SQL Injection 이 취약점이라 생각해서..
웹 해킹 공부 일기장 1 -1 (SQL Injection) 이번주차부터 웹 해킹 기법에 대해 공부를 시작해보겠습니다. 이번주에 해볼 해킹 기법은 SQL Injection입니다. SQL Injection SQL이 무엇인지는 웹 개발에서 데이터베이스를 연결하며 데이터베이스를 사용하기위해 배웠습니다. SQL은 데이터베이스를 정의할 수 있으며, 안에 있는 데이터를 조작하며 제어할 수 있습니다. Injection은 무엇일까요? 이제부터 해킹 기법 중 이름에 Injection이 들어간다면 주입하기, 끼워넣기로 해석하면 됩니다. 즉, SQL Injection은 SQL 구문을 끼워넣는다고 보면됩니다. SQL Injection을 SQLI 로 표현하겠습니다. (너무 길어서...ㅠㅠ) SQLI를 사용하게 되면 원래 작동해야하는 방식이 아닌 우리가 특정 문자를 끼워넣어 완전 다른 S..