본문 바로가기

Webhacking

(9)
웹 해킹 Webhacking 문제 풀이 10번 if(this.stthis.style.left=='1600px' --> 이것을 보고 1600이 아닌 position:relative로 인해서 1599로 해야 합니다. this.style.left,10)+1+'px'; --> this.style.left,10)+1599+'px'; 변조하면 쉽게 문제을 풀 수 있습니다.
웹 해킹 Webhacking 문제 풀이 8번 etenv() 내장함수로, 인자의 값에 따라 해당되는 환경변수 값을 알려주는 함수입니다. $db = dbconnect(); --> SQL문제와 관련있다고 생각할 수 있습니다. $_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 = Mozilla4.0(compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705 User_Agent와 SQLI가 관련있다고 생각 할 수 있습니다. from을 입력하면 페이지 소스에서 from, i가 필터링이 있습니다. from와 i가 있으면 Access Denied!가 출력하게 됩니다. 페이지 소스을 잘 해석하면 ck가 없다면 해당하는 query문을 하도록 실행합니다. insert into ch..
웹 해킹 Webhacking 문제 풀이 7번 preg_match(바꾸는 값, 값) --> 문자 대처 하는 함수 정규표현식 해석하면 2로 시작하는 것 or - or + or _ or \s or * or /i로 시작하는 or from --> 해당하는 값은 올 수가 없습니다. data가 2이면 문제을 해결 할 수 있습니다. 정규표현식에 영향 받지 않는 수학 식 5%3 괄호을 보고 union을 이용한 SQL_Injection을 생각 할 수 있습니다. 0)union(select(5%3) 소스 코드에 넣어 보면 rand 값이 1인 경우에서 문제을 해결 할 수 있습니다. select lv from cahll7 where lv=(0)union(select(5%3)) rand 값이 1일때 까지 계속 값을 넣어 주면 해결 할 수 있습니다.
웹 해킹 Webhacking 문제 풀이 6번 if($decode_id=="admin" && $decode_pw=="nimda" user의 쿠키값이 decode규칙에맞게 바꾼뒤 base64로 20번 decoding해서 나온 값이 admin password의 쿠키값이 decode규칙에맞게 바꾼뒤 base64로 20번 decoding해서 나온 값이 nimda admin,nimda을 20번 base64로 인코딩후 페이지소스에 있는 규칙에 맞게 decode하면 해결할 수 있습니다. import base64 id = "admin" id = id.encode("UTF-8") pw = "nimda" pw = pw.encode("UTF-8") for i in range(1,20): id = base64.b64encode(id) pw = base64.b64encod..
웹 해킹 Webhacking 문제 풀이 5번 location.href='mem/login.php' mem/login.php로 설정했습니다. 혹시나 하는 생각으로 mem 디렉터리가 있나 호기심으로 들어갔습니다. 웹 구조을 알 수 있습니다. join.php 디렉터리가 있는 것을 알 수 있습니다. bye라는 문구와 알림 창을 볼 수 있습니다. join.php에서 웹 소스코드 봐야 합니다. 소스 코드가 길어서 요약했습니다. 해당 소스을 보면 소스을 보고 유추해보면 로그인 폼을 완성시키고 아이디 폼에 길이 20글자 제한하여 입력 할 수 있고 비밀번호 폼을 만들어라 라는 소스 코드 입니다. 이에 login.php에서 소스코드을 join.php로 데이터을 보내도록 합니다. SQL 공백문자 취약점을 이용해서 admin계정을 만들려고 합니다. join.php에서 ..
웹 해킹 Webhacking 문제 풀이 4번 소스 분석 isset( $var ); $var가 설정되었는지 확인하고, 설정되었으면 TRUE, 설정되지 않았으면 FALSE를 반환합니다. $hash = rand(10000000,99999999)."salt_for_you"; rand(시작숫자, 끝 숫자) --> 10000000 ~ 99999999 중에서 숫자 한개 뽑겠습니다. 예로10000001로하겠습니다 $hash = 10000001salt_for_you $hash값을 500번 sha1로 암호화 합니다. 레인보우 테이블은 해시 함수(MD5, SHA-1, SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 왕창 저장한 표이다(출처: 나무 위키) 레인보우 테이블을 만들어 봅시다. 예시)hash = 10128152salt_for_you 500번 sha1인코딩..
웹 해킹 Webhacking 문제 풀이 3번 1. 네모로직으로 보이는 문제가 보입니다. 풀어 줍니다. 2. solved누르고 다음 페이지에서 해당 페이지 소스을 볼 수 있습니다. value 중요한 것 같아 2진수 --> 10진수 대입하니 실패 했습니다. 3. enter your name for log 입력 창에 SQL_Injection 가능한지 알아 보기 위해서 여러 Injection 공격을 합니다. 4. name: " 이 부분" SQL_Injection이 통하지 않습니다. 그 다음에 보이는 answer에 SQL_injection이 통하는지 봅니다. 5. 성공 참고 자료 SQL_Injection 기본 입력 양식 동적 쿼리와 정적쿼리 있습니다. 아래에 해당하는 공격 기법은 동적 쿼리에 대한 취약점을 이용해서 해당 정보을 취득하는 방법입니다. 동적 쿼..
웹 해킹 Webhacking 문제 풀이 2번 1. 주석에 년도,월,일, 시간을 볼 수 있습니다. 또한 admin.php 사이트가 있는 것을 확인 할 수 있습니다. 2. 쿠키 값 중 time이라는 쿠키 값을 볼 수 있습니다. 3. time 쿠키 값을 변경으로 주석에 있는 년,월,일 시간일 변경된 것을 볼 수 있습니다. 참인 값이면 --> 2070-01-01 09:00:01 거짓인 값이면 --> 2070-01-01 09:00:00 4. 참일때 와 거짓일 때 나오는 값이 달라서 Bind_SQL_Injection을 이용 할 수 있습니다. (select count(table_name) from information_schema.tables where table_schema=database()) --> 테이블 수 찾기 (select length(table_n..
웹 해킹 Webhacking 문제 풀이 1번 1. view-source 클릭 합니다. 2. view-source 소스 코드입니다. if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1; if($_COOKIE['user_lv']>=6) $_COOKIE['user_lv']=1; if($_COOKIE['user_lv']>5) solve(1); echo " level : {$_COOKIE['user_lv']}"; 3. editthisCookie로 user_lv 쿠키 값을 5.5.로 변경했습니다. 코드 분석 user_lv의 이름을 가진 쿠키 값이 6 보다 크거나 같으면 user_lv 쿠키 값을 1로 설정합니다. user_lv의 이름을 가진 쿠키 값이 5 보다 크면 해당 문제을 풀 수 있습니다. 참고 자료 ..