일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 과제
- sql injection point
- cookie 탈취
- MySQL
- php
- CTF
- blind sql injection
- Error based sql injection
- 로그인
- sql injection
- Los
- csrf
- 게시판 만들기
- 로그인페이지
- XSS
- Python
- Reflected Xss
- lord of sql injection
- 세션
- file upload
- 웹개발
- lord of sqli
- Cross Site Request Forgery
- css
- 모의해킹
- JS
- union sql injection
- cors
- 쿠키
- JWT
- Today
- Total
목록sql injection (24)
Almon Dev

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 ..

ctf 문제 풀이 SQL Injection Point 3 SQLI Pointhttps://almon.tistory.com/47에서 분석했던 기능은 그대로입니다.2번 문제부터 변경되었던 mypage.php의 쿠키를 사용하는 로직이 돌아왔습니다.이번에는 sql문이 에러가 날 때 DB Error 메시지가 나오도록 설정이 되어있습니다. 게시글 id를 get 메서드로 요청하여 게시글을 불러오는 페이지는 여전히 sql injection이 가능합니다. mypage.php 공격 format 만들기기본 format : tester' and (select 1 union select 2 where (조건문)) and '1' = '1substring((sql), [index], 1) => sql의 결과를 한 글자 추출합니다..