이번 포스트에서는 Lord of SQLInjection의 troll문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 '와 admin을 필터링한 것을 알 수 있다. 또한 id값이 admin일때 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : php코드의 6번째 줄을 보면 admin이 필터링 되어있지만, admin을 대소문자 구분하면서 필터링한 것은 아닌 것으로 보아 admin의 대문자로 시도해보겠다. ### 사용할 공격문 : id=ADMIN ### 실행 결과 :
이번 포스트에서는 Lord of SQLInjection의 orge문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 사용하여 prob, _, ., (, ), or와 and를 필터링한 것을 알 수 있다. 또한 id 값만 있는 경우 Hello $id를 출력하고, pw값이 있어야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : Blind SQL Injection 기법을 통해 풀어보고자 한다. pw를 알아야 하기 때문에 먼저 pw의 길이를 알아야한다. 참고로 OR연사자의 기로가 ||이고, AND연사자의 URL 인코딩 문자는 %26이며, 주석(#)의 URL 인코딩 문자는 %23이다. ### 사..
이번 포스트에서는 Lord of SQLInjection의 darkelf문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, .,(, ), or, and를 필터링한 것을 알 수 있다. 또한 id값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저, 원래의 쿼리문을 무효화 시키고 id값이 admin이 되도록 만들어본다. ### 사용할 공격문 : pw=' or id='admin ### 실행 결과 : 예상했던 대로 "OR"이 필터링된 것을 확인할 수 있다. 그럼 문자로 된 OR말고 OR연산자의 기호를 통해 공격문을 작성해보겠다. 참고로 OR연산자의 기..
이번 포스트에서는 Lord of SQLInjection의 wolfman문제에 대해 다루도록 하겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )와 스페이스바를 필터링 한 것을 알 수 있다. 또한 id값이 admin이 되어야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저 쿼리문을 참으로 만들어보겠다. ### 사용할 공격문 : pw='or'1 ### 실행 결과 "Hello guest"가 출력된 것을 확인할 수 있다. 이어서 해당 쿼리문을 거짓으로 만든 다음에 id값이 admin이 되도록 만들어보겠다. ### 사용할 공격문 : pw='or id='admin ###..
or이번 포스트에서는 Lord of SQLInjection의 orc문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match를 통해 prob, _, ., (, )를 필터링하고 있다. 또한 id값만 있는 경우 "Hello admin"이 출력되고, pw값이 있어야지 문제를 해결할 수 있는 것을 알 수 있다. ## 문제 풀이 : Blind SQL Injection 기법을 통해 풀어보고자 한다. pw를 알아야 하기 때문에 먼저 pw의 길이를 알아야한다. 이는 다음 구문을 통해 알 수 있다. ### 사용할 공격문 : pw=' or id='admin' and length(pw) = 1 # ### 실행 결과 : 실제 계산한 ..
이번 포스트에서는 Lord of SQLInjection의 goblin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match를 통해 prob, _, ., (, ), ', ", ` 를 필터링 한 것을 알 수 있다. 즉 우리는 따움표 등을 사용할 수 없다는 뜻이다. 또한 해당 문제의 풀이 조건은 id값이 admin이 되어야 한다는 건데, 쿼리문을 살펴보면 다음과 같다. select id from prob_goblin where id = 'guest' and no = {$_GET[no]} 즉, 우리가 입력할 수 있는 란이 no인 것을 알 수 있다. ## 문제 풀이 : 먼저 no에 1을 넣어본 결과는 다음과 같다. #..
이번 포스트에서는 Lord of SQLInjection의 cobolt 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 이전 문제인 gremlin과 비슷하니 다른 부분만 짚어서 보겠다. 여기서 우리가 주목해야 할 부분이 if($result['id'] == 'admin')이다 위 코드를 통해 우리는 admin이라는 ID로 로그인해야 문제를 풀 수 있는 것을 알 수 있다. ## 문제 풀이 : ID란에 admin을 추가한다. SQL 쿼리문이 참이 될 수 있도록 해준다. ### 사용할 공격문 : id='admin'or'1&pw= ### 실행 결과 : ## 추가 해석 : 쿼리문 : select id from prob_cobolt w..
이번 포스트에서는 Lord of SQLInjection의 gremlin 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 여기서 우리가 주목해야할 줄은 preg_match('/prob|_|\.|\(\)/i', $_GET[id])이다. preg_match('/prob|_|\.|\(\)/i', $_GET[id]) : preg_match는 php의 필터링 함수이다. 형식은 다음과 같다. ### preg_match('/필터링할 문자/', '입력할 문자') 해당 문제에서는 prob, _, ., (, )를 필터링 한 것을 알 수 있다. 뒤에 붙어 있는 i는 대소문자 구별하지 않겠다는 뜻이다. 즉, 해당 문제는 prob과 _를 필터링함으로써 특정 ..
이번 포스트에서는 곡선의 형태에 대해 다루도록 하겠다. 곡선의 세그먼트는 3차 다항식으로 정의가 됩니다. 3차 다항식의 계수가 총 4개(Qt = at3 + bt2 + ct + d)로 나타냅니다. 이 4개의 계수를 결정할 때에는 4가지의 제약 조건이 필요하다. 이 4가지의 제약 조건을 만들 때는 다음 사항들을 고려한다. endpoint tangent vectors continuity 위에 제시된 사항들은 크게 3가지의 주요 타입을 가진 곡선을 만들 수 있다. Hermite curve Bezier curve Splines Hermite curve : 2개의 end points 및 2개의 tangent vectors 사용 end points : P1, P4 tangent vectors : R1(오른쪽으로), ..
이번 포스트에서는 parametric cubic curves를 좀 더 심화적으로 다루도록 하겠다. 곡선을 나타내는 데 사용하는 다항식의 차수는 3차다. 그러기 위해 여러개의 3차 다항식을 연결하는 데 joined 포인트를 사용하게 되는데, 이때, 보다 부드럽게 연결하기 위한 조건은 다음과 같다. Parametric Continuity Condition Geometric Continuity Condition Parametric Continuity Condition : Zero-order Parametric Continuity(0차, C0) : 단순히 2개의 곡선 조각이 연결점에서 만나면 된다. First-order Parametric Continuity(1차, C1) : 연결점에서 접선(tangent li..