WebHacking/Lord of SQL injection(17)
-
Lord Of SQL Injection [ 19.Xavis ]
이전 단계에서 여러번 풀었었던 비밀번호를 추측해내는 문제입니다하지만, 한가지 다른점이 있습니다. 일단 비밀번호의 길이를 알아내보면 40(byte)입니다 비밀번호가 상당히 기네요 ascii 함수나 hex함수를 이용해서 비밀번호를 추측해보겠습니다 SELECT id FROM prob_xavis WHERE ascii( substr( pw , 1 , 1 ) )=0 %23=> 패스워드의 첫번째 글자부터 한개의 문자를 추출하여 아스키코드 16진수로 변환=> 문자들의 처음문자부터 자리수 모든 문자들이 0값입니다 왜이럴까요? 현재 문제에서 비밀번호가 유니코드로 되어있어서 입니다. 아래 예를 확인해보겠습니다 예를 들어서, U+00b8 이라는 유니코드 문자를 hex()함수의 인자로 넣으면? hex(U+00b8) = 00 앞..
2017.09.16 -
Lord Of SQL Injection [ 18.Nightmare ]
6글자내로 조건식을 참으로 만들어야 한다mysql의 특이한 구문에 대해 알아야한다 1> " 변수=값=0 "어느 다른 문법에서도 볼 수 없었던 처음 보는 문법이였다예를 들어서 A=123=0 이라는 조건식이라고 가정해보자먼저 A=123 을 비교하면 결과는 False 값이 나오게 된다그리고 Fasle = 0 을 비교하게 되면? True를 반환하게된다 2> 주석처리preg_match함수로 인해서 # 과 -- 주석을 쓸 수가 없다그럼 어떻게 뒤의 문장들을 주석처리를 할 것인가?" ;%00 " 을이용한다 => ; 는 쿼리문을 두개 같이 실행시킬 떄 사용하는 것은 알고 있을것이다( 쿼리문1 ; 쿼리문2 : 쿼리문1 실행 후 쿼리문2 도 실행 ); 다음에 %00( Null ) 값을 준다면, 문장의 끝으로 인식하고 쿼리..
2017.09.16 -
Lord Of SQL Injection [ 17.Succubus ]
preg_match() 함수 ... 아직까지 취약점을 발견하지 못한 함수입니다하지만 해당 문제에서는 preg_match()함수를 우회할 수 있는 방법이 있습니다바로 " \ " 를 사용하는 것입니다 http://...php?id=\&pw=A => SELECT id FROM prob_succubus WHERE id='\' and pw='A' ( WEHRE id = ' \' and pw= ' A ' ) \ 는 특수기호를 문자로 취급되게 만드는 기능을 한다$_GET[id] = " ' and pw = " 이 입력되고 $_GET[pw] = " A " 가 입력된다 http://...php?id=\&pw=or 1=1 %23 => SELECT id FROM prob_succubus WHERE id='\' and pw='..
2017.09.16 -
Lord Of SQL Injection [ 16.Zombie Assassin ]
[ ereg함수의 취약점 ]ereg( "A" , 문자열 ) : 문자열에 A라는 문자가 있는지 확인한다 => 있으면 참, 없으면 거짓 ereg함수의 취약점 => Null을 문자의 끝으로 인식하고 Null까지만 확인한다 ereg( "A" , "abcd%00efg" ) 의 예를 살펴보자해당 함수는 " abcd " 를 확인하고 %00(Null) 값을 확인하면 그 이후의 문자를 확인하지 않는다따라서 " efg " 대신에 우회하고 싶은 문자를 입력해서 우회할 수 있다 https://...php?pw=%00%27 or 1=1 %23 => SELECT id FROM prob_zombie_assassin WHERE id='' and pw='' or 1=1 #' $_GET[pw] = %00%27 or 1=1 %23ereg..
2017.09.16 -
Lord Of SQL Injection [ 15. Assassin ]
[ like 연산자 ]컬럼명 like '문자열' => 해당 문자열을 포함하는지 sql injection공격시 ' = ' 문자가 필터링되고 있을 때 연산자를 대체할 수 있는 연산자 % : mysql에서 와일드카드 1> %문자열변수가 해당 문자열로 끝난다변수 like %a: bdca 2> 문자열%변수가 해당 문자열로 시작한다변수 like a%: abcd 3> %문자열% 변수가 해당 문자열을 포함하고 있다변수 like %a%: bcdabcd => SELECT id FROM prob_assassin WHERE pw like '%문자%' : 문자열을 포함하고 있는지 확인 => d , e , 1, 2, 3, 8, 0 을 포함하고 있음이 확인되었다 => SELECT id FROM prob_assassin WHERE ..
2017.09.13 -
Lord Of SQL Injection [ 14. Giant ]
아스키코드에는 5가지의 제어문자가 존재한다 ( 수평탭, 뉴라인, 수직탭 등등 .. )해당 제어문자를 사용하면 mysql에서 공백(스페이스바)을 대체할 수 있다 \n (=%0a) , \r (=%0d) , \t (=%09) 는 필터링 되어지고 있다그럼 나머지 두개의 제어문자를 사용할 수 있다 ( 0x0b , 0x0c )
2017.09.13