Webhacking.kr 46번
·
Webhacking.kr
GET 메소드로 전송되는 lv 파마리터 값에서 공백,'/', '*', '%' 문자가 들어오면 삭제해 버린다. 그리고 "union, select, from, challenge, 0x, limit, cash" 문자열이 들어오면 아예 오류가 발생된다. 그리고 $q 변수에 lv 파라미터 값과 함께 실행되는 쿼리의 값이 저장되는데, 쿼리 결과 내 id 값이 "admin" 일 때만 문제가 클리어 된다. 공백 우회는 %0a를 사용하면 된다. 위에서 보이는 0b0110000101100100011011010110100101101110 정수값은 "admin" 문자열을 2진수로 나타나낸 것이다. (이상하게 admin 을 입력하면 클리어가 안됨, 필터링 하는듯) 위 쿼리에서는 lv 값이 1로 세팅되어 "zzibong" id ..
Webhacking.kr 45번
·
Webhacking.kr
"mb_convert_encoding" 함수를 통해 GET[id] 값을 입력 받음 사용자가 입력한 id, pw 값을 이용하여 쿼리를 실행하고 결과가 'admin'인 경우에만 클리어 됨 * mb_convert_encoding - 문자열의 인코딩 방식을 변경하는 PHP 함수 - 인코딩 과정에서 "magic_quotes_gpc" 옵션을 우회할 수 있는 취약점 존재 * magic_quotes_gpc - 싱글 쿼터('), 더블쿼터("), 백슬래시(\)와 같은 문자가 입력되면 앞쪽에 슬래시(/)을 이스케이프(연결)하여 문자열로 인식 시킴 - ' => \' ( %27 => %5c%27 ) * mb_convert_encoding 함수로 문자 인코딩 방식 변경 - %al%5c 와 같은 문자는 한 개의 문자로 인식 - %..
Webhacking.kr 44번
·
Webhacking.kr
우선 44번 문제는 "Command Injection" 문제인 것을 기억하자. name 입력창에 "wraith" 입력하면 끝에 'h'가 잘린다. (5글자까지 입력 가능) 그리고 "Make" 버튼을 누르면 "hello wrait" 가 나타난다. 아마 입력받은 값과 "echo" 명령어를 합쳐서 다시 출력해주는 것으로 추정된다. root@shell:# echo "test" 일반적으로 리눅스에서 어떤 명령어 뒤에 ';' 를 입력하고 또 다른 명령어를 입력하면 명령어가 2번 실행된다. root@shell:# ls;ls - 이렇게 "ls;ls"를 입력하면 "ls" 명령어가 2번 실행됨 ";ls"를 입력하면 아무것도 출력되지 않는다. ";test"를 입력하면 test가 출력된다. 아마 ';', "ls" 문자열을 필터..