분류 전체보기(333)
-
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 -
Lord Of SQL Injection [ 13. BugBear ]
[ 개념 ] 1> mysql에서의 hex() 함수hex('a') => a는 아스키코드16진수값으로 0x61값이지만, mysql에서는 0x가 없는 61로 반환된다hex('a')=61 2> and , orand => && => %26%26or => || 3> ' ' 를 대신 " " 사용하여 문자 표현4> ' = ' 를 대신하여 not 사용5> 스페이스바를 대신하여 0x09 or 0x0a ... 사용할 수 있다 [ 비밀번호 추측하기 ] 1> 비밀번호 길이 알아내기 no=9999%0a||%0anot%0aid"admin"%0a%26%26%0anot%0alength(pw)8 => SELECT id FROM prob_bugbear WHERE id="admin" and length(pw)=8 2> 비밀번호 각 자리수 ..
2017.09.13 -
Lord Of SQL Injection [ 12. DarkNight ]
[ 풀이 요령 ] 1> ord 함수no를 입력받는 부분에 싱글쿼터가 없어서 따로 싱글쿼터를 사용할 필요가 없으며 문자가 아닌 숫자형태로 비교하면 된다 ord(): 문자열의 1byte를 10진수의 아스키코드값으로 변환시킨다ord('abcd') => a의 아스키코드값 97 2> ' = ' 대체하기' = ' 이 막혀있어서 not 과 을 이용하여 ' = ' 을 대체한다 3> 스페이스바 대체하기아스키코드표에 있는 0x09 ( Tab ) 이나 0x0a ( New line ) ... 등등 대체할 수 있는 여러가지 값들이 있음 [ 비밀번호 추측 과정 ]1> 비밀번호 길이 확인 2> 각 패스워드 자리수 별 확인 left( 문자열 , 개수 ): 문자열의 좌측에서부터 개수만큼 문자 반환right( 문자열 , 개수 ): 문자..
2017.09.13