Webhacking.kr 51번
·
Webhacking.kr
입력받은 pw를 md5 함수를 이용하여 $input_pw 변수에 저장 (md5 함수 2번째 인자는 'true') * php에서 md5 함수를 사용할 때, 두번째 인자를 'true'로 설정하면 md5 해쉬 결과를 바이너리 형태로 반환함 이 때 반환된 바이너리는 magic_quotes_gpc 옵션에 영향을 받지 않음 따라서 조건을 참으로 만들어주는 바이너리를 얻으면 문제 클리어 * 그러나 'or 1=1 # 과 같은 인젝션 쿼리가 반환되는 바이너리는 찾기 힘듬 따라서 mysql 문자열 처리 방식을 이용하여 간단한 쿼리를 사용 * 두 개의 다른 문자 비교시 거짓 반환 'a' = 'b' => 거짓, 0 반환 * 세 개의 다른 문자 비교시 참 반환 'a' = 'b' = 'c' => 참, 1 반환 'a' = 'b' ..
Webhacking.kr 50번
·
Webhacking.kr
GET id 변수에서 "mb_convert_encodin" 함수를 사용함 (인젝션 포인터) 'from', 괄호, 비교구문,공백 등 필터링 id 변수에 "union" 포함 시 종료 사용자가 입력한 id,pw를 기반으로 해당 유저 정보를 조회 함 조회된 값이 '3'일 경우 문제풀이 성공 * mb_convert_encoding 이용하여 문제 클리어 * 참고로 테이블에는 lv3 유저가 존재하지 않음 * LIKE 구문으로 테스트 가능 (%bf%27||lv%0alike%0a3) * 기타 문자열 함수는 괄호 필터링으로 인해 사용 불가 * 따라서 '3' 이라는 데이터를 생성하기 위해 union 사용 * 사용자가 입력한 패스워드는 md5 함수 인자로 사용 * 값 변조 불가 ( 모든 입력 값이 32바이트 16진수로 변환 ..
Webhacking.kr 49번
·
Webhacking.kr
"union, from, select, or, and, (), limit, (,), /, by, desc, asc, cash, 공백, %, %09" 문자열이 필터링 된다. 그리고 $q 변수에 GET 메소드로 전송되는 lv 파라미터 값을 포함하는 쿼리의 실행 결과가 나타난다. "or" 필터링을 " || " 로 우회할 수 있다. (소스에는 안 보이는데 admin 문자열도 필터링 하는듯) 위와 같이 입력하면 lv 값이 '1'인 "zzibong" id 값이 리턴된다. 뒤의 0x61646d696e hex 값은 "admin"을 의미한다. 따라서 lv 값을 조절하여 값이 리턴되지 않게 하고 (| |) 연산자를 이용해서 id like admin 결과와 함친다.