[Webhacking.kr] Challenge 14
·
Wargame | CTF/Webhacking.kr
Challenge 14 Javascript 관련 문제입니다.음? 바로 페이지 소스 보기로 넘어가죠!check 버튼을 클릭하면 JavaScript인 ck()가 호출됩니다. indexOf() - 특정 문자열의 시작위치를 반환 소스를 설명하자면 1. 변수에 현재 URL을 저장. 2. URL에서".kr"문자열의 시작위치(int)를 저장. 3. 저장된 시작위치에 30을 곱함. 4. 계산된 값과 입력한 값을 비교하여 정답 출력. 처음에 URL이 "webhacking.kr이라고 생각할 수 있지만 개발자도구의 콘솔에서 직접 스트립트를 실행해보면 http://가 포함되는 것을 알 수 있다.자바스크립트는 브라우저에서 실행이 가능하므로 소스와 똑같이 실행시켜도 된다.위와 같이 변수에 값을 알았기 때문에 문제를 바로 해결할 ..
[Webhacking.kr] Challenge 13
·
Wargame | CTF/Webhacking.kr
Challenge 13 Blind SQL Injection 문제입니다.문제 메인페이지입니다.Hint와 데이터 값을 입력하는 곳과 flag를 입력하는 곳이 있습니다.임의의 값을 입력해 봅시다.result의 값이 0이 나옵니다.true 나 1을 입력한다면 위와 같이 1이 출력됩니다. 이렇게 결과 값이 참과 거짓으로만 구분될 때는 Blind SQLi 를 이용해야합니다.우선 기본적으로 ascii, 공백, ,= 비교연산자 같은 블라인드 SQLi 필요한 것들은 필터링이 되어 있었습니다.그래도 블라인드에 필요한 case문이나 If문은 사용이 가능했습니다.case when 조건 then True else False endif(조건, True, False)이렇게 두 가지 중 하나를 이용하시면 되겠습니다.공백을 우회하기 ..
[Webhacking.kr] Challenge 12
·
Wargame | CTF/Webhacking.kr
Challenge 12 자바스크립트 문제입니다.페이지 소스를 볼 가요? 자바스크립트 부분에 아스키코드가 엄청 많네요 아래 보면 eval(WorkTimeFun)가 있는데 eval("")은 안의 문자열을 코드로 실행시키는 함수입니다.즉 WorkTimeFun에 해당되는 문자열을 코드로 실행시키는 역할을 하죠하지만 WorkTimeFun은 보기에 문자열로 보이지 않지만 String.from.CharCode()라는 함수가 있습니다.이 문제에서는 String.from.CharCode()가 중요한데 아스키코드값을 문자열로 리턴해주는 역할을 합니다.예를 들어 var test = String.from.CharCode(65,65,65,65); 라는 스크립트를 실행 시키면test라는 변수를 "AAAA"라는 문자열로 초기화 시..
[Webhacking.kr] Challenge 10
·
Wargame | CTF/Webhacking.kr
Challenge 10 10번 문제는 HTML에 대한 문제입니다.※이번 문제는 크롬에서 작동이 잘 되지 않아 IE에서 문제를 풀었습니다.이번 문제는 HTML소스를 어느정도 알고 있다면 쉽게 해결할 수 있습니다.O에 마우스가 올라가면 you로 글씨가 변경됩니다. 클릭하게 되면 posLeft값이 1상승하면 옆으로 움직이게 됩니다.1234567891011121314151617181920Challenge 10 O ||||buy lotto Colored by Color Scriptercs해당 페이지 소스입니다.Onclick 시 posLeft값이 1씩 증가합니다. 그래서 posLeft값이 800이 되면 Get으로 go=800을 넘겨주게 됩니다. 목표는 posLeft를 800을 만드는 것으로, 800번 클릭해도 됩니..
[Webhacking.kr] Challenge 9
·
Wargame | CTF/Webhacking.kr
Challenge 9 9번 문제입니다.예전에 한번 풀어보았는데 이번에는 문제가 조금 바뀌어있네요??기존엔 아파치 인증을 우회해야 문제가 보였는데 지금은 바로 문제를 풀 수 있게 되어 있네요? 위에 그림처럼 1,2,3의 링크와 password를 입력하는 부분이 있습니다. 이 문제는 소스가 제공이 되지 않습니다.1,2,3을 클릭 해 봅시다.1번을 누르면 Get으로 no=1 파라미터를 넘겨 주면서 Apple이 출력됩니다.2번을 누르면 Get으로 no=2 파라미터를 넘겨 주면서 Banana이 출력됩니다.3번을 누르면 Secret이 출력되면서 아래 힌트가 출력됩니다. 보통 이렇게 출력 값이 다르게 if문이나 case문을 이용한 블라인드 SQL Injection이 가능합니다.우선 필터링되는 문자가 있는지 입력해보고..
[Webhacking.kr] Challenge 8
·
Wargame | CTF/Webhacking.kr
Challenge 8 Http Header 중 User-Agent에 대한 문제입니다.User-Agent란 현재 요청을 전송하는 브라우저를 말합니다.문제 화면입니다. 새로고침할 때마다 카운트가 1씩 증가합니다.소스를 보기위해 index.phps로 접속합니다.8번 문제의 소스입니다.User-Agent 헤더 값을 받아오는데 현재 이 소스에서는 2개로 나눠져 있다고 보시면 됩니다.$agent에 저장된 값과 $_SERVER[HTTP_USER_AGENT]의 값으로 나눠져 있기 때문에 이를 잘 보시고 문제를 푸셔야 합니다.agent값으로 데이터베이스를 조회하여 id값 'admin'을 불러와야합니다.아래 Insert문을 보면 agent값과 현재IP주소와 'guest'를 Insert하고 있습니다. 이 부분에 SQL In..
[Webhacking.kr] Challenge 7
·
Wargame | CTF/Webhacking.kr
Challenge 7 7번 문제입니다. Union을 이용한 SQL Injection 문제입니다.auth 버튼을 눌러보면 그림과 같이 Access_Denied!라는 알림창이 하나 뜹니다.페이지 소스보기를 하니 index.phps가 있네요처음 힌트입니다. DB에는 val=2라는 값이 존재하지 않으니 Union을 이용하여 문제를 해결해야 합니다.문제의 PHP소스 입니다. 문제를 해결할 수 있는 조건을 생각해야합니다.소스를 천천히 보니 사용할수 없는 문구를이 있습니다.rand 부분은 패스하겠습니다. 이 부분은 괄호 갯수만 맞추어 주면 됩니다.If문이 보이네요. 쿼리 결과 값으로 1도 아니고 2도 아니면 중지됩니다.마지막으로 쿼리 결과 값이 2라면 문제가 해결되는 방식입니다.해결 조건 : 1. DB에 2라는 값은..
[Webhacking.kr] Challege 6
·
Wargame | CTF/Webhacking.kr
Challege 6 6번 문제입니다. Hint는 base64 입니다.소스를 확인해 볼까요소스를 확인해 보니 user쿠키가 없을 경우 'guest', '123qwe'를 해당 소스와 같이 base64인코딩을 20번 한다음 숫자를 치환하는 과정을 거칩니다.우리가 로그인해야하는 'admin'으로 직접 base64인코딩을 20번하고 해당 숫자부분을 치환해도 되지만 해당 소스가 공개되어 있으니 디코딩부분을 참고하여 똑같이 소스를 작성하여 돌려보는게 좋을 것 같습니다.직접 php소스를 돌려보겠습니다. 이렇게 admin에 대해 인코딩값이 나옵니다.이 인코딩된 값을 쿠키에 적용시켜 봅시다.새로고침을 누르면문제를 쉽게 해결할 수 있습니다.