웹 (78) 썸네일형 리스트형 XSS challenges 7,8,10,15 XSS challenges 7,8,10,15입니다. 11~14가 없는 이유는 11번은 문제가 날아갔고 12~14번은 구버전 IE 브라우저에서만 풀수 있다고 합니다. 7번 7번은 6번과 매우 비슷했습니다. 그런데 6번처럼 입력을 하면 위처럼 더블 쿼터가 남고 뒷 부분 괄호가 충족이 되지 않는 것을 알 수 있습니다. 그래도 이벤트 핸들러는 정상적으로 넣을 수 있기 때문에 조금만 수정해서 문제를 해결했습니다. 8번 8번 문제입니다. 버튼을 보니 링크를 만들어주는 버튼인 거 같긴합니다. 그래서 hi를 입력한 뒤 소스코드를 확인했습니다. href 부분에 hi가 들어간 것을 알 수 있습니다. 이 형태는 XSS game 2번을 해결할 때 썻던 a 태그에 속성을 넣어준 것과 매우 유사합니다. Link 이것과 그냥 같은.. XSS challenges 1~6 XSS challenges 1~6라업입니다. 1번 1번은 별다른 특징 없이 텍스트 박스에 를 넣어주어 alert해주면 문제가 해결됩니다. 2번 2번은 html태그를 종료하고 그 이후에 script태그를 통해 alert를 띄워주면 됩니다. 태그를 끝내고 싶다면 ">를 통해 끝내주면 됩니다. 정답 : "> 3번 3번부터는 소스코드를 보면서 풀어야하는 문제입니다. 위처럼 나를 선택할 수 있는 부분이 select태그를 통해 적혀있습니다. XSS challenges의 코드를 수정할 수 있기 때문에 나라 이름 하나를 바꾼뒤 나라 선택에서 script태그 부분을 클릭하고 Search를 눌러주면 alert가 실행되어 문제가 해결됩니다. 4번 4번은 힌트처럼 숨겨진 입력 필드를 찾아내야합니다. 페이지 소스 코드를 쭉 둘.. sfw6 (XSS) sfw6은 보이는 것처럼 게시판 형태의 플레이리스트(?)가 나열되어 있는 페이지로 시작합니다. 처음에 이 문제를 보고 순간 멍 때렸던 것 같습니다. 어디서부터 손을 대야할지 모르는 문제였습니다. 기존까지 SQL 인젝션 문제만 풀다보니 생각이 되게 SQL 인젝션에 국한되어 있었던 것 같습니다. 그래서 소스코드를 보니 떡하니 아래와 같은 메시지가 있었습니다. 웹 문제도 소스코드를 보면서 분석해야 한다는 것을 간과했던 것 같습니다. 메시지를 해석해보면 옳지 않은 노래라면 사이트에 링크를 alert하라였습니다. "제목.kr"을 입력하면 되고 공백은 있으면 안 된다였습니다. 열심히 노래 제목을 검색해 보니 some things never change라는 노래에 x표시가 되어 있더군요. 그래서 그대로 입력했지만 당.. sfw5 (information schema SQL injection) sfw5 문제에 들어가면 위 사진처럼 회원가입 페이지와 로그인 페이지로 나뉩니다. 아이디와 비밀번호는 간단하게 만들어서 로그인해보겠습니다. 이 부분은 제가 삽질한 부분도 포함됩니다. 지금처럼 로그인을하면 왼쪽 상단에 아이디가 뜨고 게시글을 적으면 아래에 게시글 목록들이 뜨는 것을 알 수 있습니다. 그리고 플래그 부분을 들어가보니 관리자 계정의 아이디와 비밀번호를 획득해야 플래그를 얻는 구조 같습니다. 삽질 시작 1... 제가 이 문제에서 엄청 삽질을 많이 했습니다. 우선 처음은 취약점 위치를 잘못 파악해서 한 삽질이었습니다. information schema관련 문제를 풀 때는 일정한 순서가 있습니다. 1. 칼럼 갯수를 알아낸다. 2. 칼럼 갯수를 알냈다면 database()를 통해 현재 사용중인 db이.. sfw4 (error based SQL injection) sfw는 에러 기반 SQL injection 문제입니다. 이 문제는 union select문을 이용해 간단히 에러를 확인할 수 있었습니다. 간단한 에러 기반 SQL injection에 사용되는 쿼리인 pw=' or id='admin' and (select 1 union select length(pw)=10) %23을 입력해주니 아래 결과처럼 에러 메시지가 보였습니다. 그래서 길이 값을 바꿔가면서 삽질을 했더니 길이를 알아낼 수 있었습니다. 위의 쿼리문에서 length(pw)를 pw like 구문으로 쿼리문을 수정해주어 아래의 파이썬 코드로 문제를 해결했습니다. import requests url='http://sfwebstudy.ml/sfw4/sw4.php?' header={'Cookie':'PHPSES.. sfw3 (time based SQL injection) sfw3번입니다. 이 문제를 처음 풀 때는 sleep, benchmark 함수가 필터링으로 막혀있길래 저는 당연히 에러 기반 sql injection 문제로 알고 삽질을 했습니다. 하지만 아무리 에러 기반으로 풀어도 별다른 실마리를 발견하지 못했습니다. 그래서 이 문제를 내준 동아리 친구에게 물어보니 time based SQL injection 문제라는 이야기를 듣고 충격을 좀 받았습니다. 그래서 열심히 구글링과 삽질을 통해 sleep함수와 benchmark 함수 없이 time based sql injection 방법을 검색해보니 헤비 쿼리를 이용한 방법이 있었습니다. 이 방법은 benchmark함수와 비슷하게 굉장히 큰 값을 db에서 가져와서 시간을 지연시키는 방식입니다. 여기서 사용한 쿼리는 (sel.. sfw2 (blind SQL injection) sfw2 입니다. 일단 1번과 다르게 no의 값도 가져오며 oreder by를 통해 정렬하는거 같습니다. 그래서 일단 pw값으로 삽질해보니 아무것도 바뀌지 않아서 no의 값으로 order by 해보았습니다. 단순히 1로 정렬하면 아무것도 뜨지 않고 desc로 거꾸로 정렬해주니 다음 단계로 넘어가는것 같습니다. 여기서 이제 출제자에게 물어보니 LOS에서 풀었던것 처럼 직접 비밀번호를 구해야 한다고 합니다. 그래서 쿼리문을 만들어서 비밀번호의 길이와 비밀번호를 직접 알아냈습니다. 아래는 비밀번호의 길이와 값을 구한 쿼리문입니다. 길이 : ?no=1%20desc&pw=%27%20||%20id%20in%20(0x61646d696e)%20%26%26%20length(pw) sfw1 (simple SQL injection) sfw 1번 문제입니다. 아무것도 없어서 일단 pw에 ' || 1=1#를 넣어보았습니다. 당연히 결과는 아래처럼 안 되었습니다. 아마 필터링 되는 문자일 경우 이렇게 뜨는 것 같습니다. 그래서 이것저것 넣어보니 or, admin,=, 싱글 쿼터, 공백 등이 안 되는 것 같습니다. 일단 blind sql injection 문제가 아니어서 아마 가져오는 id값이 admin이면 되지 않을까 생각했습니다. 일단 평범하게 pw=' or id='admin' 등은 필터링이 되기 때문에 되지 않습니다. 그래서 admin을 아스키코드 값으로 0x61646d696e로 바꾸고 등호는 like로, 등호는 %0a로 필터링 우회 해주니까 문제가 해결되었습니다. 이전 1 ··· 3 4 5 6 7 8 9 10 다음