Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- apolloclient
- 금별맥주
- apollo react native
- 화이트해커를 위한 웹 해킹의 기술
- 예쁜술집 예술
- graphql react native
- promise메서드
- promise처리
- typescript
- 신촌 소문난집
- 앙버터마카롱
- graphql with reactnative
- 도그존
- 비동기배열
- useMutation error
- graphql 400
- 홍대 예술
- 토라비
- 지보싶 신촌점
- 운정 소바동
- graphql
- 홍대 카페 장쌤
- 홍대 토라비
- 화이트 해커를 위한 웹 해킹의 기술
- 고르드
- graphql with RN
- graphql mutation error
- 잠실새내 도그존
- 잠실새내
- 비동기배열처리방법
Archives
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
HTTP 요청 메시지, Fuzzing 본문
HTTP 기초 -> 2020/09/08 - [웹/웹 기초] - HTTP
python을 이용해서 HTTP 요청 메시지를 간단하게 보내보자.
1. GET 요청메시지
import requests
host = "http://192.168.56.105"
res =requests.get(host) #응답
#응답 태그 읽기
print(res.status_code) #200일때 잘 실행된 것
print(res.raise_for_status()) #오류일 때 오류 확인용
print(res.content)
print(res.text)
2. GET 요청 메시지에 파라미터를 같이 전달
import requests
host="https://www.naver.com/"
my_prams = {'id':'my_id', 'pw':'password'}
#파라미터는 URL?뒤에 있는 전달되는 데이터
response=requests.get(host,params=my_prams)
print(response.status_code)
print(response.raise_for_status())
print(response.content)
print(response.text)
3. POST 요청 메시지에 데이터를 같이 전달
import requests, json
host="https://www.naver.com/"
my_data = json.dumps({'id': 'my_id', 'pw': 'password'})
res = requests.post(host, data=my_data)
print(res.status_code) #응답 코드만 전달
4. HTTP 요청에 헤더와 쿠키를 추가해서 전달
import requests, json
host="https://www.naver.com/"
my_data = json.dumps({'id': 'my_id', 'pw': 'password'})
res = requests.post(host, data=my_data)
print(res.status_code) #응답 코드만 전달
=>4가지 모두 실행시켰을 때 200이 출력되면 정상적으로 응답
(200 OK = 웹 서버의 응답 코드/텍스트)
BOF를 이용한 웹 서버 Fuzzing
Fuzzing: 비정상적인 데이터(다양하고 잠재적 위협을 가진 입력 값)를 애플리케이션에 전달, 에러를 유도해서 보안 취약점을 탐지하는 것
Fuzzing으로 탐지할 수 있는 보안 취약점: BOF, Integer overflow, Format string 취약점, SQL injection, XSS, File system attacks 등
BOF를 이용한 웹 서버 Fuzzing: HTTP 요청의 value에 아주 큰 버퍼를 넣어서 서버가 다운되는지 확인 및 점검
Fuzzing을 위한 간단한 코드
import requests, copy #copy 라이브러리
host="http://xxxxxxxx" #점검할 서버 host
uri= "/xxxxxxx" #uri
org_headers={ #전달할 헤더
"USER-AGENT": "Mozilla/4.0",
"HOST" : host.split("://")[1],
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language":"en-us",
"Accept-Encoding": "gzip, deflate",
"Referer": host,
"Connection": "Keep-Alive"
}
org_cookies={ #쿠키
"SESSIONID":"6771",
"UserID": "id",
"PassWD": "password"
}
payload = "A"*n #BUG가 나오는 입력 n (BOF가 나는 n을 찾아야함)
for key in list(org_headers.keys()):
#전달할 헤더의 value에 원래 값이 아닌 A를 n개 넣어 서버가 다운되는지 확인
print("Header",key,end=": ") #\n-->: 로 바꿈
try:
headers=copy.deepcopy(org_headers)#headers copy
headers[key]=payload
res=requests.get(host + uri, headers=headers, cookies=org_cookies)
print(": Good")#다운되지 않고 요청이 잘 전달되어 응답을 받았을 때
except Exception as e:
print(e[:10])# 서버 다운되었을 때
for key in list(org_cookies.keys()):
#쿠키의 value에 원래 값이 아닌 A를 n개 넣어 서버가 다운되는지 확인
print("Header",key,end=": ") #\n-->:
try:
cookies=copy.deepcopy(org_cookies)#cookies copy
cookies[key]=payload
res=requests.get(host + uri, headers=org_headers, cookies=cookies)
print(": Good")#요청이 전달되어 응답을 받았을 때
except Exception as e:
print(e[:10])#서버 다운 되었을 때
'개발 > Python' 카테고리의 다른 글
윈도우 키로거 (0) | 2020.11.15 |
---|---|
Unix 패스워드 트래커 (0) | 2020.11.15 |
포트 스캐너 (스레드, Nmap, optparse) (0) | 2020.10.11 |
python을 이용한 백도어 개발 (0) | 2020.09.28 |
Python을 이용한 소켓 프로그래밍 (에코 서버,클라이언트 구현) (0) | 2020.09.13 |
Comments