본문 바로가기

전체 글845

기본적인 MySQL 문법 0. 데이터베이스 조회 - SHOW DATABASES; 1. 데이터베이스 생성 - CREATE DATABASE DB네임; 2. 테이블명 수정 - ALTER TABLE 기존테이블명 RENAME 바꿀테이블명 3. 데이터베이스 삭제 - DROP DATABASE DB네임; 4. 테이블 조회 - SHOW TABLES; 5. 테이블 생성 - CREATE TABLE 테이블명( 컬럼명 TYPE NULL/NOT NULL 컬럼명 TYPE, 컬럼명 TYPE) 6. 테이블 삭제 - DELETE FROM 테이블명 (WHERE 조건) - DROP TABLE 테이블명 7. 컬럼추가 - ALTER TABLE 테이블명 ADD 컬럼명 TYPE NOT NULL DEFAULT '기본값'; 8. 컬럼에 내용삽입 - INSERT INTO 테이.. 2014. 5. 2.
HttpOnly를 이용한 쿠키 하이재킹 방지 쿠키의 httponly 옵션에 대해서 1. 언제 개발되었나? -2002년 MS IE6.0 SP1 에서 최초 지원 2. 어떤 동작을 하는가? -클라이언트 브라우저에서 쿠키가 생성될때 httponly 옵션이 있으면 클라이언트 스크립트의 쿠키 요청에 대해서 브라우저는 응답을 하지 않습니다. -예를 들어 쿠키 생성시 httponly 옵션이 있다면 javascript 의 document.cookie 메소드를 통해 쿠키정보를 브라우저로 부터 획득할 수 없습니다. 3. 왜 만들어 졌는가? -XSS 를 이용한 쿠키 하이재킹에 대응하기 위해 개발된 기술입니다. 4. 지원하는 브라우저 -Microsoft Internet Explorer 6.0 SP1 이상 -Mozilla Firefox 3.0.0.6+ 이상 -Netscap.. 2014. 4. 28.
Webhacking.kr 7번 Auth 를 누르니 Access_Denied! 라고 뜬다. 소스를 확인해보았다. val이 2가 되어야 조건에 만족하나보다. phps 로 들어가여 소스를 확인해보았다. union 이라는 힌트를 얻었다. if(eregi("--|2|50|\+|substring|from|infor|mation|lv|%20|=|!||sysM|and|or|table|column",$ck)) exit("Access Denied!"); 상당히 많은 부분을 필터링 해놨다. 해당 소스를 통하여 쿼리문을 추측해보면 union select (3-1 정도로 추측할 수 있다. 하지만 공백을 필터링하므로 인코딩값인 %0A를 통하여 넣어줬다. union%0Aselect%0A(3-1 좋은 시도라고 한다. val 값에 아무런 값이 없어서 그런것같다. .. 2014. 4. 13.
Webhacking.kr 5번 나는 웹 문제를 풀 때 무조건 Directory Listing 취약점이 있는지 확인한다. 문제에 접속하니 Login 버튼과 Join 버튼이 존재한다. Join 버튼을 누르니 Access Denied 라고 뜬다. http://webhacking.kr/challenge/web/web-05/mem/ 로 접속한 후 join.php 파일을 다운로드 후 소스를 확인해보았다. 자바스크립트 난독화 사이트를 통해 줄바꿈 및 알아보기 쉽게 바꿔주었다. (http://jsbeautifier.org/ 참고) 그 다음 lllll 이런식으로 되어있는 부분을 읽기쉽게 하나의 알파벳으로 바꿔준 후 소스를 분석해보니 쿠키에 oldzombie 가 들어있어야 하며 URL에 mode=1 이라는 부분이 있어야 된다고 한다. 해당 요건을 충족.. 2014. 4. 13.
Webhacking.kr 4번 Base64로 디코딩 후 MD5rainbow table 을 이용하여 복호화 해주면 답이 나온다. 2014. 4. 13.
lpad , conv 를 이용한 BlindSQL Injection * ascii, char, between, and, or 등이 막혀 있을 경우나 기타 잘 알려진 함수들이 필터링 되는 경우 대체방법 으로 lpad 함수, conv 함수를 이용할수 있다. lpad 는 지정한 문자로 자릿수를 채워주는 역할을 하며, conv 함수는 진법 변환을 해준다. 인젝션을 많이 해본 사람은 이제 감이 올 것이다. 쿼리 결과를 1 또는 0으로 만드는 것이 BlindSQL Injection 의 핵심인데, conv('문자',16,2) 로 1과 0으로 이루어진 2진수로 만들고, lpad 로 8자리로 맞춰 주는 것이다. 결론적으로 'A' 를 아래와 같이 0과 1만으로 표현할 수 있다. mysql> select lpad(conv(hex(substr('a',1,1)),16,2),8,0) from t.. 2014. 4. 13.