본문 바로가기
반응형

sqlinjection8

웹해킹(webhacking.kr) - 35번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-35번 문제를 풀어보겠습니다. 문제의 첫 화면이다. 간단하게 phone을 적으라는 text박스가 있다. 일단 view-source를 이용하여 소스코드를 확인해봤다. 소스코드 중 중요한 부분을 캡처하였다. 일단 phone에 아무런 값을 넣어봤는데, 위의 사진처럼 id=guest로 고정돼있다. 풀이의 조건은 phone에 어떠한 값을 넣으면 insert into chall35(id,ip,phone) value..... 를 이용하여 데이터베이스에 값을 저장한 후, id=admin and ip=myip 라는 값을 가진 데이터가 있다면, 문제가 풀린다. 하지만 preg_match와 strlen 함수를 활용하여서 id에는 'admin'이란 값을 넣.. 2020. 11. 30.
웹해킹(webhacking.kr) - 27번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-27번 문제를 풀어보겠습니다. 문제의 첫 화면은 그냥 SQL INJECIOTN을 해보라고 나와있다. 일단 vuew-source를 활용하여 코드를 확인하였다. 소스코드에서 중요한 부분을 캡처하였다. 간단한 INJECTION을 통해서 admin으로 로그인할 수 있을 거라 생각했다. "select id from chall27 where id='guest' and no=({$_GET['no']})" 여기서 id='guest' and no=X 룰 FALSE로 만들고 ||, or을 사용하여서 뒤에 TRUE문을 만들어 주면 간단히 풀리는 문제이다. 나는 $_GET['no']에 "3)||no=2-- " 라는 값을 넣을 예정이다. select id f.. 2020. 11. 24.
웹해킹(webhacking.kr) - 50번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-50번 문제를 풀어보겠습니다. 문제의 첫 화면은 id와 pw의 textbox가 있고 이를 활용하여 SQL INJECTION을 해보라고 나와있다. 일단 view-source로 코드를 확인하겠다. 코드 중 중요한 부분만 캡처해놨다. 이 전에 풀었던 45번 문제와 굉장히 유사하다고 생각되었다. 1. lv=3 일단 문제에서 $result['lv']=="3" 조건을 만족시키라고 나와있으므로, id부분을 injection하여 lv=3으로 만들어봤다. select lv from chall50 where id=''||lv='3'#'' and pw=...... id에 '||lv='3'#'이라는 값을 넣어야 하고, 필터링을 우회하는 값을 넣으면 (수정 .. 2020. 11. 21.
웹해킹(webhacking.kr) - 45번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-45번 문제를 풀어보겠습니다. 첫 화면부터 SQL INJECTION을 죠지라는 문제 같다. 일단 id : admin, pw : admin으로 로그인을 시도해보았다. 위쪽을 보면 url주소에 id와 pw 값이 나와있는 게 보인다. GET방식으로 서버와 통신한다는 것을 알 수 있다. 그렇다면 view-source를 활용하여 소스코드를 확인하자 소스코드 중 중요한 부분만 캡처하였다. 코드 중 함수를 간단하게 설명하겠다. 1. addslashes 입력 값 중 '(quote)가 있으면 앞에 \를 붙여줌으로써 sql injection을 방어하기 위해서 사용된다. ex) input data : admin' or 1=1#' output data : .. 2020. 11. 20.
웹해킹(webhacking.kr) - 49번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-49번 문제를 풀어보겠습니다. 첫 화면을 보면 text박스에 1이라는 값이 고정돼 있고, 제출이란 버튼이 있다. 문구로 나와있듯 SQL INJECTION문제임을 알 수 있다. 일단 제출 버튼을 눌러봤다. udnrg라는 값이 나왔다. 2,3,4라는 값을 넣으면 이상한 5자리 문자열이 출력되는데, 그 문자열에 뭔가 있을 줄 알고 분석해봤지만 아무런 단서도 안 나왔다. 일단 view-source 로 php소스코드를 확인해보았다. 해당 소스코드는 문제를 푸는데 주요 코드이다. preg_match함수를 활용하여 sql injection에 필요한 문자열 대부분을 막아놨다. (',",or,and 등) or = || and = &&으로 우회할 수 있.. 2020. 11. 17.
웹해킹(webhacking.kr) - 7번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-7번 문제를 풀어보겠습니다. 문제를 보면 auth라는 버튼과 view-source라는 링크가 보인다. 일단 auth라는 버튼을 클릭해보았다. "접근이 금지됐다"라고 나와있다. view-source를 확인해보자. 중요한 코드 부분을 캡처했다. 간단하게 요약하자면 "lv=2"라는 값을 넣어야 문제가 풀릴 것인데, preg_match로 인해서 2라는 값을 $go변수에 직접적으로 넣지는 못한다. 이는 우회하는 여러 가지 방법이 있는데, 나는 % 연산을 활용하겠다. % 는 나머지 값을 구하는 연산이다. $go 변수 5%3이라는 값을 넣으면 preg_match로 필터링이 되지 않고, 우회할 수 있다. 그리고 쿼리문에서는 연산이 되므로 lv=(2).. 2020. 11. 14.
웹해킹(webhacking.kr) - 18번 안녕하세요?? 자운대 고라니입니다. 오늘은 wargame.kr old-18번 문제를 풀어보겠습니다. 문제에 들어가보시면 대놓고 SQL INJECTION이라고 나와있군요. 일단 아래쪽 view-source를 활용하여 php소스코드를 확인하겠습니다. 이렇게 나와있는데 여기서 쿼리문을 먼저 분석해볼게요. select id from chall18 where id='guest' and no=$_GET[no] // admin's no = 2 ($_GET[no]는 우리가 입력할 text이다.) 옆에 주석처리를 확인하면 알 수 있듯이 no라는 데이터가 2일때 정답이 admin으로 로그인이 되면서 문제를 풀 수 있네요. 일단 no에 1을 넣어보니까 guest가 로그인 되더라구요. 그렇다면 대충 테이블의 형태를 추측할 수.. 2020. 10. 28.
blind sql injection - 1 blind sql injection을 성공하기 위해서는 꼭 알아야 할 함수가 있다. substr, ascii함수이다. substr : 문자열 중 원하는 만큼의 범위를 지정하여 문자열로 리턴해준다. substr("apple", 1, 1) : a substr("apple", 2, 1) : p substr("apple", 1, 3) : app ascii : 아스키코드값을 리턴해준다. ascii(a) : 97 ascii(b) : 98 ascii(c) : 99 이 두 함수를 혼합하여 사용할 수 있다. injection 하려는 변수 이름이 password라고 가정하고, password = "banana"라고 가정한다면 (ascii(substr(password, 1, 1)) = 97) = FALSE (ascii(su.. 2020. 9. 1.
반응형