전체 글

rm -rf /
index.php PHPreg Step 1 Step 2 Step 1 : Open the door & Go to Step 2 !! step2.php PHPreg Step 1 Step 2
Page 문제 소스코드 FLAG는 flag.py 에 있다고 힌트가 있었음 /ping 에 들어가면 해당하는 Host로 Ping 테스트를 할수 있는 기능이 있음 Ping! 버튼을 눌러보면 리눅스의 셸에서 실행된 결과값이 사이트상에 렌더링되어 출력된다. 다시 한번 코드를 살며보면 host = request.form.get('host') cmd = f'ping -c 3 "{host}"' 이 쪽부분에서 host는 ping값을 보낼 host를 form태그상에서 불러오고 cmd는 미리 짜여진 명령어안에 host의 ip만 대입하여 실행시키는것을 확인할 수 있다. POST 요청의 패킷을 한번 살펴보면 host=8.8.8.8 와 같은 요청으로 서버에 보내지는것을 확인 리눅스의 셸에서 다중 명령어를 사용할때는 ; (세미클론..
소스코드를 확인해보면 입력된 valid,val_id, val_pw 를 base64 인코딩 방식으로 20번 인코딩 한 후 id와 pw의 값에서 1~8까지 해당 하는 숫자를 특수문자로 대치 하는 방식으로 코드가 작성되어져있다. 대치가 완료되면 valid값과val_id값과 val_pw 값은 user, password 라는 이름으로 쿠키에 저장된다 base64 : 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 decode_id가 admin, decode_pw가 nimda 이면 문제가 풀림 소스코드에서 주어진 base64로 인코딩하는 부분을 긁어와 validval_id와 val_pw를 admin, nimda로 지정 후 인코딩하고 출력되게 코드를 수정하고 개인 서버에서 php를 돌..
Database(DB) : 데이터의 저장소 데이터베이스는 무조건 하드디스크에 저장될 수 밖에 없음 DBMS(Database Management System) : 데이터베이스 관리 시스템 관계형DB : 데이터의 종속성을 관계로 표현하는 것이 특징 관계형 DB = 2차원 DB → 테이블로 이루어짐 Column(열) = 필드 = 속성 : 데이터의 제목(분류) , 유일한 이름을 가진다 Row(행) = 튜플 = 레코드 : 관계된 데이터들의 묶음 DB의 모델링에 따라서 사용하는 DBMS도 바뀐다. 관계형DB는 RDBMS를 사용하여 관리함 datetime을 사용하면 YYYY-MM-DD HH:mm:ss 형태로 저장되고 데이터 값을 입력해 주어야 한다. timestamp는 1970/1/1의 기준으로 몇 초가 지났는지 기..
파이썬 화면 출력 : print() 함수 수치 데이터(정수, 실수) 출력 print(10, 3.14) 논리(bool) 데이터 출력 print(True, False) 문자열 데이터 출력 print(” hello python “) 객체 데이터 출력 print(complex(1,2)) → (1+2j) 문자열 출력 시 참고사항 문자열 상수는 큰따옴표("…")나 작은따옴표(‘…’)로 묶어 출력 ex) print("hello python") 문자열 반복 출력 ex) print("test"* 5) → test 문자열 5번 출력됨 문자열 + 문자열 → 두 문자열을 하나의 큰 문자열로 연결함 주의) 문자열 + 수치데이터 → 오류! 해결책) 문자열 + str(수치데이터) ex) print("test" + str(10)) ..
문제 웹사이트 접속 사이트는 Python의 Flask와 Jinja2 템플릿엔진으로 구동되고 있다. Jinja2 ← 템플릿 엔진의 취약점을 사용하여 exploit 할 수 있다. 취약점의 이름은 SSTI(Server Side Template Injection) 이다. SSTI : SSTI(Server Side Template Injection) 취약점은 공격자가 서버측의 기본 템플릿 구문을 이용하여 악성 페이로드를 삽입 한 다음 서버 측에 실행되면서 생기는 취약점이며 웹 템플릿 엔진마다 사용되는 페이로드가 다릅니다. 웹 템플릿 : 웹 템플릿 엔진은 웹 템플릿과 웹 컨텐츠 정보를 처리하는 목적으로 설계된 소프트웨어 웹 템플릿은 예를 들어 index.html 파일 안에 {{ }} 를 이용하여 태그안에 {{ 55..
-HTML 코드 -문제파일 코드 #!/usr/bin/env python3 from flask import Flask, request, render_template app = Flask(__name__) try: FLAG = open("./flag.txt", "r").read() # flag is here! except: FLAG = "[**FLAG**]" @app.route('/', methods=['GET', 'POST']) def index(): menu_str = '' org = FLAG[10:29] org = int(org) st = ['' for i in range(16)] for i in range (0, 16): res = (org >> (4 * i)) & 0xf if 0 < res < 12..
조건. id에 \ 값이 들어오면 공백으로 대치됨. id에 ‘ 값이 들어오면 ‘’ 로 대치됨. id값은 인덱스 0부터 15자리까지 자른 값이 된다. result의 인덱스 0번값은 1이면 문제가 풀린다. SQL에서 True를 나타내는 값은 1, True 이다. 문제풀이 SQL구문에서 WHERE절에 ‘ 가 시작하고 닫히지 않은것을 확인하였음. SQL 구문의 뜻은 Table 1 에서 member 컬럼중 id의 길이가 14보다 작고, id값이 $_POST[’id’]} 인것을 찾아라 라는 뜻 일단 a 라는 값으로 시도를 해보았습니다. a’ 로 문제가 풀리지 않는것을 확인하고 다시 한번 코드 확인하였습니다. SUBSTR(0,15) 라는걸 보고 다시 재시도하였음 조건에 있는 ‘를 ‘’ 로 대치한다는 조건때문에 and ..