목록전체 글 (289)
촉촉한초코칩
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bdSlkA/btsI5zdoUmD/KSWXkKbPtpOWVkD79voUkk/img.png)
코드#!/usr/bin/python3from flask import Flask, request, render_template, gimport sqlite3import osimport binasciiapp = Flask(__name__)app.secret_key = os.urandom(32)try: FLAG = open('./flag.txt', 'r').read()except: FLAG = '[**FLAG**]'DATABASE = "database.db"if os.path.exists(DATABASE) == False: db = sqlite3.connect(DATABASE) db.execute('create table users(userid char(100), userpassword ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kOqX8/btsI0Q1Ye4z/VO9Wjezkqh06AkaN8dNKE0/img.png)
문제 문제 파일 다운받으니 이런 문장이 나왔다. rail fence 전치기법 중 하나 평문 문자를 대각선으로 지그재그 형태의 위아래로 왔다갔다 작성해서 맨 위의 첫번째 라인부터 순서대로 치ㅜ하여 암호문을 작성한다. 공격위 블로그 참고해서 rail fence 만드는 코드는 완성했는데 키 값을 모른다.. 너무 노가다 같아서 반대로 생각해보았다. dreamhack tools 사용해서 rot13 적용 → From base64했더니 이런 문자열이 나왔다. 근데 output을 아무리 넣어봐도 틀렸다고 나왔다.. 생각해보니 rail-fence는 사용하지 않은 것 같아서+output으로 나온 문자열 조합이 이상한것같아서 output 문자열을 가지고 rail-fence에 적용해보았다. def solve(crypt, ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/s5SmS/btsI1VOMXLE/MMCYwewkBo9NNGKkbAkkC1/img.png)
코드#!/usr/bin/env python3import subprocessfrom flask import Flask, request, render_templateAPP = Flask(__name__)@APP.route('/', methods=['GET', 'POST'])def index(): if request.method == 'POST': user_input = request.form.get('user_input') cmd = f'echo $({user_input})' if 'flag' in cmd: return render_template('index.html', result='No!') try: outp..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/btKF1F/btsIWlmuSJF/jA1GMDJeuIyd7wh66lf3oK/img.png)
코드if ($_SERVER["REQUEST_METHOD"] == "POST") { $input_1 = $_POST["input1"] ? $_POST["input1"] : ""; $input_2 = $_POST["input2"] ? $_POST["input2"] : ""; sleep(1); if($input_1 != "" && $input_2 != ""){ if(strlen($input_1) "7.9"){ if(strlen($input_2) 1){ if($input_2 "74"){ echo "FLAG\n"; echo $flag; e..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bFQEf3/btsIWwBsvsj/DMuQJqRT27HgDLH9LAaLOK/img.png)
관련 내용에 대해 알아야 할 것 같아서 관련 내용을 정리해보았다. XSS Filtering BypassXSS를 방어하기 위해 필터링을 추가했을 때 이를 우회하는 방법 소개 1) 불충분한 XSS 필터링XSS 필터링을 통해 보안 유지 보안을 위해 XSS 필터링은 안전하다고 알려진 마크업만 허용하는 보수적인 방식을 취해야 함일부 문자열만을 바탕으로 필터를 하게 되면 허위양성 (False Positive) 또는 허위음성 (False Negative) 발생 → 필터링 자체가 이루어지지 못하게 됨 이벤트 핸들러 속성자바 스크립트 코드 실행할 수 있는 HTML 태그 : img 태그에 on 이벤트 핸들러 검사x => !/ 우회 : 멀티 라인에 대한 검사가 존재하지 않기 때문에 줄바꿈 문자를 이용해 우회할 수 있다.3)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c8tVMw/btsIVajY7WQ/tuBKDy4N7TwVkB1blGcC41/img.png)
문제다솜이는 기타를 많이 가지고 있다. 그리고 각각의 기타는 모두 다른 시리얼 번호를 가지고 있다. 다솜이는 기타를 빨리 찾아서 빨리 사람들에게 연주해주기 위해서 기타를 시리얼 번호 순서대로 정렬하고자 한다.모든 시리얼 번호는 알파벳 대문자 (A-Z)와 숫자 (0-9)로 이루어져 있다.시리얼번호 A가 시리얼번호 B의 앞에 오는 경우는 다음과 같다.A와 B의 길이가 다르면, 짧은 것이 먼저 온다.만약 서로 길이가 같다면, A의 모든 자리수의 합과 B의 모든 자리수의 합을 비교해서 작은 합을 가지는 것이 먼저온다. (숫자인 것만 더한다)만약 1,2번 둘 조건으로도 비교할 수 없으면, 사전순으로 비교한다. 숫자가 알파벳보다 사전순으로 작다.시리얼이 주어졌을 때, 정렬해서 출력하는 프로그램을 작성하시오.입력첫째..