php 6

[root-me] PHP preg_replace()

e modifier 취약점 문제. 찾아보니까 real world에서는 대부분 패치되어 이용하기 힘든 취약점이라고 한다. preg_replace함수는 특정 문자열을 필터링할 수 있는 함수인데, /e 옵션을 넣어주면 "치환되는 문자"부분을 php코드 그대로 해석해준다. 즉, php코드로 실행시킬 수 있다는 말이 된다. search부분에는 /[0-9]/e 로 /e옵션을 줬고, replace부분에는 원격 파일을 읽을 수 있는 방법 중 하나인 file_get_contents('flag.php'); 를 입력했다. content부분에는 숫자 1을 입력해줘서 문자열이 치환되도록 했다. *fopen함수를 이용해서 읽었을 때는 resource id #2 라는 문구가 출력됐는데, 나중에 좀 더 알아보자.

WebHacking 2020.01.06

[root-me] PHP Loose Comparison

바로 소스코드를 확인할 수 있으니 확인해보자. 간단하게 요약을 하면, sanitize_user_input함수는 preg_replace를 가지고 필터링을 한다. preg_replace("[검색 패턴]","[바꿀 패턴]","[기존 문장]")으로 사용이 되는데, preg_replace($re, "", $input); 라는 의미는 사용자가 입력한 값에 $re(='/[^a-zA-Z0-9]/) 부분이 있으면 ""로 바꾸겠다는 의미. 즉, 입력값에 영어나 숫자가 아닌 다른 값이 있으면 없애버리겠다는 의미이다. 이 함수를 거쳐 seed값이 필터링된다. secured_hash_function함수는 입력값을 받아 위처럼 필터를 거친 뒤, md5로 인크립트하는 과정이 추가되어 있다. 즉, md5 encrypt되는 값은 se..

WebHacking 2020.01.06

[root-me] PHP filters

PHP filter? 사용자 입력과 같은 안전하지 않은 소스로부터의 데이터를 유효성 검사 및 필터링할 때 이용. 화면에서 home을 눌렀을 때, inc=accueil.php login을 눌렀을 때, inc=login.php로 URL을 받는 것을 확인할 수 있다. 파라미터로 php파일을 받아서 실행시키는 것인데, 파라미터에 ../ 를 넣어보도록 한다. Warning 문구가 출력된다. include()함수에 뭔가 문제가 있는 것 같고, failed to open stream: Operation not permitted in /challenge/web-serveur/ch12/ch12.php 같은 문구가 출력됨을 확인할 수 있다. inc=ch12.php로 넣어주면 처음 화면과 같은 화면이 나온다. 이쯤에서 필터..

WebHacking 2020.01.06