전체 글 171

old-25 write-up

문제 정보 http://webhacking.kr:10001/ Challenge 25 webhacking.kr:10001 풀이 문제에 접속하면 file 파라미터로 hello를 받고 아래에는 644의 flag, hello, index의 php 파일과 그 아래는 hello word라는 hello의 파일을 읽어주는 것 같다. file 파라미터 값에 flag를 입력하니 FLAG is in the code 라는 문자열이 출력된다. flag가 코드 안에 있다고 한다. 여기서 어떻게 해야하는지 조금 삽질을 했다. 커맨드 인젝션이나 그런 것도 아니고 PHP Wrapper라는 개념이 있다고 한다. PHP Wrapper를 사용해서 이 문제를 풀 수 있는데, 이는 php에서 다른 파일을 동적으로 불러올 때 LFI 취약점이 발..

old-47 write-up

문제 정보 https://webhacking.kr/challenge/bonus-11/ Challenge 47 webhacking.kr 풀이 문제에 먼저 접속하면 다음과 같은 입력 폼이 존재한다. send 버튼을 한 번 눌러보면 다음과 같이 메일을 보냈다라는 내용이 출력된다. send를 계속 누르니 다음과 같이 10초 제한도 생긴다. Burp Suite로 패킷을 잡아봐도 별 다른게 안보인다. 어떤 문제인지 살짝 감이 안잡혔는데 이 문제는 SMTP에 관한 문제라고 한다. 이는 Mail Header Injection이라고 해서 Cc나 Bcc를 추가해 보내는 메일을 다른 메일 주소로 참조해 메일을 보낼 수 있는 취약점이라고 한다. Burp Suite를 이용해 Cc 헤더를 추가하고 내 이메일을 지정해준 후 Rep..

old-27 write-up

문제 정보 https://webhacking.kr/challenge/web-12/ Challenge 27 webhacking.kr 풀이 문제에 접속하면 SQL Injection 문제라는 걸 알려준다. 소스 코드는 아래와 같다. 여기서 preg_match에 의해 필터링되는 키워드들은 #, select, (, 공백, limit, =, 0x 이다. no의 파라미터 값은 "select id from chall27 where id='geust' and no= (no파라미터값) 에 들어가고 id가 admin이면 solve이다. 하나 더 살펴보아야 할 것은 admin 소스 코드 뒤에 admin의 no 값은 2라고 주석으로 되어있는 것이다. SQL INJECTION

old-19 write-up

문제 정보 https://webhacking.kr/challenge/js-6/ Challenge 19 webhacking.kr 풀이 문제 사이트로 접속하면 id에 placeholder로 admin이 적혀있는 폼이 보인다. 제출 버튼을 누르니 다음과 같이 admin이 아니라고 나온다. url을 자세히 살펴보면 파라미터에 admin 값이 담기므로 GET 메소드 방식이라는 것을 알 수 있었다. 소스 코드를 살펴보면 maxlength는 최대 문자를 지정하고, size는 너비를 지정하는 함수이기 때문에 입력폼에 5개의 문자밖에 입력하지 못한다. id : admin을 입력했을 때의 소스 코드를 분석해보면 you are not admin 뒤에 meta 태그가 뭔지 살펴보았다. 태그의 http-equiv 속성은 con..

old-32 write-up

문제 정보 https://webhacking.kr/challenge/code-5/ https://webhacking.kr/challenge/code-5/ webhacking.kr 풀이 문제에 접속하면 다음과 같이 랭킹이 나와있고, 아무거나 누르니까 "you already voted"라는 이미 투표했다는 alert창이 나온다. 맨 아래에 나의 아이디도 같이 있길래 Burp suite를 이용해 패킷을 잡아보니 쿠키에 vote_check=ok; 가 존재하는 것을 확인했다. vote_check의 쿠키를 삭제하고 패킷을 전송하니 Hit의 값이 올라가면서 투표가 다시 동작했다. 이렇게 내 아이디 값을 하나하나 증가하면 될 것이라고 하는데 이를 스크립트로 작성해야 할 것 같았다. 이를 어떻게 작성할까 고민하던 도중에..

