los - dragon
·
Lord_of_SQL-Injections_I
신경 쓸 만한 필터링은 없지만, 쿼리 내 존재하는 주석 때문에 pw 부분이 실행되지 않는다. 주석은 일반적으로 해당 라인에 위치한 것을 인식하지 않기 때문에, 다음 라인에 공격 코드를 작성하면 된다. 따라서 주석을 우회하기 위하여 개행 문자("%0a")를 입력 후 pw에 공격 코드를 입력하면 다음 라인에 공격 코드가 저장되고 실행되어 문제가 클리어 된다. http://localhost/dragon_51996aa769df79afbf79eb4d66dbcef6.php?pw=%27%0d%0a%20or%20(id%20=%20%22admin%22)%20limit%201,1%23
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..