Wargame/webhacking.kr (old)
-
[Webhacking.kr] 61번 풀이Wargame/webhacking.kr (old) 2019. 5. 11. 03:57
소스를 해석해보면,id 값이 존재하지 않으면 id 값은 guest로 초기화되고, id 값은 get방식으로 받는다.id 값은 eregi함수에 의해 (, ), union등의 문자열이 필터링되고, 18자로 길이도 제한되어 있다.쿼리문의 결과값이 admin이면 문제가 풀린다. eregi("정규 표현식", "대상 문자열") // 대소문자 구분 xereg("정규 표현식", "대상 문자열") //대소문자 구분 o대상 문자열이 정규 표현식과 일치하면 True, 일치하지 않으면 False 반환 strlen()문자열 길이 구하는 함수 쿼리문을 보면 id 값은 select 뒤, 칼럼명이 들어가는 자리에 위치한다.id 값을 기준으로 내림차순으로 제일 첫 번째 줄을 출력시켜준다. id 값으로 칼럼 명인 id를 입력하였더니,, ..
-
[Webhacking.kr] 60번 풀이Wargame/webhacking.kr (old) 2019. 5. 11. 03:42
접근이 거부되었다.소스를 보자. sleep()입력된 초 만큼 소스 실행 지연 unlink()웹 서버에 존재하는 파일 삭제 소스를 해석해보면, 1초 후 소스가 실행되는데 쿠키 PHPSESSID의 값에 숫자가 존재하면 접근이 거부된다.readme 디렉터리에 \$_SESSION[id].txt라는 파일을 생성하고, 파일 내용으로 $_SESSION[id]를 적는다.만약, 접근한 클라이언트의 IP주소가 127.0.0.1이 아니면 1초 후 생성한 파일을 삭제한다. get방식으로 auth 값을 입력해주었을 경우에는 readme/\$_SESSION[id].txt 파일의 내용을result 변수에 저장하고, result의 값이 $_SESSION[id]와 같으면 Done!을 페이지에 띄우고,\$_SESSION[id].txt ..
-
[Webhacking.kr] 59번 풀이Wargame/webhacking.kr (old) 2019. 5. 11. 03:08
소스를 보자. 로그인하여 나온 lv값이 admin이면 문제가 풀린다.Join 부분의 insert 문을 보면 lv값을 guest로 지정해준다. phone은 길이가 20미만으로 제한되어 있고, eregi 함수에 의해 몇몇 문자열이 필터링되어 있다.id값으로는 admin이 필터링되어 있다.insert문에서 phone의 값은 '로 묶여있지 않은 것을 보니 문자열이 아닌 정수형 값이라는 것을 추측할 수 있다. 우선 Join하고,, 로그인하였다. lv의 값은 guest이다. lv값에 다른 값이 나올 수 있는 값들을 넣어보았다. insert into c59 values('inid',1,1)--',1,'guest') id : inid, phone : 1, lv : 1 일 것으로 예상하였으나, 아니었다.id 값은 싱글 ..
-
[Webhacking.kr] 58번 풀이Wargame/webhacking.kr (old) 2019. 5. 11. 01:13
아무 비밀번호나 입력해보았더니 Wrong이 나온다.소스를 보자. kk.js 파일이 있는 script문이 있다. kk.js를 클릭하여 접근해보았다.(.js : 외부 자바스크립트 파일) 짧은 코드가 있다.코드를 해석해보면, kk변수에 URL 주소값의 10번째 글자부터 4개를 잘라 넣어준다.(0부터 시작) http://webhacking.kr/challenge/web/web-35/kk.js 스크롤을 내려보면 아래에 한줄이 더 있다. kk2.js 파일로 접근해보자. 변수 kk에 hackme.swf 문자열을 넣어주고, embed 태그를 설정해준다. embed 태그mp3, asf, wma, wmv, swf 등의 동영상 관련 확장자를 가진 파일을 재생시켜주는 태그 hackme.swf 파일로 접근해보자. http://..
-
[Webhacking.kr] 57번 풀이Wargame/webhacking.kr (old) 2019. 5. 9. 13:23
secret key를 알아내서 입력하는 문제인 것 같다. 소스를 보자. pw가 \$secret_key와 같으면 문제가 풀리고 se 문자열이 from, union등이 필터링되어 있다. insert문을 이용하여 데이터가 저장된다. 처음에는 insert문을 이용하여 secret 키의 값을 조작해서 푸는 건줄 알았으나, 잘보면 \$secret_key는 값이 초기화되는 채로 pw와 값을 비교하기때문에 \$secret_key는 조작할 수 없다. \$secret_key의 값을 알아내야한다. 일단 페이지의 반응을 보자. message에 값을 입력해주면 get 방식으로 msg와 se의 값이 전송된다. se는 secret의 라디오 버튼 값이다. (yes : 1, no : 0) 값이 올바르게 전송되면 Done이 출력된다. ..