Webhacking.kr 36번
·
Webhacking.kr
힌트로 vi와 blackout이 주어진다. 해석해보면 "vi를 사용하던 중 정전이 일어나서 프로그램이 꺼졌다" 뭐 그런 소린로 추정할 수 있다. vi 에디터를 사용해본 사람은 알겠지만 예기치 못한 이유로 프로그램이 종료되면 vi 에디터는 현재 경로에 ".파일명.swp" 파일을 생성시킨다. - "index.php" => ".index.php.swp" 비밀번호는 "공인IP + dlseprtmvpdl~~~~" 문자열의 md5 해쉬 결과이다. 파이썬에서 str 변수에 공인IP + dlse~~ 값을 저장하고 md5 해쉬를 뽑아낸다.
Webhacking.kr 35번
·
Webhacking.kr
GET 메소드로 전송되는 "phone" 파라미터 값에 필터링이 적용되어 있다. 그 다음에는 쿼리가 실행되는데, 각 변수의 의미는 아래와 같다. - SESSION[id] = id 값 - SERVER[REMOTE_ADDR] = 클라이언트 공인 IP 값 - GET[phone] = 사용자가 입력한 값 내 환경상 아마 "VALUES ('wraith', '58.xx.xx.xx', 정수_입력값)" 쿼리가 실행될 것이다. 그리고 id 값이 "admin" 이면서 ip 값이 내 공인 IP와 동일한 컬럼이 존재하면 해당 결과에서 id 를 보여줄 것이다. 공인 IP는 바뀌지 않으니 쉽게 말하면 (SESSION[id]) 값이 "admin" 일 때만 클리어 된다는 소리다. 문제는 해당 값은 가입할 때 세팅되고 변경할 수 없다는 ..
Webhacking.kr 34번
·
Webhacking.kr
34번 문제 들어가면 경고창이 나타난다. 딱 봐도 javascript 관련 문제이다. 소스를 보면 뭔가 복잡한데, 아마 난독화가 적용되어 있는 듯하다. 난독화 순서는 다음과 같다. - 원본 코드를 알아 보기 힘들게 변수명을 바꿈 - substring 등을 이용해 문자열을 잘르고 스크립트 실행을 위해 다시 합침 - 스크립트 실행 후 원본 소스에 접근하지 못하게 원본 코드를 초기화 - 초기화 -> 변수명 = '' 초기화 부분을 찾기 위해 검색 기능을 이용하여 ='' 를 찾는다. O00O 변수를 초기화 하고 있다. 크롬 콘솔에 변수명을 입력하면 원본 코드가 나온다.
Webhacking.kr 33번
·
Webhacking.kr
33번은 문제가 꽤 많다. 풀다가 힘들어 죽는줄... GET 메소드로 전송되는 "get" 파라미터의 값이 "hehe"면 다음으로 넘어갈 수 있다. 33-1 클리어 ============================================================================================= 33-1과 비슷하지만 이번에는 POST 메소드로 전송 되는 "post, post2" 파라미터의 값들이 각각 "hehe, hehe2" 일때만 다음으로 넘어갈 수 있다. (사진 안 보이면 클릭) 33-2 문제 페이지에는 POST로 전송하는 별 다른 form이 없으니 크롬 콘솔에서 위와 같이 입력해서 입력 form을 만들어야 한다. 생성된 form 입력 부분에 문제에서 요구하는 값들을..
Webhacking.kr 32번
·
Webhacking.kr
32번 문제 페이지 하단에 "Join" 버튼을 클릭한다. "Join" 버튼을 클릭하면 자신의 id 값이 생성되면서 초기 스코어는 "0/100" 으로 초기화 된다. 그리고 id를 클릭하면 스코어가 +1 된다. 짐작컨데 클리어 조건은 스코어가 100/100 이 되야 하는거 같다. 100점으로 올리기 위해 다시 한번 id를 클릭하면 오류가 나타난다. 아마 투표 중복 체크 여부를 판단하는 듯 한데 이런 경우 다음과 같은 정보를 사용한다. - User-Agent - Public IP - Cookie - Database Data 32번 문제의 경우 "vote_check" 쿠키를 통해 중복 투표 여부를 체크하고 있었다. 투표를 하고 나면 "vote_check" 값이 "ok"가 된다. 수동으로 투표하고, 쿠키 값를 통..
Webhacking.kr 31번
·
Webhacking.kr
$port 변수에 10000 ~ 10100 사이의 임의의 정수값이 대입된다. $socket 변수에는 fsockopen 함수를 통해 GET 메소드로 입력받은 server 파라미터의 IP 주소와, port 변수 값에 소켓 연결을 시도하고, 연결되지 않으면 오류가 발생한다. 우선 공유기해서 DMZ/Twin IP 기능을 이용해서 모든 통신에 대해 넘겨 받는다. 포트 변수에 랜덤하게 100개 정수 중 하나가 대입되니, 컴퓨터에서는 100개의 포트를 열어여 한다. nc와 배치파일(.bat)을 이용하여 100 개의 포트를 연다. 100개의 포트를 열고, 문제 페이지를 다시 요청하면 랜덤한 포트 번호로 연결이 들어온다. 위 사진의 경우 10014 포트 번호로 연결이 들어오고 GET 메소드로 password를 출력했다.
Webhacking.kr 30번
·
Webhacking.kr
어떤 파일을 올려서 푸는 문제인듯 하다. mysql_connect() 함수의 인자값이 없는 경우에는 웹 서버 설정값에서 DB 연결 대상 정보를 가져온다. 28번 문제와 동일하게 ".htaccess" 파일을 통해 웹 서버 설정 값을 변경할 수 있다. 즉, ".htaccess" 파일을 통해 db 연결 대상 정보를 변경해서 개인 서버에 접속하면 된다. 우선 개인 서버에 데이터베이스, 테이블을 만들고 해당 테이블에 'bob' 문자열을 넣는다. ".htaccess" 파일 내용을 위과 같이 설정한다. "host=외부 IP", "user=로그인_유저", "password="유저_비밀번호"
Webhacking.kr 29번
·
Webhacking.kr
파일을 몇개 올려보면 위 사진처럼 "시간 | ip | 파일이름+확장자" 형식으로 나타남 아마도 db에 insert -> select 과정을 거치는 듯 한데 예상되는 insert 쿼리는 다음과 같음 "insert into upload(time,ip,fname) valkues ('$time', '$ip', '$fname'); 일단 사용자가 변조할 수 있는 값은 파일명이기 때문에, 파일명에 해당하는 컬럼이 몇 번째 삽입되는지 확인해야 함 => 웹 프록시를 이용하여 파일명을 변경하면서 테스트 에러 발생 에러 발생 에러 발생하지 않음 그런데 insert -> select 쿼리가 실행되면 우측의 결과쪽에 파일명을 변조한 것에 대한 값이 나타나야 하는데 나타나지 않음 => 아마도 클라이언트의 ip에서 올려진 파일만 ..
Webhacking.kr 28번
·
Webhacking.kr
어떤 파일을 올려서 pw 값을 알아내야 하는 듯한 문제이다. 힌트는 ".htaccess" 파일이라고 한다. index.php 파일을 읽으면 "read me"가 출력된다. 얼핏 보면 읽은거 같지만 실제로는 Apache 데몬에서 php 소스 파일을 해석하고 브라우저에 출력하라고 해석된 부분만 출력하는 것이다. 아마 "index.php" 파일 주석이나 실행되지 않는 곳에 비밀번호가 있을 것이다. 이제 힌트로 제공되었던 ".htaccess" 파일에 대해 알아보자. 이 파일은 APACHE 웹 서버의 분산 설정 파일로, 디렉토리 별로 웹 서버 설정을 변경할 수 있다. - PHP_VALUE [옵션] [값] - 해당 웹 서버 옵션의 값을 변경 - php_value magic_quotes_gpc off - PHP_FLA..
Webhacking.kr 27번
·
Webhacking.kr
GET 메소드로 전송되는 "no" 파라미터 값에 필터링이 걸려있다. 필터링에 통과되면 쿼리에 대입되고 해당 쿼리가 실행된 결과가 $q 변수에 저장된다. 클리어 조건은 id 값이 "admin" 이면 된다. "no" 값을 '1'로 입력하면 guest 가 입력된다. "no" 값을 -1로 입력하면 아무런 결과도 반환되지 않을 것이다. 다음에는 or 를 이용하여 뒤에 조건을 주는데, 이전 사진을 보면 "guest"의 "no" 값이 '1' 인것을 알아냈다. 그렇다면 최소 "admin"의 "no" 값은 1 보다 클것이다. 그리고 주석을 입력하면 뒤의 괄호 ')'를 무시하여야 하는데 주의할 점은 주석 뒤에 공백이 있어야 한다.