보안

view-source GET요청으로 id값이 admin 이면 문제가 풀림 하지만 preg_match 함수로 “admin” 이라는 문자열이 있으면 필터링되어서 no! 라는 문자가 뜸 preg_match 필터링 우회 admin 을 URL Encoding 하여서 시도해봄 admin → %61%64%6D%69%6E → ?id=%61%64%6D%69%6E URL을 Encoding 하였는데 값을 넣고 요청을 보내면 URL이 admin 으로 바뀌고 가 뜨는것이 확인됨 php문 내부에 GET[′id′]=urldecode(_GET['id'] = urldecode(G​ET[′id′]=urldecode(_GET['id']); 를 확인하였는데 이 코드때문에 만약 %61%64%6D%69%6E 를 한번 더 URL Encoding..
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 와 같은 요청으로 서버에 보내지는것을 확인 리눅스의 셸에서 다중 명령어를 사용할때는 ; (세미클론..
source code login form태그의 pw input태그에 값이 unlock과 똑같다면 function sub() 가 실행된다 계산은 js에서 풀어보았음 답 : 7809297.1
index.php PHPreg Step 1 Step 2 Step 1 : Open the door & Go to Step 2 !! step2.php PHPreg Step 1 Step 2
소스코드를 확인해보면 입력된 $val_id, $val_pw 를 base64 인코딩 방식으로 20번 인코딩 한 후 id와 pw의 값에서 1~8까지 해당 하는 숫자를 특수문자로 대치 하는 방식으로 코드가 작성되어져있다. 대치가 완료되면 $val_id값과 $val_pw 값은 user, password 라는 이름으로 쿠키에 저장된다 base64 : 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 decode_id가 admin, decode_pw가 nimda 이면 문제가 풀림 소스코드에서 주어진 base64로 인코딩하는 부분을 긁어와 $val_id와 $val_pw를 admin, nimda로 지정 후 인코딩하고 출력되게 코드를 수정하고 개인 서버에서 php를 돌..
-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 라는 값만 주게 된다면 어떻게 될까? 공백문자가 필터링되..
Future0_
'보안' 태그의 글 목록