전체 글

webhacking.kr

[webhacking.kr] old-24 (extract)

문제분석 & 풀이문제에 접속하니 클라이언트 IP 주소 , 클라이언트 에이전트 정보가 나와있다. 소스도 주어져있으니 소스를 봐보도록하자. 소스를 분석하면 다음과 같다.1. extract() 를 통해 $_SERVER , $_COOKIE 정보를 변수로 선언한다. (2,3번)2. $ip 변수에 클라이언트 ip, $agent 변수에 클라이언트 에이전트 정보를 넣는다. (4,5번)3. 클라이언트 ip는 여러번의 replace()를 통해 값을 변환하고 $ip변수에 넣는다. (6~12번)4. 최종적으로 $ip 변수의 값이 "127.0.0.1"이면 문제가 해결된다. 결론적으로 $ip에 들어갈 값즉, 클라이언트의 ip값을 "127.0.0.1" 만들어야 한다는 것인데.... 이것은 불가능해보인다. 그렇다면 어떻게 $ip값을..

webhacking.kr

[webhacking.kr] old-23 (XSS)

문제분석 & 풀이페이지에 접속하니 빈칸과 함께 미션이 주어져있다. 미션 그대로 스크립트 태그를 넣어 제출하면 "no hack"이라고 뜬다. url 부분을 보니 code 라는 파라미터를 통해 값이 전달되고 있다. 아마 서버쪽에서 필터링을 하는 것 같은데 어떻게 우회할 수 있을까 고민을 해봤다. 아스키코드표를 보면 0x00이 NULL 값이 것을 알 수 있는데 code 파라미터를 통해 명령어를 전송하기 때문에 명령어 사이사이에 NULL값을 넣어서 전송하면 우회되서 필터링에 걸리지 않고 사이사이에 넣은 값이 NULL 이기 때문에 명령어는 정상적으로 실행되지않을까? 라고 생각했다. 위 사진처럼 스크립트 태그 명령어 사이마다 NULL(%00)을 넣고 값을 전송해봤다. 명령어가 정상적으로 실행됐다! 클리어!!

webhacking.kr

[webhacking.kr] old-22

문제분석 & 풀이admin으로 로그인을 하라는 미션이 주어진다. join을 통해 계정을 생성할 수 있다.  guest / guest 으로 계정을 생성하고 로그인을 해보자. [그림]처럼 pw가 해싱된 상태로 출력된다. 해싱된 pw 길이는 32자리로 MD5로 해싱됐다고 추측할 수 있다. MD5가 맞는지 확인해보기 위해서 "guest"를 MD5로 해싱해서 값을 비교했다.  하지만 결과는 달랐다. "guest" + salt → 암호값아마도 단순하게 "guest"를 해싱한게 아니라 salt 값이 추가된 상태로 해싱된 것 같다. 해싱 결과를 복호화하려면 레인보우 테이블을 이용하는 방법 밖에 없다. ○ 레인보우 테이블특정 알고리즘(ex. MD5)에 대한 평문과 암호문을 테이블 형태로 모두 기록해서 암호문에서 평문으로..

keyme
keyme - Security Study