webhacking.kr

webhacking.kr

[webhacking.kr] old-27

문제분석 & 풀이sql injection 문제다. ○ 코드 분석1. no 파라미터를 통해 값을 전송받고 있다.2. no는 # , select , ( , 공백 , limit , = , 0x 중 하나라도 있을시 hack으로 간주한다.3. sql 쿼리를 실행해서 결과로 나온 id값이 "admin"이면 문제가 해결된다. 필터링을 우회하는 인젝션 쿼리는 다음과 같다.# Injection Query0) or id like 'admin'--# Complete Queryselect id from chall27 where id='guest' and no=(0) or id like 'admin'-- ) where문을 보면 or 를 이용해서 id='guest' 를 무효시키고 id가 'admin'인 값을 찾고 있다. 여기서 ..

webhacking.kr

[webhacking.kr] old-26

문제분석 & 풀이1. id 파라미터를 이용해 값을 전송받으면 id 파라미터에 "admin"이 들어가면 hack으로 간주한다.2. id 값을 url 디코딩하여 id 변수에 저장한다.3. id 값이 "admin"이면 클리어 "admin" 은 정규표현식 필터링에 걸리기 때문에 "admin"을 url 인코딩해서 보내도 필터링에 걸린다. 원래 url 인코딩이 된 값도 서버에서는 알아서 해석하기 때문에 자동으로 디코딩이 된다. 이 점을 이용하면, "admin"을 2번 url 인코딩해서 서버로 전송하면 자동으로 디코딩 한번되고 이후 3번 줄에서 한번 더 디코딩을 해서 총 2번의 디코딩을 거쳐 id값이 "admin"이 될 수 있다. 정규표현식에 의한 필터링 검사를 2번째 디코딩 수행 전에 하기 때문에, id가 "adm..

webhacking.kr

[webhacking.kr] old-25 (PHP-wrapper)

문제분석 & 풀이ls -al 실행 결과가 화면에 출력됐다. file 파라미터로 파일명을 전송하고 실행결과를 출력한다. [그림]은 hello.php를 실행한 결과다.  파일 중에는 flag.php가 있고 file 파라미터로 flag를 전송했다. "FLAG is in the code"라고 나온다. flag는 flag.php 코드로 정의된 것 같다. 그렇다면 flag.php의 실행결과가 아닌 코드를 봐야한다.  include("{$file}.php")문제에서 위와 같이 include한다고 판단할 수 있다. LFI를 시도해서 flag.php에 접근할 수는 있지만 flag.php를 실행한 결과만 출력될 뿐이고 코드를 볼 수는 없다. 그렇다면 어떻게 해야 flag.php 코드를 볼 수 있을까?→ PHP wrappe..

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
'webhacking.kr' 카테고리의 글 목록 (6 Page)