전체 글

rm -rf /
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 ..
조건. no의 입력값을 preg_match (매치하는 값 찾는 함수)를 통해 매치되는 값이 있으면 “no hack” 이라는 exit문이 실행됨 필터링되는 문자들 공백, /, 괄호, |, &, select, from, 0x 소스코드에 admin의 no은 2라는 힌트가 제공되었음. 폼에 1을 적어서 제출하면 hi guset가 실행되는것을 확인, 또한 GET요청이기에 주소창에 no=1이 추가가 된것을 확인함. guest의 id값은 1임, where절에 id가 ‘guest’라는게 명시되어있기때문에 no값을 2로 바로 입력하더라도 실행이 되지않음 id=’guest’ and no=1 의 결과값은 True인데 이 값을 틀리게 하고 or 연산자를 이용해 no=2 라는 값만 주게 된다면 어떻게 될까? 공백문자가 필터링되..
Code js의 if문이 true로 작동하도록 실행해보려고함. var ul 은 현재 URL임 = https://webhacking.kr/challenge/js-1/ ul은 https://webhacking.kr/challenge/js-1/ 에서 “.kr” 가 시작하는 곳의 index 값으로 대입됨 ul은 index값 * 30 으로 대입됨 문제풀이 var ul=document.URL; == https://webhacking.kr/challenge/js-1/ ul=ul.indexOf(”.kr”); == 18 ul=ul30; == 1830 = 540 답 : 540
…….. 사용자를 투표하는 시스템으로 추정됨 한번 투표를 하면 다른 사용자나 자기 닉네임으로 투표가 불가능함 아마도 100까지 채우면 문제가 풀리는것으로 보임 어떠한 형식으로 투표를 했는지 검증을 하는지 알아보려고 웹사이트의 코드를 보았는데 html로만 구성이 되어져있음 서버 사이드 스크립트로 검증을 하는거 같음 그러다가 쿠키값에 vote_check 라는 쿠키값이 있는것을 확인하고 해당 쿠키를 삭제하고 다시 투표를 해보았을때 중복 투표가 되는것을 확인함 이를 100까지 클릭을 하기 위해 파이썬을 이용하여 자동화 스크립트를 작성해보려함 해당 사용자를 onclick 하면 GET요청으로 데이터가 보내지는것을 확인 파이썬 자동화 스크립트 URL은 https://webhacking.kr/challenge/code..
Future0_
Luna Developer Blog