old-06 write-up

문제 정보 https://webhacking.kr/challenge/web-06/ https://webhacking.kr/challenge/web-06/ webhacking.kr 풀이 문제 접속하면 ID와 PW를 알려주고 소스 코드를 볼 수 있도록 되어있다. 제공된 소스코드는 다음과 같다. 소스 코드를 전체적으로 분석해보면 가장 먼저 user이라는 쿠키가 없다면 다음과 같이 id와 pw를 제공받아 base64로 인코딩한 후, 1부터8을 특수기호로 치환한다. 그리고 이 값을 쿠키에 저장하고 index 페이지에 보이는 ID와 PW의 값은 이를 다시 디코딩하여 보여주는 문자열이다. 이를 ID가 admin이고 PW가 nimda이면 solve할 수 있다. ID와 PW를 admin과 nimda로 맞춰서 쿠키 값을 ..

old39 write-up

문제 정보 https://webhacking.kr/challenge/bonus-10/ Chellenge 39 webhacking.kr 풀이 문제에 접속하면 입력폼과 view-source를 클릭하도록 되어있다. view-source 에서 제공되는 소스코드는 다음과 같다. 분석해보면 먼저 가장 아래 부분에 form 태그로 index.php 파일에 post 메소드를 통해서 id 이름의 text 폼이 존재한다. 위에 있는 php 소스 코드는 post로 전송되는 id 값에 str_replace 함수를 이용해서 \\을 공백으로 치환하고 '를 ''(싱글 쿼터 2개)으로 치환한다. 또한 substr 함수를 이용해서 id의 값을 0의 위치부터 15의 위치까지 뽑아온다. 마지막으로 result 변수에 요청 쿼리가 참일 경..

old-38 write-up

문제 정보 https://webhacking.kr/challenge/bonus-9/ Challenge 38 webhacking.kr 풀이 문제에 접속하면 다음과 같이 LOG INJECTION이 보인다. SQL Injection 문제로 보인다. 소스 코드는 다음과 같다. 폼으로 index.php에 POST 메소드로 요청을 보내고 인풋으로 id를 입력받고 size는 20이다. 그리고 아래에 주석으로 a태그로 admin.php가 작성되어있다. LOG INJECTION admin.php로 접속해보면 다음과 같다. admin으로 로그인해야 한다고 한다. 다시 LOG INJECTION 페이지로 돌아와 admin을 입력해 로그인 버튼을 누르면 admin이 아니라고 나온다. 이를 우회하여야 할 것 같다. 일단 Log ..

old-24 write-up

문제 정보 https://webhacking.kr/challenge/js-1/ Challenge 14 webhacking.kr 풀이 문제에 접속하면 전에 있던 문제와 같이 입력 폼과 check 버튼이 보인다. 똑같이 소스 코드를 보면 다음과 같다. 이를 분석해보면 먼저 폼의 이름은 pw이고 제출을 했을 때 ck함수를 실행하고 false를 반환한다. 다음 입력으로 input_pwd이름의 문자열을 받아 check를 클릭하면 ck 함수를 실행하도록 되어있다. ck 함수를 분석하면 ul이라는 변수는 document.URL이고, 다음으로 ul 변수에 indexOf 함수로 .kr의 위치를 찾고 있으며, 이는 .의 위치만 찾으면 된다. 사이트의 이름은 webhacking.kr이므로 .은 10이다. 이를 30을 곱하면..

old-16 write-up

문제 정보 https://webhacking.kr/challenge/js-3/ Challenge 16 webhacking.kr 풀이 문제에 접속하면 다음과 같이 *표시가 보인다. [Ctrl+U] 단축키를 통해서 페이지의 소스 코드를 확인하면 다음과 같다. Challenge 16 * 소스 코드를 딱 봤을 때 이는 콘솔창으로 별을 움직이고 mv 함수에서 cd 인자의 값이 124이면 do it이라고 한다. f12를 눌러 개발자 도구에서 콘솔 창을 열어 console.log(mv(124))를 입력해주니 풀렸다.