문제풀이
webhacking.kr Level 47 문제풀이
Level 47 email값이 POST방식 일 때 mail함수가 실행된다. mail함수는 ("받는사람 주소", "메일 제목", "메일 내용", "헤더내용(옵션)") 이런 형식으로 되어있다. 그리고 header값에는 우리가 입력할 수 있는 값이 들어가게 된다. 여기서 우리가 입력한 값으로 조작 할 수 있는 것은 header의 값이다. 구글링해보니 mail 함수에서 header값에 참조인을 넣을 수 있다. 즉 받는 사람 이외에 참조인도 메일을 받을 수 있게 되는 것이다. cc: [메일주소] 형식으로 넣어주면 된다. 따라서 우리는 헤더를 header = "From: abcd@naver.com\r\ncc:haks2198@naver.com\r\n" 으로 만들면 된다. \r : %0d\n : %0a abcd@nav..
webhacking.kr Level 38 문제풀이
Level 38 "admin" 문자열을 넣고 'login'버튼을 누르면 "you are not admin "이라는 메시지가 출력된다. "Admin"버튼을 누르면 log파일 내용이 보여지는데, [자신의 IP] : 입력한 값 이 로그에 남게 된다. 그런데 admin이라고 입력한 값은 존재하지 않는다. log [내 아이피]:admin -- 소스를 살펴보니 힌트는 admin이라고 한다. 로그파일에 [IP] : admin 이라고 남기게 되면 문제가 풀릴것 같다는 생각을 했다. \n[자신 아이피]:admin 이렇게 입력하여 로그 파일이에 [자신 아이피]:admin 이렇게 입력 되도록 한 후, admin버튼을 누르니 문제가 풀렸다. 문제는 풀렸지만, 문제 출제 의도를 모르겠다...;;🧐 정답 : \n[자신 아이피]:..
webhacking.kr Level 33 문제풀이
Level 33 Challenge 33-1 get이 "hehe"가 되면 Next라는 하이퍼링크가 생성된다. lv2 페이지로 넘어가면서 또다시 코드가 주어졌다. 이번엔 post방식으로 post1과 post2를 입력받는다. 따라서 개발자 모드를 이용하여 해당 페이지의 소스코드를 수정하였다. 그럼 위와 같이 post방식으로 값을 넘길 수 있게 된다. post에는 "hehe", post2에는 "hehe2"를 넘겨주자. lv3 이번엔 myip값이 REMOTE_ADDR과 같으면 된다. 즉 자신의 ip를 넣으면 된다. lv4 힌트로 위와 같은 숫자가주어졌다. password에 time()으로 받아온 값을 md5로 인코딩한 값이 들어면 될 듯하다. 힌트로 주어지는 값은 현재 시간을 가져오는 것 같다. 페이지를 새로고침..
webhacking.kr Level 32 문제풀이
Level 32 1위부터 625위까지 존재하고 맨 아래부분에 "Join"이라는 버튼이 존재한다. 해당 버튼을 누르면 내 id가 추가 되고 0/100 으로 설정된다. 아이디를 누르게 되면 1이 증가하고 vote_check라는 쿠키값이 "ok"로 설정되어 더이상 투표가 불가능해진다. 따라서 fiddler에서 투표하는 패킷을 캡쳐하여 "Reissue Sequentially"를 100번 수행하여 100으로 만들었다.
webhacking.kr Level 31 문제풀이
Level 31 $port=rand(10000,10100); $socket=fsockopen("$_GET[server]","$port",$errno,$errstr,3) or die("error : $errstr"); port를 10000 ~ 10100 중 랜덤 값으로 설정되고 server주소로 해당 포트번호 접속을 시도한다. 칼리에서 nc -nvl -p 10000 로 접속을 기다리고 있으면 랜덤 포트가 10000 됬을 때 password를 날려준다. 공유기를 사용하면 공유기 설정에서 포트포워딩 설정을 해줘야 한다. flag값은 자신의 아이피에 따라 달라진다.
webhacking.kr Level 26 문제풀이
Level 26 index.phps eregi 함수가 뭐지...😢 php에서 http메소드를 통해 들어오는 사용자의 입력 검증 또는 필터링을 통해 eregi와 같은 함수를 사용한다. [+] 추가적으로 "id=admin"이라는 값을 넣었을 때, PHP 5.2+, 5.3+에서는 모두 정상적으로 필터링 되고 있다. 하지만 앞부분에 "%00"의 NULL을 넣으니 PHP 5.3+에서는 필터링을 하지 못했다. 이를 통해 PHP 5.3+ POSIX Regex필터링을 우회할 수 있다. PHP 5.3+에서 위의 문제를 수정하기 위해 POSIX Regex함수들을 PCRE Regex로 변경하는 것을 요구하고 있다. 다시 문제로 돌아와서 해당 문제는 GET 방식으로 id를 받고, 해당 값이 "admin"이면 필터링을 수행한다..
webhacking.kr Level 25 문제풀이
Level 25 url을 보니http://webhacking.kr/challenge/bonus/bonus-5/?file=hello 이렇게 되어 있다.ls -la 명령어 처럼 파일 들이 보여지는데, hello.txt파일이 있다. 하단은 해당 파일 내용이 보여 지는 듯 하다. file 인자에 hello만 넣어도 hello.txt가 실행 된 것으로 보아... 자동으로 .txt 를 붙여 주는 듯하다. 따라서 우리는 password.php를 실행 시켜야 하므로 php이후에 %00을 넣어주면 .txt가 붙어도 의미가 없게 된다. http://webhacking.kr/challenge/bonus/bonus-5/?file=password.php%00 flag : Challenge 25 password is~~nullb..