Webhacking.kr 41번
·
Webhacking.kr
웹 페이지 소스를 보면 위와 같은데 핵심은 "copy" 함수임 해당 함수는 파일명을 입력 받아 올리는데, 문제는 파일명이 공백이면 오류가 나게 되어 $hidden_dir 변수에 저장된 히든 폴더가 오류 메시지에 나타남 (물론 오류 처리를 제대로 하면 사용자에게 안 보여짐) 프록시를 이용하여 위와 같이 파일명을 ">" 변경하면 웹 페이지 소스의 필터링에 의해 공백으로 치환됨 파일명이 빈 파일을 업로드 하면 위와 같이 히든 폴더가 출려됨 원래 저 폴더를(dkaneh~~~gggg) http://webhacking.kr/challenge/web/web-19/dkaneh~~~gggg 이렇게 요청하면 풀렸는데 최근에 서버가 다운되면서 복구 되는 과정에 뭔 오류가 생겼는지 안 풀려지게 됨...
Webhacking.kr 40번
·
Webhacking.kr
위 사진처럼 기본 값으로 로그인을 시도 URL 부분에 입력한 값이 나타남 URL 값 입력이면 인젝션 문제일 확률이 높으니 테스트를 위해 위 사진처럼 조건을 참으로 만들면 "Success - guest" 나타남 조건을 거짓으로 만들면 "Failure" 나타남 "no" 값을 2로 주면 "admin" 모드가 나타남 블라인드 인젝션을 위해 pw 컬럼의 길이를 우선 알아내기 위해 한땀 한땀 진행하다보면 "10" 입력 시 "admin"이 나타남(참 조건) 이를 이용하여 첨부된 스크립트 파일을 실행하면 위 사진처럼 길이와, 비밀번호가 나타남
Webhacking.kr 39번
·
Webhacking.kr
(\) 문자를 지운다. (') 문자를 ('') 으로 치환한다. substr 함수를 통해 15번째 글자까지 자른다. 문제가 발생하는 부분은 쿼리 부분이다. 잘 보면 ("select ~~~ id='$_POST[id]") 로 작성되어 있다. 끝 부분에 싱글 쿼테이션이 하나 빠져 있어서 무조건 오류가 난다. 오류가 난다고 입력 부분에 (')을 입력해 버리면 str_replace 함수 때문에 ('') 로 변경되서 똑같이 오류가 난다. 핵심은 바로 substr 함수를 통해 15번째 글자까지 자른다는 것이다. " admin(공백 9개)' " 를 입력한다. 입력값 입력값 길이 치환값 치환값 길이 admin(공백 8개)' 14글자 admin(공백 8개)'' 15글자 admin(공백 9개)' 15글자 admin(공백 9개..
Webhacking.kr 38번
·
Webhacking.kr
bob 를 입력 후 로그인을 한다. 로그인이 누르면 로그가 보여지는데 "IP:입력값" 형식으로 저장된다. 주어진 힌트 "admin" 을 입력하고 로그인을 한다. 로그인이 실패한다. 추론을 해보자, 'bob'를 입력하면 "58.xxx.xx.xxx:bob" 라고 로그에 기록이 된다. 그러면 로그에 '58.xxx.xxx.xx:admin'
Webhacking.kr 37번
·
Webhacking.kr
"tmp-xxxxxxxx" 형태의 문자열이 꽤 많이 보이고, 아래쪽에는 "127.0.0.1:777" 문자열과 파일 업로드 기능을 볼 수 있다. time() 함수는 1970년 1월 1월 00시 00분 00초를 기준으로 현재 초까지의 시간을 초로 나타낸다. 해당 초가 $time 변수에 저장된다. 그리고 $f 변수에는 tmp/tmp-$time 이라는 파일명을 쓰기 모드로 연다. 파일을 열고 "127.0.0.1" 문자열을 작선하고 닫는다. $fck 변수는 크게 중요하지 않은 부분이니 넘어간다. 사용자가 업로드한 파일명에 '', '.', ' ' 문자가 포함되면 해당 문자를 삭제한다. tmp 디렉토리 이하에서 업로드 된 파일명을 쓰기 모드로 열고 클라이언트의 공인 IP를 작성하고 닫는다. $ck 변수에 파일 객체를..
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"가 된다. 수동으로 투표하고, 쿠키 값를 통..