정보보안 97

[Lecture]블록암호 : 운영모드(Cryptography)

Padding 패딩 : 입력의 길이를 블록의 배수에 맞게 하는 방법 Bit Padding : 평문이 채우지 못하는 비트 최상위를 1 나머지를 0 ex) 1101 1101 11 -> 1101 1101 11 (10 0000) 문제점 : ex) 1101 1000 다음과 같은 평문이 있으면 뒷부분을 패딩처리 하기때문에 1101 1000 (1000 0000) 이렇게 보내야 한다. Byte Padding ANSI X.923 : 바이트를 보통 0 으로 채우고 마지막 바이트에 패딩의 길이를 넣는것 ex) 99 99 (00 04) 위와 같은 문제점이 역시 있음 Byte Padding PKCS#7 : 추가할 패딩의 크기로 블록을 채우는 패딩 기법 ex) 99 99 (04 04) Mode of Operation 운영모드 :..

Cross-site scripting

XSS(Cross-Site Scripting) HTML, CSS에서 쓰이는 CSS와 글자가 겹치기 때문에 XSS 라고 부른다. XSS는 악의적 스크립트 코드를 웹에 삽입하여 해당코드가 실행되게 만드는 공격이다. 주요사례로 쿠키를 탈취하는 것이 있다. XSS는 스크립트 코드가 실행되는 때에 따라 reflected, stored로 구분된다. Reflected XSS Reflected XSS는 입력된 스크립트코드가 즉시 응답메세지로 출력되는 취약점이다. 위와 같은 형태로 진행되는 것 같다. 이에 대한 실습을 DVWA에서 해보았다. 이름에 asdf를 넣으니 다음과 같이 출력되는 형태이다. 입력칸에 스크립트 를 넣으니 그대로 실행되는 모습 그래서 alert(1); 스크립트로 XSS 체크를 할 수 있다. docum..

Command Injection

이번 장에서는 Command Injection에 대해서 다뤄 보았다. 위는 IP주소를 입력하면 그에 대한 핑을 가져오는 프로그램인것같다. 다음과 같은 방식 일 것이다. 코드를 보면 그와 같은 코드로 구성되어있다. -c 4 로 4번 핑을 가져오는 것이다. 하지만 다음과 같은 방식으로 입력 되면 마음대로 명령어를 실행할 수 있다.' 이런 방식으로 말이다. 이를 방지하기 위해서 입력받은 값을 system함수를 사용하는것이 아니라 제공하는 함수를 사용하라고 권장하고 있다. 또는 입력받은 값을 검증하는 방식도 같이 사용되어야 한다.

Blind SQL Injection

저번 SQL Injection에 이어서 이번에는 Blind SQL Injection에 대해서 공부해 보았다. DVWA의 Blind SQL Injection에 들어간다. 1을 넣었을때는 ID가 존재한다고 나오고 SQL Injection검사하는것처럼 '를 넣었을때는 ID가 데이터베이스에 없다고 나온다. 이때 위의 방식 처럼 항상 FALSE인 경우를 넣어 입력된 쿼리문이 ID가 존재한다, 존재하지 않는다 처럼 두가지 결과로 만 나올때 Blind SQL Injection을 사용하는 것 같다. 코드를 보면 보다시피 두개의 결과만 출력 하고 있다. 1' AND SLEEP(5)# 다음 구문은 앞에가 성립할때 5초의 딜레이를 준다는 구문이다 의문) 여기서 이 문법이 이해가 안간다. AND라는것은 두개가 다 TRUE 일..

[Lecture]현대암호(Cryptography)

혼돈 : 암호문에서 평문의 특성을 알아내기 힘든 성질 ex) ab hi ab -> cd ef cd cd에 해당하는 두 평문이 같을 것이다. 혼돈 성질을 만족하지 못한다. 확산 : 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질 대칭키 암호 시스템 암호화와 복호화에 같은 키를 사용하는 암호시스템 Block Cipher(블록 암호) : 평문을 정해진 크기의 블록단위로 암호화 하는 암호 ex) abcd efgh 1234 5678 평문의 크기가 블록크기의 배수가 아니라면 패딩을 추가 Stream Cipher(스트림 암호) : 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 평문에 XOR 하는 암호 C = P ⊕ X P 평문 C 암호문 X 스트림 X ⊕ X = 0 을 이용 대칭키 암호 장점 : 공개키 암..

[Lecture]고전암호(Cryptography)

고전암호 종류 Monoalphabetic Substitution Cipher(단일 문자 치환 암호) : 평문의 각 문자를 다른 문자로 치환 ex) 카이사르 암호 E = (x+n) mod 26 언어가 지닌 통계적 특성이 유지된다 e가 영어에서 제일 많이 나옴 Polyalphabetic Substitution Cipher(다중 문자 치환 암호) : 평문의 한 문자가 여러 종류 문자로 치환 ex) 비제네르 암호 Key A B C A B C ... 평문 B 1 A C K H ... C = (M + K) mod 26 C - 암호문 M - 평문 K - 키워드 Transposition Cipher(전치 암호) : 평문을 구성하는 문자들 순서를 재배열 ex) 스키테일 암호 암호 공격 방법 Exhaustive Key S..

[Lecture]Shellcode(System)

Shellcode 란? 셸을 획득하기 위한 목적으로 작성된 어셈블리 코드 orw(open-read-write) 셸코드 : 파일을 열고 읽은 뒤 화면에 출력해주는 셸코드 char arr[0x30]; int fd = open("~~", RD_ONLY, NULL); """ syscall : open rax : 0x02 arg0(rdi) const char *filename arg1(rsi) int flags arg2(rdx) umode_t mode """ read(fd, buf, 0x30); """ syscall : read rax : 0x00 arg0(rdi) unsigned int fd arg1(rsi) char *buf arg2(rdx) size_t count """ write(1, buf, 0x30);..

SQL Injection

SQL Injeciton - WHERE 구문 우회 #ID = 1 #PASSWORD = 1234 #query SELECT name, email FROM users WHERE ID = '1' and PASSWORD = '1234' #ID = 1' or '1' = '1'-- #PASSWORD = 1234 #query SELECT name, email FROM users WHERE ID = '1' or '1' = '1'--' and PASSWORD = '1234' SELECT name, email FROM users WHERE ID = '1' or '1' = '1' or True 형태를 만들어서 필요한 정보를 가져오는 방식 - UNION 공격 SELECT name, email FROM users WHERE ID..

취약한 인증 공격

책의 내용에 따라 브루트포스 공격을 실습해보고자 한다. 크게 두가지로 나뉜다 - 모든 경우의 수 를 넣는 브루트포스 - 자주 비밀번호로 쓰는 리스트를 넣는 딕셔너리 어택 실습을위해 DVWA에 접속했다. 브루트포스는 다음과 같은 화면이다. 비밀번호가 틀리면 다음과 같이 뜬다. 전전시간에 배운 BurpSuite의 Intruder 기능을 이용하여 Brute Force 공격을 실행해 보았다. 사이트를 로그인할때 보낸 http 요청을 찾아서 Intruder에게 보내면 아래와 같이 뜬다. 그리고 브루트포스를 할 password 부분을 설정하고 컴퓨터에 있던 password.lst (여러 비밀번호가 적혀있는 리스트 약 3000개) 를 훑으면서 응답을 확인한다. 그중 응답 길이가 다른 비밀번호가 있는데 이는 나머지는 ..