일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 세션
- JS
- 게시판 만들기
- FridaLab
- php
- MySQL
- sql injection
- 웹개발
- 문제 풀이
- union sql injection
- CTF
- csrf
- 보고서
- Error based sql injection
- 모의해킹
- 웹 개발
- Los
- XSS
- file upload
- Python
- 로그인
- 증적 사진
- 과제
- 웹 해킹
- sql injection point
- lord of sql injection
- blind sql injection
- 로그인페이지
- 보안 패치
- cookie 탈취
- Today
- Total
목록sql injection (25)
Almon Dev

1. 개요 SQL Injection 이란? SQL Injection은 사용자가 입력한 값이 SQL 쿼리에 그대로 삽입되는 취약점을 악용하여, 임의의 SQL 문을 삽입하여 실행하는 공격입니다. 이를 통해 데이터베이스에서 무단으로 정보를 조회하거나, 로그인 인증 등을 우회할 수 있습니다. 보안 패치의 목적 및 중요성 이번 보안 패치는 SQL Injection 취약점을 제거하여 데이터베이스의 보안을 강화하는 것을 목표로 합니다. 이를 통해 불법적인 데이터 조회 및 조작을 방지하고, 로그인 인증의 안정성을 확보할 수 있습니다. Prepared Statement 이란? Prepared Statement는 SQL 쿼리를 미리 컴파일한 후, 사용자 입력값을 나중에 추가하여 실행하는 방식입니다. 이를 통해 SQL In..

LOS 풀이 skeleton 풀이1. 코드 분석GET 메서드 pw 파라미터 값을 쿼리에 삽입하고, 쿼리 결과의 id 값이 admin인 경우 문제가 풀립니다.$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("skeleton"); 필터링은 prob _ . () 입니다.if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 삽입한 pw이후의 and 1=0을 주석처리하면 쉽게 ..

LOS 풀이 vampire 풀이1. 코드 분석GET 메서드의 id 파라미터를 쿼리에 삽입하고 쿼리 결과의 id가 admin인 경우 문제가 풀립니다.$query = "select id from prob_vampire where id='{$_GET[id]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("vampire"); ' 를 필터링하고 id 파라미터의 값을 소문자로 변경한 뒤 admin 문자를 공백으로 치환합니다.admin을 공백으로 치환하기 때문에 adadminmin처럼 admin이 사라질때 admin이 되도록 만들면 우회가 가능합니다.if(preg_match('/\'/i', ..

LOS 풀이 troll 풀이1. 코드 분석GET 메서드 id 파라미터를 쿼리에 삽입한 뒤 쿼리 결과의 id가 admin이면 문제가 풀립니다.$query = "select id from prob_troll where id='{$_GET[id]}'";$result = @mysqli_fetch_array(mysqli_query($db,$query));if($result['id'] == 'admin') solve("troll"); admin이라는 문자열을 필터링합니다.그런데 i 플래그를 붙이지 않아서 대소문자를 구분합니다.mysql은 대소문자를 구분하지 않기 때문에 Admin과 같이 대문자를 섞으면 우회가 가능해 보입니다.if(preg_match('/\'/i', $_GET[id])) exit("No Hack ..

LOS 풀이 darkelf 풀이1. 코드 분석GET 메서드의 pw 파라미터가 쿼리에 삽입이 되고 쿼리 결과의 id가 admin인 경우 문제가 풀립니다.$query = "select id from prob_darkelf where id='guest' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("darkelf"); or과 and를 필터링합니다.mysql에서는 or과 and를 대체할 ||나 &&를 이용하면 우회할 수 있습니다.if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); i..

LOS 풀이 wolfman 풀이1. 코드 분석GET메서드의 pw 파라미터가 쿼리에 삽입되며쿼리의 결과 id가 admin일 경우 문제가 풀립니다.$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("wolfman"); 공백을 필터링하는 부분이 추가되었습니다.if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/ /i', $_GET[pw])) exit("No wh..

LOS 풀이 orc 풀이1. 코드 분석이번 문제를 풀기 위해서는 입력한 pw파라미터의 값과 db에서 가져온 pw의 값이 일치해야 합니다.그렇기 때문에 실제 admin 계정의 비밀번호를 알아내야 하는 것 같습니다.$_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query));if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); prob _ . ()를 필터링합니다.if(preg_match('/prob|_|\.|..

LOS 풀이 cobolt 풀이1. 코드 분석이번 문제는 GET 메서드로 id와 pw 파라미터를 입력하면 쿼리에 삽입이 되며쿼리의 결과 id가 admin일 경우 문제가 풀립니다.pw의 값을 md5로 해시화를 하고 있습니다.$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";$result = @mysqli_fetch_array(mysqli_query($db,$query));if($result['id'] == 'admin') solve("cobolt"); gremlin 문제와 똑같은 필터링을 하고 있습니다.if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No ..