목록분류 전체보기 (139)
DoR@Hee의 끄적끄적
문제 첫화면 먼가 그냥 엄청 필터링 하고있다. 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각 각 사용해서 필터링 ..
0-0 사전준비, DB이름 길이, DB이름 가져오기:https://dorahee.tistory.com/108?category=735413 0-1 table 길이, 이름 가져오기: https://dorahee.tistory.com/109?category=735413 0-2 칼럼길이 칼럼값 가져오기: https://dorahee.tistory.com/110 1-1 값 길이 가져오기 일단 확실한 공부환경을 만들기 위해서 약간에 소스코드 수정과 DB값을 추가 했다. 위와 같이 admin을 하나 추가 시키고 123456789101112131415161718192021222324252627Colored by Color Scriptercs php 에서는 no에 값이 5일 경우 pw만 빼고 출력하는걸로 바꿨다. 일단 ..
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']); 이런식으로 치환하면 된다
1-1 클래스- 비슷한 속성을 가진 객체를 묶는 큰 틀 예를 들어서 위 함수는 num을 인자로 받아서 전역 변수 result에 입력받은 num의 값을 저장하고 result를 return 하는 함수이다.이처럼 간단하게 계산기 한 개 정도는 가능하지만 이런식으로 계산기가 2개 또는 3개 여러개 이상 필요하다면 코드가 난잡해질것이다. 뽑기를 예로 설명해 보자면뽑기의 틀 = 클래스뽑기 모양 = 인스턴스ex) 하트모양 = 하트모양 인스턴스, 별 모양 = 별 모양 인스턴스 여기서 인스턴스는 객체와 같은 말이고 클래스에 의해서 생성된 객체를 = 인스턴스 라고 부른다. 1-1-1 클래스 변수 이어서 예를 들자면 Servie라는 회사가 있는데 이 회사에 가입해야만 정보를 알 수 있다. 그 정보는 "영구는 배꼽이 두 개다..
"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-- 을 입력 했을 때 참 이러한 정보를 이용해서..