los - xavis
·
Lord_of_SQL-Injections_I
정규식을 사용하기 못하게 "regex, "like" 을 필터링하고 있다. 클리어 조건을 보면 pw를 체크하는 것으로 보아 blind sql-inecjtions 문제라는 것 또한 확실하다. 얼핏 보면 굉장히 쉬운 레벨이기도 하지만 문제는 db에 저장된 pw(비밀번호)에 있다. 저장된 비밀번호가 무려 한글이다. 즉, 일반적으로 blind sql injection은 pw를 한글자씩 자른 후 비교하는것인데 pw를 한글로 저장하면 맞춰야 하는 가지수가 굉장히 많아진다. 이번 문제는 한글에서 발생할 수 있는 모든 조합을 리스트에 넣어놓고 해당 리스트를 한글자씩 잘라서 비교하는것이다.
los - nightmare
·
Lord_of_SQL-Injections_I
진짜 거지 같았던 문제... 필터링은 둘째 치고 길이 제한이 걸려있다. 그것도 진짜 짧은 6글자... 문제는 '#' 주석도 필터링 되서, 다른 주석으로 바꾸면 5글자가 되고, 괄호가 있으니 괄호 닫으면 4글자, 그리고 싱글 쿼테이션도 닫아야 하니 ' 까지 입력하면 여유분은 딱 3글자 남는다. 이번 문제는 mysql 기본 기능인 auto type cast 를 이용하는 것이다. http://localhost/nightmare_be1285a95aa20e8fa154cb977c37fee5.php?pw=%27=1);%00 ''=1 는 false false는 0 pw=0 ============================== pw가 string이면 int랑 비교하면 string이 0이 됨 'Abc' = 0 '1abc..
los - succubus
·
Lord_of_SQL-Injections_I
처음으로 시간 좀 걸렸던 더러운 문제.... 입력할 수 있는 id, pw 모두 싱글 쿼테이션으로 포함되어 있지만, 필터링에서 (') 문자가 막혀 버린다. 이래나 저래나 어떤 값을 입력하던 모두 문자열로 인식되어 버리는 문제가 발생한다. 일단 클리어 조건을 보면 id 값이 존재하기만 하면 된다. 힌트는 문자열 내에서 특수 문자를 사용하는 법이다. 다음의 파이썬 예제를 살펴보자. > print "Hello My name is "succubus"" > 오류 난다. 왜냐하면 문자열의 의미하는 (") 안에 또 (")이 사용되었기 떄문이다. 위 같은 문장을 제대로 출력하려면 특수 문자를 써야한다. > print "Hello my name is \"succubus\"" > Hello my name is "succub..