목록분류 전체보기 (124)
minhui study
Challenge 23 - 200Points :: XSS 23은 xss와 관련된 문제이므로 문제를 풀기 전에 xss에 대해 정리를 해보았다. XSS(Cross Site Scripting) 이란? - Injection 공격으로, 웹사이트보안이 취약한 부분에 HTML 또는 자바스크립트 코드를 삽입하여 피해자 PC의 정보를 빼간다. - XSS를 방어하기 어려운 이유는 브라우저가 자바스크립트코드를 실행할 수 있고, 사용자들이 브라우저로 신뢰하고 있는 웹사이트를 돌아다닐 때 해당 페이지에서 악의적인 코드가 문제없이 실행될 수 있기 때문이다. - XSS공격은 피해자PC의 브라우저에서 공격자에 의해 스크립트를 실행시켜 사용자 세션을 탈취할 수 있게 만들고, 웹사이트를 변조시켜 악성 사이트로 리다이렉션할 수 있도록 만..
Challenge 58 - 150 Points 문제에 들어가면 다음과 같이 콘솔창 같은 게 뜬다. 아무거나 쳐보다가 ls라고 치니 다음과 같이 index.js temp.html이 떴다. flag라고 치면 거부되고 오직 admin만 접근이 가능하다고 뜬다. 소스코드를 살펴보자 web socket을 사용하기 위해 sokcket.io package를 사용한다. 클라이언트나 서버에서 socket.io를 이용하여 event를 발생시킬 수 있고 이 event는 서로에게 전달된다.(서버와 비동기 양방향 통신) socket.io는 io라는 변수명으로 서버에서 사용된다. prevenDefault() : 기본으로 정의된 이벤트를 작동하지 못하게 하는 메서드이다. ( 의 기본 동작을 막을 수 있다.) 여기서는 만약 우리가 ..
Challenge 47 - 150 Points :: Mail Header Injection 처음에 send버튼을 눌러보았더니 다음과 같은 화면이 떴다. Mail subject에 입력한 내용은 밑에 Subject:옆에 나타나는 걸 볼 수 있다. 그리고 no-reply@webhacking.kr이 no-existed@webhacking.kr에게 보내는 메일이고, 그 메일 내용에 FLAG가 있는 것 같다. 여기서 Mail Header Injection을 시도해보자 우리가 만들어야 될 형식은 다음과 같다. To : no-existed@webhacking.kr From : no-reply@webhacking.kr(줄바꿈) Cc : 내 메일 주소 여기서 Cc의 의미는 "숨은 참조자"이다. 숨은 참조자이면 no_exi..
Challenge 32 - 150 Points 일단 현재 내 아이디는 jeongminhee99이고 지금은 첫번째로 올라와 있지만 처음 문제화면이 나왔을 때는 0/100으로 리스트의 가장 밑부분에 있었다. 근데 처음 한번 아이디를 누르면 그 해당 아이디 옆 숫자가 1이 늘어나고 또 한 번 더 누른 뒤에는 만약 jaehong13이라는 아이디를 누르면 다음과 같은 url과 알림이 뜬다. 클릭 대신 url에 ?hit=jeongminhee99라고 해도 숫자가 올라가지 않는다. cookie값을 보니 vote_check에 ok라고 있었다. 그래서 ok를 지우고 클릭을 하게 되면 1이 올라가는 걸 확인할 수 있다. 그럼 이 문제는 어떻게 하면 풀릴까? 1씩 올려서 내 아이디가 1등이 되었을 때 문제가 해결되는 듯하다...
Challenge 31 - 150 Points::포트포워딩 $port = rand(10000,10100); // rand는 난수를 생성하는 함수이다. 즉, 포트 번호는 10000 ~ 10100 사이의 숫자에서 생성된다는 의미이다. $socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}"); // $socket=fsockopen(hostname,port no,errno,errstring,timeout) = fsockopen ("연결할 도메인이나 ip","포트번호","에러(오류 번호)","에러메세지(문자열)","연결시도시간(데이터를 읽거나 쓰는 시간에 대한 시간 제한 설정)") -> 소켓 연결 함수로 다른 서버..
Challenge 27 - 150 Points 바로 소스코드를 확인해보자. 코드의 전반적인 흐름을 보면 id값에 admin이 들어가게 되면 풀리는 문제인 것 같다. 데이터베이스 테이블 중에서 id가 guest이고 no가 사용자로부터 전달받은 그 파라미터에 해당하는 값인 그 데이터를 찾아서 id값을 조회한다는 것을 알 수 있다. 이를 통해 데이터베이스의 테이블에는 문자열인 id와 정수인 no가 있다는 걸 알 수 있다. 그래서 위 화면을 보면 사용자가 1을 넣었을 때 id가 guest이고 no가 1인 id가 조회되어서 $q에 guest값이 담기게 되었고 그 결과 guest가 화면에 출력된 것을 확인할 수 있다. 하지만 만약에 2이상의 값들을 입력하게 된다면 테이블에는 id가 guest면서 no가 2이상인 정..
Challenge 25 - 150 Points 25번을 누르면 첫 화면은 다음과 같다. url에 file=hello.php라고 입력했을 때는 아무것도 나오지 않는다. 그래서 flag.php을 열기 위해서 주소창에 flag를 입력해보면 FLAG is in the code가 나온다. 이를 통해 아마도 flag.php코드를 본다면 flag를 얻을 수 있을 것이라는 걸 짐작할 수 있다. 여기서 잠깐 필요한 지식인 lfi라고 알려진 취약점과 php wrapper에 대해 짚고 넘어가보자 * lfi란 local file inclusion의 약자로 우리가 공격할 서버에 있는 파일을 사용하여 공격을 수행하는 방법이다. lfi취약점은 php로 만들어진 웹 사이트에서 include, require, require_once,..