[Webhacking.kr] 33번
2021. 5. 18. 15:03
Wargame/Webhacking.kr
PHP 문제 33-1 Get 방식으로 'get' 파라미터 값으로 "hehe" 를 전달해주면 된다. 33-2 POST 방식으로 'post' 값을 "hehe"로, 'post2' 값을 "hehe2"로 전달해주면 된다. 33-3 GET 방식으로 'myip' 파라미터 값으로 자신의 ip 주소를 전달해주면 된다. 33-4 GET 방식으로 전달한 'password'의 파라미터 값과 현재 시간을 md5 해싱한 값을 비교한다. 시간을 넉넉히 잡아서 md5 해싱해서 넣어준 다음 새로고침을 계속 눌러주었다. https://awebanalysis.com/ko/md5-generator-online/ MD5 온라인 생성기 이 무료 온라인 도구는 MD5 해시 생성기로, 신용 카드 번호, 토큰, 암호 및 기타 민감한 정보를 데이터베..
[Webhacking.kr] 32번
2021. 5. 18. 13:53
Wargame/Webhacking.kr
쿠키 문제 클릭을 하면 투표가 되고, 자신의 아이디가 추가가 된다. 투표를 한 후에 또 클릭을 하면 you already voted 라는 alert 와 함께 거부된다. 확인해보니 vote_check 라는 이름의 쿠기 값이 있었고 ok 값을 지운 뒤 투표를 해보니 투표가 되었다. 투표를 할 때마다 vote_check 값을 ok로 설정해주고 그에 따라 투표 여부가 결정되는 것 같다. vote_check 쿠기를 차단시킨 뒤, 클릭을 통해 자신의 점수를 100으로 만들어주면 되는 문제였다.
[Webhacking.kr] 28번
2021. 5. 18. 01:14
Wargame/Webhacking.kr
파일 업로드 취약점 문제 ./upload/O7XO91oPbea4/flag.php 파일을 실행이 아닌 읽어들이라고 한다. -> 이 문제는 php 파일 형태의 웹셀을 업로드 하는 것이 아니라 .htaccess 를 이용한 php 실행 금지 를 통해 풀 수 있다. htaccess는 "hypertext access"의 약자이다. 아파치 같은 웹 서버에서 브라우저 같은 클라이언트에서 접근할 때 어떤 식으로 서비스를 제공할 지 결정하는 파일이다. 파일 업로드 디렉토리에 .htaccess 파일을 만들고 해당 파일에서 php 파일을 실행하지 않게 설정하면, 텍스트 파일로 인식하게 하여 소스코드를 텍스트 형태로 볼 수 있다. 참고 https://rootrator.tistory.com/119 https://developme..
[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