목록WarGame/los(los.rubiya.kr) (22)
DoR@Hee의 끄적끄적
문제는"select 1234 fromprob_giant where 1" 쿼리를 완성해야하는 문제이다쿼리를 완성하려면 from 과 prob_giant 사이에 공백이 들어가야 된다. 공백 우회는 url 특수문자 말고도 +, /**/ 등으로 가능 하지만 strlen(길이를 반환하는 함수) 때문에 불가능 기본적인 공백을 우회하는 문자열 %20(space), %09(tab), %0d(return), %0a(linefeed)는 필터링을 하고있으니그냥 아무것도 없는 null인 %0c를 입력한다. 성공
문제 첫화면los - darkknight와 비슷한 문제 같지만 필터링이 좀 더 붙어있다. 1. substr >> mid, left, right 함수를 이용2. ascii >> ord, hex 함수를 이용3. = >> like, in, instr 함수를 이용4. or >> ||5. and >> && 일단 쿼리문을 참값으로 만들기 위해서 "?no = 1 || instr(1,1)" 을 입력했다. ※instr 함수는instr ( 전체문자열, 비교문자열 ) 전체문자열 에서 비교문자열이 존재하는지 비교, 존재하면 위치값을 반환하거나 참일경우 1 거짓일 경우0을 반환한다. "Hello guest" 문자열을 확인 할 수 있다. 참일 경우 거짓일 경우 '(싱글쿼터)와 0x(헥스값)을 필터링 하고 있으니, char구문을 ..
문제 첫화면 먼가 그냥 엄청 필터링 하고있다. if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); 1. pw 파라미터는 '(싱글쿼터)를 필터링하고있으며 기본적으로 '(싱글쿼터)가 2개 들어가있다.2. no파라미터는 '(싱글쿼터), substr, ascii, = 필터링 하고있다. 1-1 일단 기본적으로 pw에는 '' 가 들어가고 '(싱글쿼터)를 필터링하고 있기 떄문에 no파라미터 부분을 이용해서 우회를 한다.2-1 substr >> right(left)), ascii >> ord, = >> like '(싱클쿼터) >> char , 0x각 각 사용해서 필터링 ..
1. or , and, substr,= 을 필터링 하고 있다. 1-1 or 은 &&를 이용 필터링을 우회1-2 and 는 ||를 이용 필터링 우회1-3 substr은 문자열 비교 함수인 left, right함수를 이용 필터링1-4 = 는 like를 이용하여 필터링한다. ※여기서 right, left 함수는 문자열을 반환하는 함수인대ex) left('abced',2) = abright('abced',2 = ed이렇게 반환한다. like 함수는 특정 문자열을 찾는대 사용하는 함수이며select * from prob_golem where id = 'admin' 와select * from prob_golem where id like 'admin' 은 같은 구문이다. 즉 이렇게 해서 문제를 풀면된다. 쿼리를 참으..
1. and 1=0가 쿼리문에 기본적으로 들어가 있다 > and 1=0을 무시해아한다. 성공
1. strtolower함수를 이용해서 문자열을 소문자로 변환한다.2. str_replace를 이용해서 admin이라는 문자열이 보이면 치환한다. str_replace를 우회하는 문제인대 str_replace는 한번만 필터링을 진행한다. 아래와 같이 adadminmin을 입력하면 가운대 있는 admin이 str_replace때문에 ""으로 필터링된다.그러면 ad""min 이렇게 되기 때문에 성공 ※만약 str_replace를 사용해서 값을 다 필터링 하고 싶다면 배열을 사용해서 필터링 하면된다. $res = str_replace($str, "", $row['replace']); 이런식으로 치환하면 된다
"select id from prob_troll where id = " 쿼리에 결과값이 admin 일 경우 slove() 하는 문제이다. 1. '를 필터링 하고 있다. > '를 우회한다.2. admin 문자열 자체를 필터링 하고있다. > admin문자열을 우회한다. 처음에 우회를 진행하기위해 아스키코드로 admin을 작성 후 char를 이용 값을 넣어봤더니 거짓값인거 같다. 아스키코드 , hex값 둘 다 이용했을 때 문제를 풀 수 없어서 좀 더 생각을 해본 결과 admin 문자열을 점검하는 함수가 ereg 함수였다 여기서 ereg 함수란?ereg('찾고자 하는 문자', '필터링 할 문자열') 대,소문자를 구문하는 함수로 찾고자 하는 문자가 있으면 True, 없으면 False를 출력한다. eregi('찾고..
문제 화면or and 입력 시 hehe가 나온고쿼리 결과값에 따라 id 와 pw에 따른 값 을 나타낸다.$result['pw'] 와 $_GET['pw']에 값이 같을 경우 solve() 결론적으로 1. or, and를 필터링하고있다 > || &&를 이용 우회한다.2. admin pw의 길이와 값을 알아야한다. or 구문을 이용해서 쿼리문이 항상 참이 되게 한다. admin에 pw에 길이를 알기위해서 length(pw) =1을 입력 했을 때 false admin에 pw에 길이를 알기위해서 length(pw) =8을 입력 했을 때 True 즉 admin pw 의 길이는 8자리 정확한 admin pw에 값을 알기위해서 ascii(substr(pw,1,1))=54-- 을 입력 했을 때 참 이러한 정보를 이용해서..