목록WarGame (84)
DoR@Hee의 끄적끄적
문제 화면 if(@ereg("'",$_GET[id])) exit("HeHe"); if(@ereg("'",$_GET[pw])) exit("HeHe"); 별다른건 없어보이지만 '(싱글쿼터)를 ereg 함수로 우회하고있다. ereg함수는 대소문자를 구분 안하고 필터링하는 함수이다. 또한 ereg 함수는 %00(null)가 바로 앞에 존재하면 문자열을 비교하지 않는다 이러한 ereg 함수 우회 기법을 이용하여 쿼리를 참값으로 만들면 성공
"select id from prob_assassin where pw like '' "를 쿼리를 이용하여id가 admin일 경우 문제가 풀리는 방식이다. like(특정한 문자열 포함 문자열을 찾는 함수) 를 이용하여 푸는 문제이다 일단 like 구문을 이용한다. like '9%' 앞에 9를 포함하는 pw를 찾는다. 근데 Hello guest가 나온다 [0-9, a-z, A-Z] 까지 다 입력해봤는대 아무리 해도 Hello guest가 나오는대그럴 경우에는 아마도 guest 와 admin 가 비밀번호가 비슷하기 때문일거라고 예상 할 수 있다. 두번째 자리 0을 입력했는대도 Hello guest 3번째 자리 까지 입력했을 때 Hello admin 성공 ※ 여기서 like문을 mysql에서 사용해 본다면 문제..
문제는"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']); 이런식으로 치환하면 된다