반응형

SQL Injection 18

[Lord of SQL Injection] wolfman 문제 풀이

문제 정보 문제 이름 : wolfman 문제 설명 id가 admin일때 문제를 해결할 수 있다. id가 guest로 정해져있는데 어떻게 admin으로 바꾸지?? 라는 생각이 들텐데 pw파라미터에 id값을 admin으로 정의를하면 문제 해결이 가능하다. pw값에다가 '||id='admin를 입력하면 where id='guest' and pw=''||id='admin'가 된다. id='guest' and pw='' 이 부분에서 거짓이 되고 거짓 ||id='admin' 이 부분에서는 참이되므로 id가 admin이라고 성립이 되어 문제를 해결할 수 있다. payload는 아래와 같다. ?pw=%27||id='admin

[Lord of SQL Injection] orc 문제 풀이

문제 정보 문제 이름 : orc 문제 설명 위 소스코드에서 mysqli_fetch_array함수에서 id와 pw를 DB의 내용과 비교해 참일경우 Hello admin을 반환한다. 아래 코드는 result['pw']가 참이고 result['pw']와 우리가 입력한 pw가 같으면 문제를 해결할 수 있다. 필터링이 많이 안되어있기 때문에 blind injection으로 비밀번호를 추출할 수 있다. 앞에 id= admin and pw부분을 거짓으로 날리고 거짓 or id=admin으로 참으로 성립한다음 참 and length(pw)=8#으로 pw의 길이가 참일경우 Hello admin이 출력하도록 진행하였다. 이로 인해 pw의 길이가 8임을 알 수 있다. 패스워드의 값을 하나씩 추출하기 위해서 mysql에서 문..

[Lord of SQL Injection] goblin 문제 풀이

문제 정보 문제 이름 : goblin 문제 설명 필터링이 싱글 쿼터, 더블쿼터, 백 쿼터까지 되어있다. 문제를 해결하기 위해서는 id가 admin이 되면 된다. mysql where절에서 '문자열' 대신 문자열을 hex값으로 표기해도 인식이된다. w3school 사이트에서 실습을 진행하였다. https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_where 그림 2는 Customers 테이블에서 Country='Mexico'인 모든 칼럼들을 출력하는 sql문이다. 하지만 'Mexico'대신 hex로 변환한 0x4D657869636F값을 넣어도 성립을 한다. 위의 예시처럼 이 문제도 admin을 hex로 변환하여 입력을하면 mysql문을 처..

[Lord of SQL Injection] cobolt 문제 풀이

문제 설명 preg_match함수로 prob, _, ., () 의 문자들이 필터링 되어있다. id값이 admin이면서 pw가 맞으면 문제를 해결할 수 있다. 먼저 id값에 admin을 넣어보자 id값에 admin을 입력하였는데 문제가 해결되지 않았다. 왜냐하면 뒤에 and 구문이 성립하지 않았기 때문이다. 이문제를 해결하기 위해서는 비밀번호를 알아야한다. 하지만 우리는 비밀번호를 알기 힘들다. 어떻게 하면 문제를 해결할 수 있을까?? 쿼리문을 보자. select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}') 첫번째 방법 쿼리문에 mysql의 주석인 #이 필터링이 되어 있지 않기 때문에 id 파라미터에 id = admin'#을 넣..

[DVWA] - SQL Injection(Blind) Low 단계

SQL Injection(Blind) 블라인드 SQL인젝션이란 결과를 직접적으로 알 수는 없어도, 참과 거짓일 때의 결과 차이를 분석하여 어떤 정보를 알아내는 기법이다. User ID값에 1을 한번 넣어보겠다. ID값에 1을 입력하니, 데이터베이스에 존재한다는 메시지만 나온다. 다음 '(싱글쿼터)를 입력하여 어떤 결과를 나타내는지 확인하겠다. id값에 1부터 6까지 넣어봤는데 1에서 5까지는 계정이 존재를 하였고 6부터는 계정이 존재하지 않는다. 싱글쿼터를 입력하니 데이터베이스에 사용자가 존재하지 않다고 뜬다. 그냥 sql injection문제에서는 싱글쿼터를 입력하면 에러가 났는데 sql injection(blind)에서는 에러가 나지 않는다. 그래서 sql 쿼리문이 사용되고 있는지 알기 어렵다. 만약..

WEB hacking/DVWA 2022.10.09

[DVWA] - SQL Injection Low 단계

SQL Injection Where 구문 우회 SQL Injection문제이다. 소스코드를 한번 보겠다. id값을 get방식으로 받고 쿼리 부분에서 user_id가 id인 users테이블에서 first_name과 last_name을 가져오는 것을 알 수있다. User ID부분에 '(싱글쿼터)를 넣으면 그림 3과 같은 에러가 뜬다. SQL 문법에서 에러가 났다고 한다. 왜냐하면 쿼리 부분을 보면 user_id = ''' 이라고 들어가기 때문에 싱글쿼터의 쌍이 맞지않아 형식에러가 발생한다. User ID에 1을 넣어본다. User ID에 1을 넣으면 ID가 1인 사용자인 admin 사용자가 출력한다. 이제 아래와 같은 값을 넣어 보겠다. ' or '1' = '1 sql 쿼리문을 조작하여 user_id = '..

WEB hacking/DVWA 2022.10.08

[Lord of SQL Injection] gremlin 문제 풀이

문제 정보 문제 이름 : gremlin https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr SQL Injection공부할때 매우 좋은 워게임 사이트라고 한다. 문제 설명 이번 문제에서는 코드가 주어진다. preg_match라는 필터링 함수가 있다. preg_match함수는 해당 문자열에서 전달받은 정규 표현식과 패턴이 일치하지 검사하는 함수이다. preg_match의 첫 번째 인수는 필터링 할 문자를 넣고 두 번째 인수에는 우리가 입력한 문자를 넣고 세 번째 인자에는 필터링할 문자와 우리가 입력한 문자가 일치할 경우 그 문자를 $matches에 배열로 저장한다. 즉 필터링이 당한 문자가 matches에 저장된다는 소리이다. 매칭에 성공하면 1이 반환되고..

반응형