Web Language
static HTML
sss(server side script)
-> 컴파일하지 않고 바로 실행
ASP -> 절차 지향적 언어
-> 보안적으로 많이 취약
ASP.NET -> ASP에서 보안 취약점 다소 보완
-> 객체 지향적 언어 -> 특정 부분만 떼어내서 수정이 가능 - > c#, c++ visual bsic
PHP -> apache와 주로 많이 연동하여 사용 -> apache + php + mysql ->gunuboard, zeroboard
-> ASP나 ASP.NET 보다는 보안적으로 나음
-> apache가 보안이 잘 되어있기 때문에 덩달아 좋음
JSP -> 위 언어들중에서 가장 보안이 좋음 -> JSP + ORACLE -> j for java
-> 파일업로드
CSS(client side script) <-> CSS 스타일 시트와는 별개
javascript
-> 95%이상이 사용
-> 객체 지향적 언어
-> netscape에서 개발, 대소문자 구분함
VBScript
-> client와 server측 양면에서 사용가능
-> 객체 지향이 아니라서 활용성이 떨어짐
-> 대소문자 구분없음
JScript
-> Microsoft에서 javascript와 유사하게 만들었지만 IE에서만 사용가능함
-----------------------
Encoding
내용은 같으나, 데이터의 형태를 바꾸는 방식
데이터 길이를 줄이는 용도
암호화로는 사용 불가
ASCII
URL
HTML
Base 64
-> 인증에 관련된 부분
MS script
--------------
ASCII
American Standard Code for Information Interchange
미국 정보교환 표준코드
1 Byte 중 7Bit를 이용해서 0에서 127까지 128개의 문자를 구성한 코드
128개의 문자는 영어 알파벳 대문자, 소문자, 보조문자. 제어문자로 구성
영문 알파벳을 사용하는 대표적인 문자 인코딩 방법
유니코드 (범용적)
utf-8 -> 많이 씀
euc-kr -> 한국형
제어문자 출력문자
-----------
URL Encoding
URL에 포함될 문자들이 안전하게 웹서버에 전달 되도록 특수한 기능을 가진 문자들을 브라우저가 인코딩하여 전달
URL meta 문자들에 대한 인코딩이 필요하다
형식 : 기존 문자열의 HEX값 앞에 %를 사용 (ASCII Table의 출력가능 문자)
한글 : UTF-8사용
FOrce Full URL ENcoding : 모든 문자열을 강제로 인코딩
------------
APMSETUP.com
------
html / php
<html>
<head> <title>login page</title></head>
<body>
<form action="login.php" method="POST">
<input type="text" name="id" value=""><br>
<input type="password" name="pw" value="">
<input type="submit" value="OK"><br>
</form>
</body>
</html>
----
<?
$id = $_POST['id'];
$pw = $_POST['pw'];
echo "ID:".$id."<br>";
echo "PW:".$pw;
?>
------------------
Encoding Example
<html>
<title>HTML Encoding Example</title>
<body>
나는 <ABC 초콜렛>을 좋아합니다.
</body>
</html>
공백 &nlsp
< <
< >
& &
' '
" "
-----------
<?
$id = $_POST['id'];
$pw = $_POST['pw'];
if($id=="admin"){
echo "<script>alert('관리자님 반갑습니다.')</script>";
}else{
echo "<script>alert('관리자가 아닙니다.')</script>";
}
?>
--------
<?
$id = $_POST['id'];
$pw = $_POST['pw'];
if($id=="admin"){
echo "<script>alert('관리자님 반갑습니다.')</script>";
}else{
echo "<script>alert('관리자가 아닙니다.')</script>";
}
?>
-------------
BASE64 Table
2진 데이터를 ASCII 형태의 텍스트로 표현 가능
WEB인증 중 기본 인증에 사용
끝 부분의 padding(==)으로 식별 가능
64개의 문자를 사용(영문 대, 소문자, 숫자, + /)
데이터를 6bit 단위로 표현
ABCD - ??????
1. 아스키코드표 맵핑
A B C D
-> 0x41 0x42 0x43 0x44
2. 2진수로 변환(8비트를 맞게 표현)
-> 01000001 01000010 01000011 01000100
3. 6비트로 자르기
-> 010000 010100 001001 000011 010001 00+0000
-> 남는 수는 자릿수 0으로 맞추기
4. 10 진수로 변환
-> 16 20 9 3 17 0
5. base64 테이블로 맵핑
-> Q U J D R A
6. 패딩 연산
4(처음 문자열) : 1byte=8bit -> 32 %3 -> ==
나머지 0 x
1 =
2 ==
-> QUJDRA==
연습 문제
http://mkgk888.cafe24.com/web/base64.php
----------
l 0x6c 01101100
u 0x75 01110101
c 0x63 01100011
k 0x6B 01101011
n 0x6E 01101110
a 0x61 01100001
s 0x73 01110011
h 0x68 01101000
011011 000111 010101 100011 011010 110110 111001 100001 011100 110110 100000
27 7 21 35 26 54 57 33 28 54 32
b H V j a 2 5 h c 2 g
bHVja25hc2g=
--------------
c 011100
2 110110
V 010101
j 100011
d 011101
W 010110
1 110101
h 100001
b 011011
g 100000
011100 110110 010101 100011 011101 010110 110101 100001 011011 100000
...
...
...
==
'Web' 카테고리의 다른 글
googling (0) | 2014.10.28 |
---|---|
session and cookie (0) | 2014.10.27 |
modifying sources using paros (0) | 2014.10.23 |
HTTP and fabricating data using paros (0) | 2014.10.22 |
The basic knowledge of web cracking (0) | 2014.10.21 |