web
-
webhacking.kr 문제 26번 풀이web/webhacking.kr 2019. 6. 14. 16:04
webhacking.kr 26번 문제를 풀어보도록 하겠습니다. 우선 문제에 들어가게 되면 php문서 파일이 나옵니다. 위 코드가 php문서입니다. 코드를 보게 되면 eregi함수가 보입니다. eregi함수는 사용자 입력 검증 및 필터링에 사용되는 함수이며, 현제는 취약점이 있다 보고가 되어 PHP 5.3 부터는 preg match함수를 사용할 것을 권장한다. 다시 본론으로 들어와서 코드를 살펴보면 만약 입력받은 id값이 admin이면 no가 호출되고 종료를 한다. 그 후 입력된 id 값을 url디코더 시켜서 그다음 if문에서 admin인가를 검증하는 코드이다. 우선 admin을 url encoder로 인코딩 해줍니다. 그리고 id값에 넣습니다. 실패했습니다. 원인을 찾아봅시다. 여기서 알아야 되는 기본 ..
-
webhacking.kr 문제 6번 풀이web/webhacking.kr 2019. 6. 7. 17:20
webhacking.kr 6번 문제를 풀어보도록 하겠습니다. 문제 풀기에 앞서 base 64를 알아보도록 하겠습니다. (위키"base64") 우선 코드를 살펴보면 cookie user의 id와 pw가 있는 것을 유추할 수 있습니다. 그리고 base64로 인코딩을 반복문을 통해 20번 하는 것을 볼수 있습니다. PHP의 str_replace함수를 통해 숫자가 있으면 특수 문자로 바꾸는 것을 볼수 있습니다. // ex) str_replace("1","!","hi1") --> "hi!" 밑에 캡처는 디코딩을 하는걸로 보입니다 그렇게 해서 쿠키의 user id와 pw가 admin으로 20번 암호화한 것을 쿠기에 넣어야 해결되는 거 같다. 저는 현제 파이썬을 조금씩 공부하기에 파이썬으로 코드로 해결했습니다. 근데..
-
webhacking.kr 문제 4번 풀이web/webhacking.kr 2019. 6. 7. 16:44
webhacking.kr 4번 문제를 풀어보도록 하겠습니다. 먼저 4번 문제에 들어오게 되면 이런 이해 안 되는 문장이 나오게 되며 우리는 이것을 해결해야 합니다. 우선 이 문장을 잘 보시면 마지막에 "=="을 보실 수 있습니다. 이것은 base64만의 특징이라 할수 있습니다. ^^ 따라서 위 암호문을 base64로 디코딩 해줍니다. 하게 되면 아래와 같이 또 풀리지 않은 암호문이 나옵니다. 여기서부터가 문제였습니다. 방대한 암호 방법 중 무엇을 써야 하나 고민이었습니다. 저는 대학교에서 암호학을 배워 대략 40바이트 였기에 sha-1(해쉬 함수)을 사용했습니다. //음... 제가 암호학을 배우지 않았다면 디코더 싸이트에 들어가 모든 디코더 시도를 해보았을 것입니다.^^: 이렇게 base64를 한번한 암..
-
webhacking.kr 문제 16번 풀이web/webhacking.kr 2019. 5. 15. 16:08
webhacking.kr 16번 문제를 풀어보도록 하겠습니다. 먼저 16번 문제에 들어오게 되면 '*'을 볼 수 있습니다. 그리고 스크립트 태그에 문제를 해결할 방법이 있습니다. 저는 이 문제를 풀며 숫자는 아마 아스키코드 일거라는 확신을 가졌고 vm 함수의 위 4개의 if문과는 다르게 한 개의 if문은 페이지 위치를 지정할 수 있기에 124번 아스키코드를 확인해 보았습니다. //아스키 124는 '|'입니다 ( | = shift +\(보통 엔터기 바로 위 키)) 이 키를 누르게 되면 패스워드가 나오게 됩니다. 이 패스워드를 auth에 입력하면... 16번 문제를 해결할 수 있습니다. 이렇게 16번 문제를 해결해 보았습니다.
-
webhacking.kr 문제 12번 풀이web/webhacking.kr 2019. 5. 15. 15:52
webhacking.kr 12번 문제를 풀어보도록 합시다. 먼저 12번 문제에 들어오면 이렇게 스크립트 태그 안에 이렇게 무수히 많은 수를 보실 수 있습니다. 이 수는 아스키 코드로 해석해야 할거 같습니다. 하지만 이런 수작업을 console로 처리할 수 있습니다. //콘솔 기능은 F12를 누르고 console로 들어오시면 됩니다. 숫자들을 해석했더니 코드가 나옵니다. 패스워드를 확인하기 위해 alert 내용을 봅시다. 보시게 되면 ck 변수가 중요하다는 것을 볼 수 있습니다. 그런데 ck는 선언되길 URL에서 '='부터해서 만들어진 것이 저장된다는 것을 알 수 있습니다. 그런데 if 문 에 ck==~~이 있는데 해석하기 힘들게 숫자로 되있습니다. 이 것 또한 콘솔로 처리하면... 코드를 보여줍니다. c..
-
webhacking.kr 문제 15번 풀이web/webhacking.kr 2019. 5. 15. 15:28
webhacking.kr 15번 문제를 풀어보도록 합시다. 먼저 15번 문제에 들어오면 이렇게 접근 제한이 되는 것을 보실 수 있습니다. 그 후 이전 페이지로 돌아가면서 잠시 패스워드를 보여주지만 보다 확실하게 하기 위해 버프 스위트를 이용했습니다. html 코드를 보시면 경고창으로 접근 제한을 해놓고, 현제 페이지의 바로 전 페이지로 이동하는 history메서 드를 사용한걸 보실수 있습니다. 그 후 패스워드를 출력합니다. 그 패스워드를 auth에 입력해 줍니다. 이렇게 15번 문제를 해결해 보았습니다.
-
webhacking.kr 문제 14번 풀이web/webhacking.kr 2019. 5. 6. 16:28
webhacking.kr 14번 문제를 풀어보도록 합시다. 아무 설명 없이 text를 쓸 수 있는 공간과 버튼만 존재합니다. 그래서 F12로 코드를 보았습니다. 우선 이름이 "pw"인 폼 태그에 패스워드를 입력할 수 있는 input 태그와 이벤트를 발생시킬 수 있는 버튼 타입의 input 태그가 존재 했습니다. 그래서 "ck()"라는 이벤트를 확인해보기 위해서 script 태그를 보았습니다. 보게 되면 document.URL을 ul 이라는 변수에 저장한다고 합니다. 그렇게 되면 ul = http://www.webhacking.kr/ch.... 이 렇게 저장이 될 것입니다. (여기서 http://www 생략된 것을 포함해야 합니다.)그러고 나서 다시 ul.indexOf(".kr")을 ul에 저 장하게 됩니..
-
webhacking.kr 문제 32번 풀이web/webhacking.kr 2019. 5. 6. 16:05
webhacking.kr 32번 문제를 해결해 보도록 하겠습니다. 처음 들어오게 되면 아래와 같은 화면을 보실 수 있습니다. 그리고 스크롤을 끝까지 내리게 되면 Join이라는 버튼이 있습니다. 그렇기 때문에 버튼을 눌러줍니다. 그럼 아래와 같이 아이디(NAME부분)가 작은 창에 뜨는 것을 볼수 있습니다. 그럼 아래와 같이 자신의 아이디(NAME부분)가 등록된 것을 볼 수 있습니다. 그리고 자신의 아이디를 클릭하면 수가 하나 증가 하는 것을 볼 수 있습니다. 하지만 이후 클릭을 하면 no라는 창이 나오며 올라가지 않습니다. 왜냐하면 vote_check라는 쿠키에 ok라는 값으로 투표 를 했다는 것이 남기 때문입니다. 따라서 저는 vote_check라는 쿠키를 금지시켰습니다. 그 후 저는 제 NAME을 계속..