본문 바로가기

Lord Of Sql injection20

LOS 20번 DRAGON 요번 문제는 애초에 주석이 달려있던 문제... 생각보다 쉬웠는데 삽질을 많이 했네 :) 처음에는 NULL BYTE가지고 우회하려다 아무리 생각해도 뒤에 쿼리문을 작성할 수 없어서 한참동안 고민하다가 계속 Mysql 서버로 테스트해보던 중 내가 왜 이걸 놓치고 있었지? 라는 생각이 든다. 그 테스트는 바로 아래와 같다. 습관적으로 한줄로 쿼리문을 작성하다가 주석때문에 세미콜론이 씹혀서 프롬포트가 떨어지고 나서 다시 세미콜론을 치고 명령어를 실행시켰는데... 답이 앞에 있었네.. 주석은 총 3가지가 있는데 1가지(/* something */)을 제외한 2가지 ( #, --)는 해당하는 줄만 주석 처리를 한다. 아이고.. 그래서 아래와 같이 쿼리문 작성 후 클리어! pw=''뒤에 공백은 %20(space)가 .. 2019. 2. 14.
LOS 19번 XAVIS 기존 블라인드 인젝션 코드를 실행 시켜보니 모든 경우에서 참이 리턴되는데, 정상적인 코드인데 불구하고 이러는 것을 보면 왠지 패스워드가 ASCII가 아닌 utf8 등등일 것 같은데... 삽질중. CHAR_LENGTH 쓰려니 언더바 필터걸리네 생각을 달리해서 CHAR 함수를 이용해서 힌트를 얻고자 했다. ASCII를 제외한 유니코드 등을 이용하면 CHAR 함수 사용시 1바이트가 리턴되는 것이아닌 캐릭터셋에 맞는 바이트가 리턴될것이라고 생각 (utf8이던 ASCII이던 CHAR함수가 1바이트씩 읽는 함수라면 그냥 기존 범위를 0x20 - 0x7f가 아닌 0x00 - 0xff로 해서 비교하면 되니 그것도 그것대로 작동할 것이라고 생각했으나, 정상적으로 동작하지 않는 것 같아 위와같이 유추 하였음) 따라서 해보.. 2019. 2. 8.
LOS 18번 NIGHTMARE 푸는데 생각보다 오래걸렸던 문제네요 :) 6자 이내로 pw의 조건을 참으로 바꾸고 뒤에 and id!='admin'을 우회해야 하는 문제입니다. 6자 이내가 아니였다면 조금더 쉬웠을 것 같은데.. or 1 만 생각하는 사고에 갇혀서 조금 헤맸네요 :) mysql 서버를 구축하여 이래저래 해보다가 pw=('')의 값이 리턴 값의 형태일 것이라고 유추하여 연산자를 이용해서 비교해보니 참이 아닐때는 0값을 리턴하더라구요 :) 그래서 pw=('')=0과 같이 and 이전의 값을 true로 셋팅해주었습니다. 그리고 이제 뒤의 and를 주석처리해야해야하는데 # (%23)이나 --가 필터링 되어있습니다. mysql에서 테스트 하던 도중 세미콜론을 이용하여 문장의 끝을 가르킨다는 것에 착안하여 ';'를 해봤지만 실패... 2019. 2. 8.
LOS 17번 SUCCUBUS 2019. 1. 12.