web
-
webhacking.kr 문제 27번 풀이web/webhacking.kr 2019. 7. 7. 16:19
webhacking.kr 27번 문제를 해결해 보도록 하겠습니다. 보시면 주석으로 index.phps라고 표시를 해 두셔서 그곳으로 이동합니다. php 코드를 보시게 되면 필터링되는 문자열과 쿼리문 id값에 따라 문제가 해결되는가가 나와있습니다. 우선 guest를 먼저 찾아보면 guest의 no는 1입니다. 그러고 나서 우리는 admin으로 우회를 해야 합니다. 따라서 앞의 값은 false 뒷 값은 true를 만들어야 합니다. 여기서 소괄호로 입력한 get값을 감싸기 때문에 우리가 만들어야 할 기본적인 코드 값으로는 "0) or no = 2"가 기본적인 쿼리가 될 거 같습니다. "(select id from challe.... where id='guest' and no=(0) or no=2) or die..
-
webhacking.kr 문제 18번 풀이web/webhacking.kr 2019. 7. 7. 16:01
webhacking.kr 18번 문제를 풀어보도록 하겠습니다. 문제를 보면 처음부터 sql injection을 하라는 것을 아실 수 있습니다. 보시면 필터링되는 문자를 보실 수 있고 select로 guest가 고정돼있기에 admin으로 우회해야 하는 것을 느끼실 수 있습니다. 또한 앞의 조건이 참이 되면 앞 조건의 결과가 출력되는 if문을 보실 수 있습니다. 우선 우리가 입력하는 것은 no를 통해 get방식으로 보내지는 것을 보실 수 있습니다. 먼저 guest의 no를 찾아봅시다. 입력창에 0부터 순서대로 입력해 확인해 줍니다. 찾았다 요놈... guest의 no는 1입니다. 그다음 해야 할 일은 앞 조건을 false로 뒤 조건을 true로 만들기를 해야 합니다. 여기서 위에 php코드 중 필터링되는 부..
-
webhacking.kr 문제 3번 풀이web/webhacking.kr 2019. 7. 7. 15:30
webhacking.kr 3번 문제를 풀어보도록 하겠습니다. 문제를 처음 마주하게 되면 문제 속 문제가 나오는데 네모네모 로직을 학창 시절에 많이 해서 빠르게 풀었습니다. 풀 문제를 풀면 다음 화면이 이렇게 나옵니다. name 입력 칸에 입력을 하고 버튼을 눌러보도록 하겠습니다. 그렇게 하니 name 은 내가 입력한 값이 나오고, answer는 로직에서 풀당시 빈칸은 0, 채워진 칸은 1로 표시가 된 거 같습니다. 하지만 문제를 해결했다고 나오지 않아서 처음 당황을 했고 어떻게 해결해야 나올까 라는 의문이 생겼습니다. 그래서 소스 코드를 보았습니다. 보시게 되면 answer의 value는 고정값으로 되어 있고 타입 히든으로 숨어있습니다. 하지만 이걸로도 문제의 유추가 힘들었다가, DB 생성과 로드일 것이..
-
webhacking.kr 문제 54번 풀이web/webhacking.kr 2019. 6. 16. 14:22
webhacking.kr 54번 문제를 풀어보도록 하겠습니다. 이문제는 js 문제인 거 같습니다. 스크립트 코드를 보시면 밑에 settimeout함수가 보입니다. 이 함수는 지정 시간 이후, 한 번만 특정 함수나 코드를 실행시킬 때 사용합니다. 따라서 10000은 10초로 10초 뒤에 answer함수를 실행시킨다. 생각하면 될 거 같습니다. answer 함수를 보게 되면 x.open에서 ?m= i 페이지를 여는 요청을 초기화하고, x.send에서 요청을 합니다. 그리고 서버의 리턴값을 화면에 출력하고 i++을 통해 i를 증가시킵니다. 그리고 만약 서버의 응답이 있으면 다시 answer함수를 실행시킵니다. 만약 서버의 응답이 없으면 ?을 출력하는 것을 불 수 있습니다. 저는 간단하게 콘솔 창에 스크립트 코..
-
webhacking.kr 문제 23번 풀이web/webhacking.kr 2019. 6. 16. 13:48
webhacking.kr 23번 문제를 풀어보도록 하겠습니다. 이 문제의 미션은 '를 인젝션을 해라'입니다. xss문제일 것 같습니다. 그렇기에 input창에 스크립트 코드를 넣고 제출을 해봅니다. 그렇게 되면 아래 화면처럼 no hack이라는 문자열이 뜨고 안 되는 것을 볼 수 있습니다. 음 그렇다면 원인은 필터링이 되겠네요. 아마 필터링 함수로는 eregi가 사용될 가능성이 가장 높습니다. 다른 함수일 가능성도 있습니다. 따라서 eregi취약점인 %00(null)을 이용해 필터링을 우회시킬 수 있습니다. 원리는 null은 문자열의 끝을 나타내기에 그 뒤에 문자열은 필터링이 안된다고 합니다. 따라서 ?code=%00(스크립트 코드) 이렇게 인젝션을 하면 문제를 해결할 수 있습니다. 이렇게 23번 문제를..
-
webhacking.kr 문제 20번 풀이web/webhacking.kr 2019. 6. 14. 16:33
webhacking.kr 20번 문제를 풀어보도록 하겠습니다. 처음 문제를 보게 되면 오른쪽 상단에 time limit:2라고 있습니다. 말하자면 2초 안에 해야 된다는 의미겠죠... 그래서 2초안에 해야 되는 이유를 찾던 도중 2초가 지나면 code의 저기 있는 문자열이 바뀌는 것을 알았습니다. 또한 태그의 내용을 많이 이용하게 될 것 같다는 느낌을 받았습니다. 첫 번째 문제 해결을 위해 태그의 내용을 해석해 봅시다. 우성 ck함수가 보입니다 아마 클릭을 뜻하는 것 같습니다. 만약 lv5 frm.id.value에 값이 없으면 그 칸에 포커스를 두고 리턴하는 것 같으며 cmt,hack도 동일합니다. 마지막으로 lv5 frm.id.value값이 lv5 frm.attackme.value값과 같아야 성공 하는..
-
webhacking.kr 문제 17 번 풀이web/webhacking.kr 2019. 6. 14. 16:12
webhacking.kr 17번 문제를 풀어보도록 하겠습니다. JavaScript문제이며 아주 간단한 문제입니다. 태그에 많은 수와 많은 연산들이 있습니다. (계산기로 계산한다면 굳이 말리진 않겠습니다.ㅎㅎ) 저 많은 수와 연산을 콘솔 창에 붙여 넣기를 하게 되면 연산 값이 나옵니다. 이 연산 값을 텍스트를 입력할 수 있는 input 태그에 넣고 버튼을 누르면 패스워드가 나옵니다. 이것을 auth에 들어가 패스워드를 입력하면 17번 문제를 해결할 수 있습니다. 이렇게 17번 문제를 해결해 보았습니다.