목록분류 전체보기 (139)
DoR@Hee의 끄적끄적
1-1 연산자 오버 로딩 - 연산자(+, - , * , /)를 객체끼리 사용할 수 있게 하는 방법 연산자 오버 로딩을 위해서 몇 가지 기능을 추가했다. 여기서 중점으로 볼 사항은 def __add__(self, other) 부분과 pey + bey 부분이다. 분명히 __add__를. travel()처럼 호출하는 방식은 없지만 맨 끝에 "+" 연산자를 이용해서 오버 로딩하고 더하기 기호인 + 를 이용하면 클래스 내 __add__ 함수가 호출된다. 오버 로딩 연산자는 + 뿐 아니라 __add__(self, other) : A + B __sub__(self, other) : A - B __mul__(self, other) : A * B 등 연산자를 포함한 비교 연산자도 있다. 1-2 결론 - 연산자 오버 로딩..
1-1 상속 -클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 기능 다음과 같이 HousePark 클래스가 있다 HousePark 클래스는 이름을 입력받고 장소를 입력받으면 위와 같이 출력해주는 클래스이다. 같은 기능이 있는 성이 "김"인 class를 만들고 싶다면 위와 같이 "상속" 기능을 이용하면 된다. "class 상속받을 클래스명(상속할 클래스명)"으로 상속이 가능하고 HouseKim은 HousePark에 존재하는 traver 함수나 이름 설정이 가능한데 상속받은 클래스는 그 기능을 그대로 쓸 수있다. HouseKim 인스턴스를 생성 후 bey.travel을 하면 오류가 나야 정상이지만 클래스를 상속받았기 때문에 함수 호출이 가능하다 1-2 메서드 오버라이딩 -상속받은 함수의 다양..
if(preg_match('/\'/i', $_GET[id$_GET [id])) exit("HeHe"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); preg_match를 이용해서 '(싱글 쿼터)를 필터링하고 있다. 여기서 중요한 점은 preg_match는 특수문자 앞에 \ 가 존재하면 특수문자의 기능을 무시하고 일반적인 문자로 바꿔버리는 특징이 있다. 그걸 이용해서 쿼리를 작성해 보면은 "select id from prob_succbus where id =''or 1--'"이런 식으로 쿼리가 들어갈 경우 solve 될 것 인대 여기서 \를 이용해서 쿼리를 작성해보면 "select id from prob_succbus where id ='\'and pw=''or ..
문제 화면 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구문을 ..
1-1 information_schema란? mysql은 데이터의 집합이다 데이터가 많아질 경우 데이터를 목록화 시킬 필요가 있는대 이러한 요구에 맞춰 생겨난 게 바로 메타데이터 메타데이터는 데이터베이스와 같이 많은 데이터를 다뤄야 하는 경우 효율적인 정보처리를 위해 만든 것, 쉽게 말하자면 정보에 대한 정보 mysql은 메타데이터들을 종류별로 묶어 테이블을 만들고 테이블을 모아 디비를 만들었는대이러한 디비가 information_schema 이다. 이 DB는 읽기전용이라서 데이터베이스의 테이블과 같은 데이터로 동적으로 생성되므로사용자가 직접 수정, 관여를 할 수 없다. phpmyadmin에서 information_schema DB를 본 화면 총 78개 테이블이 보이는대 이번 글에서 메인으로 볼 테이블은..