Webhacking.kr 56번
·
Webhacking.kr
56번 문제 초기 화면으로, "readme" 글을 읽으려고 하면 "Access Denied"가 뜨면서 읽어지지 않고,"hi~" 글은 읽을 수 있다. 삽질하다가 위와 같이 "_" 글자를 3번 입력하여 검색하면 모든 글이 보여진다. "_" 글자를 4번 입력하면 "hi~" 글이 사라진다. * 이번 문제는 SQL 인젝션에서 "LIKE"와 함께 사용되는 정규식을 이용하는 것으로써, "_" 글자는 한 글자를 의미한다. * 즉 "hi~" 게시물의 내용은 제목과 동일한 ("hi~") 3글자 이기 때문에 "____" 4번 입력하면 검색 되지 않는다. "_" 글자를 6번 입력하여 검색하면 보여지고, 7번 입력하면 보여지지 않는다. 즉, 해당 게시물의 내용은 총 6글자이다.
Webhacking.kr 55번
·
Webhacking.kr
랭크 페이지 확인 랭크 페이지는 위 사진과 같이 이루어 짐 랭크 페이지 소스를 확인해 보면 위와 같이 힌트가 존재 참 조건 입력 = "localhost / 0" 리턴 거짓 조건 입력 = "//" 리턴 * scroe 파라미터가 인젝션 포인터 * 출력 값을 통해 참/거짓 구분 가능 * information_schema 필터링 * procedure analyse() 사용 * LIMIT 사용하여 테이블 / 컬럼명 확인 가능 * procedure analyse() => 테이블명, 첫 번째 컬럼 리턴 * limit 1,1 procedure analyse() => 두 번째 컬럼 리턴 * limit 2,1 procedure analyse() => 세 번째 컬럼 리턴 패스워드 컬럼명을 알아내고 블라인드 인젝션 스크립트를..
Webhacking.kr 54번
·
Webhacking.kr
Password is 문자열이 나타나고 한 글자씩 빠르게 나타났다가 사라진다. - Password is b - Password is 8 . . . . . . 엄청 좋은 눈썰미로 전부 받아 적어도 문제가 풀리긴 한다. 크롬 네트워크 메뉴를 보면 ?m=0 ~ ?m=31 부터 한글자씩 전달되는 것을 볼 수 있다. ?m=0 일 때의 값이 'b' 인것을 보아 아마 Password를 의미하는 듯 하다.
Webhacking.kr 53번
·
Webhacking.kr
히든 테이블이 존재하고, val 파라미터가 인젝션 포인트다. union, select문이 필터링 된 상황에서는 프로시져 analyse 함수를 통해 현재 실행중인 쿼리문의 정보를 조회할 수 있다.
Webhacking.kr 52번
·
Webhacking.kr
$id 변수에 GET 메소드로 넘어온 id 파라미터 값이 대입된다. id 파라미터 값을 다음과 같이 입력한다. URL 인코딩 : id=wraith%0a%0dSet-Cookie:%20id=wraith UIRL 디코딩 : id=wraith Set-Cookie: id=wraith %0a%0d는 개행을 의믜한다 ('\n'와 동일)
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 결과와 함친다.
Webhacking.kr 48번
·
Webhacking.kr
"webhackingkr.hwp" 파일을 업로드 하려고 하면 파일명 길이 제한이 걸린다. 파일명을 "123" 으로 만들고 업로드를 하면 성공적으로 업로드 되고, 업로드 된 파일의 경로와 삭제 버튼을 볼 수 있다. 내용이 없기 때문에 당연히 "null"이 나타난다. "Delete" 버튼을 눌러서 파일을 지운 뒤, 다시 한번 해당 파일 경로 (http://webhacking.kr~~~~/upload/123) 를 누르면 404 not found가 나타난다. 아마 "r m 파일명" 명령어를 이용해서 파일을 지우는 듯 하다. 즉, 공격 포인트는 바로 "Delete" 버튼을 눌렀을 때 발생되는 명령어 부분이다. 바로 명령어 인젝션! 파일명을 ";ls"로 만들고 업로드 한다. 당연히 파일 내용은 없다. 지우는 순간 ..
Webhacking.kr 47번
·
Webhacking.kr
소스를 보면 POST 메소드로 전송하는 email 파라미터 부분이 이메일 내 "FROM" 에 들어간다. "test"를 입력한다 email=test 패킷이 날라가게 된다. 그렇게 되면 test 라는 메일이 admin@webhacking.kr 메일에 flag가 포함된 이메일이 전송되게 된다. 하지만 flag 이메일이 본인 이메일에 전송되야 문제가 풀리게 된다. 문제 클리어를 위해 이메일에서 사용되는 태그를 이용한다. "cc" 태그는 이메일에서 "참조"를 의미한다. 위 사진처럼 "email=test \n cc:bob@gmail.com" 처럼 입력하면 메일 헤더 내에 "cc:bob@gmail.com" 주소가 포함되어 "bob@gmail.com" 주소로 flag가 담긴 이메일이 전송 될 것이다.