분류 전체보기 (171) 썸네일형 리스트형 webhacking.kr old-31 이해하기 old-31 페이지는 여러 문장들이 적혀 있습니다. 어떤 내용인지 읽어보았습니다. $port = rand(10000,10100); $port는 포트 번호를 저장하는 변수입니다. 포트 번호는 특정 사용자에게 데이터를 보내기 위해 통과해야 하는 관문과도 같은 역할을 합니다. 번호와 일치하는 관문을 넘어가야 데이터를 받아야 할 사용자가 존재하는 것입니다. rand() 함수는 값을 랜덤하게 얻어내는 역할을 합니다. 10000 ~ 10100의 값 중 하나를 랜덤하게 얻어내는 것입니다. $socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) fsockopen ("연결할 도메인 또는 ip", "포트번호", "에러", "에러메세지", "연결시도시간") fsockope.. webhacking.kr old-20 이해하기 old-20 페이지는 어떤 값을 제출하는 형태로 구성되어 있습니다. 중앙 상단에는 " time limit : 2 second "라고 적혀있습니다. 어떤 기능을 하는지 페이지 소스 코드를 확인해 보았습니다. 소스 코드 분석 submit 버튼을 누르면 onclick="ck()"에 의해 ck() 함수가 작동합니다. ck() 함수는 각각의 텍스트 상자에 값이 입력되어 있지 않다면 그곳으로 포커싱 해줍니다. 또한, captcha값이 일치하지 않으면 captcha 텍스트 상자로 포커싱 해줍니다. 값들이 모두 들어있고, captcha값이 일치한다면 lv5frm.submit(); 함수가 작동하는 구조입니다. 작동 상태를 보기 위해서 값을 입력하고 submit(제출)을 눌러보았습니다. 매우 느리다는 출력이 반겨주었습니다.. webhacking.kr old-39 이해하기 old-39 페이지는 입력이 가능한 텍스트 상자와 view-source가 제공되어 있습니다. view-source를 확인해 보았습니다. 소스 코드 분석 사용자에 의해 입력되는 값 id에 대하여 여러 작업을 거치는 것을 알 수 있습니다. str_replace() 함수에 의해 \\이나 작은따옴표(')가 값으로 들어온다면 각각 공란과 작은따옴표 2개 ''가 됩니다. substr() 함수는 문자열의 일부분을 추출하는 역할을 합니다. substr($_POST['id'], 0, 15);는 $_POST['id']에 저장된 문자열에서 인덱스 0부터 15자리를 추출합니다. 데이터베이스에서 값을 가져오는 조건을 보겠습니다. length(id) < 14 and id = ' {$_POST['id' ]} 사용자가 입력한 값의 .. webhacking.kr old-26 이해하기 old-26 페이지에서는 view-source만 제공하고 있는 것 같습니다. view-source 페이지를 확인해 보았습니다. preg_match() 함수를 통해서 admin 값이 필터링되는 것을 확인할 수 있습니다. 직접 id에 admin을 입력해 보았습니다. 필터링 된 결과로 "no!"가 출력되는 것을 알 수 있습니다. 입력된 값이 urldecode()함수를 통해서 복호화 작업이 이루어지고, 복호화된 값이 admin이라면 문제가 해결되는 구조임을 알 수 있습니다. 복호화된 값으로 admin을 가지는 값을 만들어 내는 것이 이번 문제의 해결점입니다. urldecode() 함수는 복호화를 하는 함수이며 암호화(인코딩)를 하는 함수는 urlencode()입니다. codepad.org에서 php 코드를 만들.. webhacking.kr old-27 이해하기 이번 문제도 SQL INJECTION 이름을 가진 문제입니다. view-source를 확인해 보겠습니다. 소스 코드 분석 php 코드가 적혀있습니다. $_GET['no']는 텍스트 박스에 입력한 값에 해당합니다. preg_match()함수를 통해서 $_GET['no']에 입력된 특정한 값을 필터링하는 것을 확인할 수 있습니다. 필터링되는 문자는 #, select, (, 공백 문자, limit, =, 16진수(0x)입니다. 문제 유형은 이전에 old-18 페이지의 문제와 유사합니다. 다만, 이번에 입력되는 값이 들어가는 no의 부분이 no=({$_GET['no']}) 형태입니다. 입력한 값이 admin이라면 no=(admin) 형태로 괄호에 들어간 값으로 받아들이는 것입니다. old-18 페이지도 SQL .. webhacking.kr old-38 이해하기 old-38 페이지는 "LOG INJECTION"이라는 이름을 가지고 텍스트 박스와 클릭 버튼이 있습니다. 자연스럽게 admin을 당당히 입력해 보았습니다. admin이 아니라는 말이 등장했습니다. ㅠㅠ; 페이지 소스 코드를 확인해 보았습니다. form 태그를 확인해 보면 post 입력 방식을 사용하고 있음을 알 수 있습니다. php에서 파라미터 전달 방식으로 GET 입력과 POST 입력 방식이 있습니다. GET 입력 방식은 ?를 시작으로 URL에 값이 직접 나타나는 형태를 가집니다. 이와 다르게 POST 입력은 페이지 자체에 파라미터가 전달되는 형태입니다. 위의 문장에서 post 방식에 의해 index.php 안에 파라미터 값도 같이 전달되는 것입니다. 그래서 파라미터 값이 URL 상에서 보이지 않습니.. webhacking.kr old-25 이해하기 old-25 페이지는 php와 관련된 문제라고 되어있었습니다. 페이지의 첫 화면은 hello.php 파일을 연 상태임을 알 수 있었습니다. hello world가 회색 텍스트 박스에 표시되고 있었습니다. 페이지 소스코드를 열어보아도 특별히 알 수 있는 내용은 없었습니다. 그래서 php 파일들을 URL에 입력하여 하나씩 열어보았습니다. flag.php 파일을 열어보면 "FLAG is in the code"라는 출력을 확인할 수 있습니다. 해당 코드 안에 있다는 의미를 스스로 이해하기엔 지식이 부족했습니다. 그래서 검색을 통해 php를 이용한 공격 예제 중 File Inclusion 취약점을 알았습니다. php 구성의 웹페이지에서 파라미터 값이 정확히 필터링되지 않는 취약점을 이용한 방법입니다. php를 통.. webhacking.kr old-19 이해하기 old-19 페이지의 시작 화면입니다. 처음부터 값이 적혀 있어서 당당히 제출을 눌렀습니다. admin이 아니라는 결과가 나옵니다. 무언가 잘못된 것 같습니다. 다른 값을 집어넣으면 hello와 함께 값이 출력됩니다. 이 상태에서 logout은 되지 않았습니다. logout이 되지 않는 것은 로그인 과정에서 형성된 쿠키값이 유지되고 있었기 때문입니다. 값을 삭제하면 다시 처음 화면으로 돌아옵니다. 다른 값들을 집어넣어도 그대로 뜨는 것으로 보아 admin 자체에 주문을 걸어놓은 것 같습니다. admin이라는 값을 그대로 입력하면 필터링에 걸려서 오류를 출력시키는 것 같았습니다. 페이지 소스 코드를 보아도 입력 값의 최대(maxlength)는 5로 정해졌기 때문에 입력 상자를 건드리는 것으로는 해결이 불가.. 이전 1 ··· 8 9 10 11 12 13 14 ··· 22 다음