SQL Injection 이란? 코드 인젝션의 한 방법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방식 이러한 SQL injection 공격방식에는 여러가지가 있는데 대표적인 방식으로 주석과 논리 연산자를 사용하는 방법이다. 먼저 알아두어야 할 것은 SQL의 논리연산자 방식에선 AND연산자를 OR연산자보다 우선순위로 채택하고 있다. 때문에 AND연산자 계산 후 OR연산자 계산으로 가는 것이 마땅하다. 예를 들어 다음과 같은 로그인 방식이 있다 한다. SELECT user FROM user_table WHERE id='{uid}' AND password'{upw}'; 사용자가 uid가 admin인 계정에 침투할려고 할 때 다음과 같이 입력할 수 있다. 1. uid : ad..
Web Hacking
대문자만하게 SQL INJECTION 이라고 나와있다. 소스코드를 보면 다음과 같다. 먼저 중요한 부분들을 살펴보면 preg_match메서드는 문자열에 패턴이 있는지 확인하는 메서드이다. * preg_match(패턴, 문자열) 이때 패턴앞뒤에 '/'가 와야하고 패턴들을 구분하기 위해 '|' 문자를 쓴다. 그리고 특수문자들을 표현할땐 앞에 '\'를 표시해준다. 만약 패턴이 하나라도 걸리면 true를 아니면 false를 반환한다. 때문에 $_GET['no']엔 위의 패턴들을 사용하면 안된다. 그리고 볼 점은 db구문이다. select id from chall18 where id='guest' and no =$_GET[no] id가 guest이고 no가 GET['no']인 부분을 불러오는데 여러가지 방법이 있..
처음 접속하면 패스워드가 막 이리저리 바뀌다가 ?에서 멈추게 된다. 그럼 일단 소스코드를 확인해주자 일단 run()함수에 대한 부분은 복잡하니 answer함수부터 알아본다. 천천히 한줄 식 해석하면 x.open('GET', '?m=' +i, false) ?m=i라는 주소를 동기식 방식으로 불러온다. (true면 비동기, false면 동기) x.send(null) GET 방식으로 서버에 요청을 보낸다. aview.innerHTML = x.responseText aview id에 x에서 받은 응답 메세지를 넣어준다. i++; if(x.responseText) setTimeout("answer("+i+")",20); 만약 응답 메세지가 있으면 계속해서 answer함수를 불러오고 if(x.responseText..