[Webhacking.kr] 27번
2021. 5. 17. 23:00
Wargame/Webhacking.kr
SQL Injection 문제 정규표현식에서 필터링 되는 것들은 다음과 같다. # select ( (공백) limit = 0x 이 문제는 18번 문제와 상당히 유사하다. 다만, 정규표현식을 통해 limit 이 필터링 되서 똑같은 방법으로는 되지 않는다. 쿼리를 조작하여 앞의 조건문은 무시하고 원하는 쿼리를 통해 admin 을 갖고 오게끔 해보자. 0) or no like 2-- 이를 삽입하면 쿼리문 전체는 다음과 같이 작동할 것이다. select id from chall27 where id='guest' and no=(0) or no like 2-- )")) or die("query error"); 앞의 where id='guest' and no=(0) 에 해당하는 column은 없으므로 무시되고, 뒤의..
[Webhacking.kr] 26번
2021. 5. 17. 22:27
Wargame/Webhacking.kr
더블 인코딩 문제 GET 방식으로 id 파라미터 값을 받아서 urldecoding 한 후의 값이 "admin"이여야 하고, admin 을 그대로 입력할 시 필터링이 된다. urlencoding 표를 참고해서 admin 을 인코딩 시켰다. admin 을 디코딩 한 값(아래) 를 URL에 파라미터 값으로 넣어준다. %61%64%6d%69%6e 코드를 보면 preg_match 함수가 urldecode 앞쪽에 있어 영향을 받을 일이 없어보이는데 위와 같은 결과가 나타났다. 그렇다면 아마도 urldecode가 되기 이전에 자동적으로 디코딩이 되었기 때문에 preg_match가 동작한 것을 보인다. 웹 서버와 브라우저 사이에서 데이터 교환 시 브라우저는 폼에서 입력받은 데이터를 자동으로 인코딩한 값을 PHP서버로 ..
[Webhacking.kr] 25번
2021. 5. 17. 21:49
Wargame/Webhacking.kr
PHP wrapper 문제 주소창을 보면 get 방식으로 파일명을 받아와 (파일명).php 에 접속하는 것 같다. flag.php 에 접속한 모습 -> "FLAG is in the code" 라고 뜬다. php 코드 내에 flag가 존재하는 것 같다. 그렇지만, 서버 내에 존재하는 php 코드는 노출되지 않는다. 이때 php wrapper 을 이용할 수 있다. PHP는 입출력, 오류 파일 기술어 등에 엑세스 할 수 있는 다양한 I/O 스트림을 제공하는데 이것을 PHP Wrapper라고 한다. 이 문제에서 그 중 'php://filter'라는 wrapper를 사용할 것이다. php://filter의 경우, 서버 안의 문서들을 열람할 수 있게 해준다. (encode 또는 decode의 형태로) www.[웹사..
[Webhacking.kr] 24번
2021. 5. 17. 20:48
Wargame/Webhacking.kr
쿠키 인젝션 문제 extract() 함수는 배열 속의 키값을 변수화 시켜주는 함수이다. extract(array) : array의 key값의 이름으로 변수를 만든다. 변수의 값은 key값에 대응하는 값. ex) extract($_COOKIE) => $REMOTE_ADDR = $_COOKIE['REMOTE_ADDR'] $_SERVER[REMOTE_ADDR] : 현재 페이지를 보고있는 시스템의 ip 주소 $_SERVER[HTTP_USER_AGENT] : 클라이언트의 접속 환경 정보(브라우저 정보 등) 그러므로 extract으로 변수들을 생성하고 $ip=$REMOTE_ADDR; 의 ip를 str_replace 함수를 거쳐서 ip값을 필터링시킨다. 우선 ip를 문자열 형태로 바꾸고, .. 을 "." 으로 12를..
[Webhacking.kr] 23번
2021. 5. 17. 20:26
Wargame/Webhacking.kr
URL 인코딩 문제 위의 폼으로 를 삽입해야 한다. 문자열이 필터링 되는 것 같다. 문자열 필터링을 우회하는 방법을 찾아보니, 문자 사이사이마다 NULL 을 넣어주는 방법이 있었다. -> NULL 값을 url 인코딩으로 사이사이에 넣는다. %00a%00l%00e%00r%00t%00(%001%00)%00;%00
[Webhacking.kr] 20번
2021. 5. 14. 23:34
Wargame/Webhacking.kr
Javascript 문제 각 입력 태그 값이 빈 값이 아닌지 체크한다. 빈 값이면 return 을 한다. 또한 captcha.value와 captcha_.value 값이 다른 경우도 return 을 한다. 값들을 2초안에 입력하지는 못하기 때문에 개발자 도구 - console 기능을 통해 script 태그 안 코드를 변경하면 된다. 새로 고침을 누른 뒤 변조 코드를 전달한다.
[Webhacking.kr] 19번
2021. 5. 14. 15:43
Wargame/Webhacking.kr
문제 admin 을 입력하면 you are not admin 이라고 뜬다. admin 을 제외한 다른 값은 입력하면 정상적으로 로그인이 된다. admin이라는 문자열에 대해서만 필터링이 걸려 있는 것을 확인하고 admin 문자열과 같은 의미의 문자열을 집어 넣어 보도록 했다. (admin) 이나 a/**/dmin 혹은 a%00dmin과 같이 괄호와 주석처리를 통해 우회가 가능했다.
[Webhacking.kr] 18번
2021. 5. 13. 18:43
Wargame/Webhacking.kr
Java Script 문제 URL 에서 no 파라미터 값이 존재하는 경우 정규표현식을 통해 select, from, 16진수 등을 필터링한다. $result = mysqli_fetch_array(mysqli_query($db,"select id from chall18 where id='guest' and no=$_GET[no]")); // admin's no = 2 sql 쿼리를 통해 가져온 id가 admin 일 때, solve() 함수가 실행되므로 admin 인 id 값을 가져와야 한다. SELECT id FROM chall18 WHERE id='guest' and no=1 or 1=1 LIMIT 1,1 -> or 를 이용해 조건이 항상 참이 되게 한 뒤(guest의 no=1), LIMIT 를 통해 a..