분류 전체보기
[python][flask]플라스크 기초-메서드(method)
어떤 메소드로 페이지에 접근하는지에 따라 다른 로직을 보여줄 수 있다. method 코드 및 설명 from flask import Flask, request app = Flask(__name__) @app.route('/login', methods = ['GET', 'POST']) def login(): if request.method == 'POST': return #do_the_login() else: return #show_the_login_form() /login 페이지에 post 방식으로 접근하면 로그인 로직이 실행되고, get 방식으로 접근하면 로그인할 수 있게 도와주는 입력폼 로직이 실행된다. 공통 로직을 타고 메소드에 따라 분기를 타게 된다.
[python][flask]플라스크 기초-라우팅
목차 라우팅 1-1. 정적라우팅 1-2. 동적라우팅 라우팅 정적라우팅 from flask import Flask #애플리케이션 생성 app = Flask(__name__) #웹페이지(주소) 접근 시 리턴 @app.route('/index') @app.route('/') def hello_world(): return 'Hello, World!' #애플리케이션 실행 if __name__ == '__main__': app.run(debug=True) ---------------------------- #실행 > set FLASK_APP=hello.py > set FLASK_ENV=development > flask run 복잡한 url을 쉽게 함수로 연결하는 방법으로 route()를 이용해 쉽고 빠르게 원하는..
[Ubuntu]Pwngdb 설치
pwngdb는 peda 플러그인을 베이스로 기존 gdb에서 기능을 확장시킨 디버거이다. peda 플러그인이 베이스로 동작하기 때문에 stack과 레지스터 정보 등을 한눈에 볼 수 있다. https://github.com/scwuaptx/Pwngdb GitHub - scwuaptx/Pwngdb: gdb for pwn gdb for pwn. Contribute to scwuaptx/Pwngdb development by creating an account on GitHub. github.com 설치 및 실행 cd ~/ git clone https://github.com/scwuaptx/Pwngdb.git cp ~/Pwngdb/.gdbinit ~/ gdb //실행 참고 https://go-madhat.gith..
[Ubuntu] apt 오류 해결 - Could not get lock /var/lib/dpkg/lock-frontend
오류 내용 git을 설치하려 했을 때 생긴 오류이다. 구글링 해보니 대부분 다른 오류들은 아래와 같았다. 그래서 오류원인과 내가 해결한 방법, 아래의 해결방법을 정리해보았다. E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? 오류 원인 다음과 같은 경우 오류가 발생할 수 있다고 한다. 'Synaptic Package Manager' 또는 'Software Updater'가 열려있을 때 일부 apt 명령..
[webhacking.kr]old-03 Write Up
이 문제는 SQL Injection문제이다. 해당 문제 페이지에 접속하면 아래와 같은 퍼즐(물론 전부 칠해져 있진 않다)이 존재한다. 숫자에 맞게 퍼즐을 맞추면 아래와 같이 칠해지고 solved를 누르면 아래와 같은 페이지가 나온다. 여기서부터 문제의 시작이다. 문제 풀이 나는 다음과 같은 순서로 문제를 해결했다. your name에 아무거나 대입해봤다. 그 결과 이름은 계속 바뀌지만, answer과 ip는 그대로였고, SQL injection을 시도해봤지만 해당 쿼리문이 그대로 나와 먹히지 않는다는 걸 알 수 있었다. 계속 answer과 ip가 그대로인 것을 보고 패킷을 잡아보았다. answer과 id가 post 방식으로 넘어가는 것을 알 수 있다. answer부분에 SQL injection 쿼리('o..
[C++] namespace
namespace의 기본원리 학교에 소현이라는 같은 이름을 가진 친구가 있을 때, 한명은 6반 소현이, 다른 한명은 7반 소현이라고 불러 구분한다. namespace는 6반, 7반처럼 같은 소현이여도 구분이 되도록 그룹 영역을 만들어 이름붙인 것이라 보면 된다. 그래서 같은 이름의 함수나 변수가 존재하더라도 6반 소현이, 7반 소현이처럼 다른 namespace에 있으면 다른 변수, 다른 함수이다. 사용법 namespace BestCom { void SimpleFunc(void) { std::cout
[C++] 인라인 함수 (Inline Function)
C++기반의 인라인함수 정의 inline int SQUARE(int x) { // 컴파일러에 의해 처리, int형만 처리 가능 return x*x; } int main(void) { std::cout
[C++] 함수 오버로딩 & 매개변수 디폴트 값 (Function overloading & default value)
함수 오버로딩 함수의 이름이 동일하더라도, 매개변수 선언형태가 다르면 함수정의가 가능하다. int MyFunc(int n) { ... } int MyFunc(char c) { ... } int MyFunc(int n1, int n2) { ... } MyFunc(1) // MyFunc(int n) 실행 MyFunc('a') // MyFunc(char c) 실행 MyFunc(1,2) // MyFunc(int n1, int n2) 실행 위의 세 함수는 이름이 동일하지만 매개변수의 선언이 다르다. C++에서는 동일한 이름의 함수정의를 허용한다. 함수 호출 시 전달되는 인자를 통해서 호출하고자 하는 함수를 구분할 수 있기 때문이다. C++에서 함수호출 C++은 호출할 함수를 찾을 때 함수의 이름과 매개변수의 선언..