웹 해킹 문제를 푸는데 Flask 사용법을 몰라 문제를 풀 때 한참 헤멨다.
Flask 사용법을 점차 익혀야겠다.
Flask 에서 처리하기 전에 먼저 html 소스에서 <form><input> 에 보면 name 이라는 속성이 있다.
이 name의 속성 값이 중요하다.
클라이언트에서 서버로 데이터를 전송할 때 이름과 값의 쌍이 전송이 되는데 이 형태는 key 와 value로 표현이 될 수 있다.
그래서 <input type="text" name="xss"> 에서 xss 이라고 하는 것이 key가 되고 이 텍스트 박스에서 입력된 내용은 value가 된다.
@라고 되어있는 부분은 파이썬에서 데코레이터(decorator)라고 부르며, 이를 사용하여 app의 객체의 route 함수에 request 인자를 넘기면서 HTTP 요청을 처리한다.
request는 보통 get, post 방식으로 넘어온 데이터를 처리할 때 필요하다.
사실 "request"는 서버 측에서 요청한다는 의미. 즉, 사용자가 서버로 보내오는 요청이나 데이터를 얻어내는 역할을 하는 것이 이 request 객체의 역할이다.
GET 방식으로 요청 파라미터를 가져오려면 request 객체의 args 함수를 호출하면 된다.
POST 방식으로 요청 파라미터를 가져오려면 request 객체의 form 함수를 호출하면 된다.
+ get 함수의 첫 번째 인자는 요청 파라미터명, 두 번째 인자는 해당 요청 파라미터가 없을 시의 초기값이다.
밑의 함수는 @app.route 데코레이터 URL과 자신을 연결한다.
저기에서 '/'로 요청(request)을 하면 (즉 http://127.0.0.1/(생략가능) 여기로 접속하면) index() 함수가 실행된다는 것이다.
** HTTP 요청 방식
클라이언트에서 웹 서버로 요청할 때 어떤 방식으로 데이터를 전달할 것인지를 정한다.
GET | 서버로부터 정보를 조회 또는 요청(데이터를 Body에 담지 않고 URL에 쿼리스트링을 통해 전송) 가장 일반적인 요청 방식 * 쿼리스트링: URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터 (파라미터가 여러 개이면 &로 연결) |
HEAD | GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청 |
POST | 클라이언트에서 서버로 처리할 수 있는 데이터를 보냄(데이터를 HTTP 메세지의 Body에 담아서 전송) 보통 HTML 폼을 통해 데이터를 전송 |
PUT | 클라이언트가 서버에게 지정한 URL에 지정한 데이터를 저장할 것을 요청. POST와 유사 |
DELETE | 클라이언트가 서버에게 지정한 URL의 정보를 제거할 것을 요청 |
OPTIONS | 해당 URL에서 지원하는 request method를 알려줌 |
'WEB > WEB Hacking' 카테고리의 다른 글
Dreamhack | 워게임 | <csrf-1> 문제 (0) | 2021.01.26 |
---|---|
Client-side Attack (0) | 2021.01.25 |
Dreamhack | 워게임 | <xss-1> 문제 (0) | 2021.01.23 |
웹 해킹 기초 (0) | 2021.01.23 |
Dreamhack | 워게임 | <simple_sqli>문제 (0) | 2020.11.19 |