반응형
Webhacking.kr Challenge 11 풀이.
???? 여태 문제들과는 다른 스타일이다.
일단 소스를 보도록 해보겠다.
별 거 없다...보나 안 보나 별 차이 없다.
다시 원래 화면으로 돌아가겠다. 첫번째 줄에 있는 코드를 본다.
ip 주소 뒤에 보면 Password라는 것은 유추할 수 있다. 물론 두번째 줄에 echo password is ????를 봐도 알 수 있다.
Password를 위해 preg_match 함수를 사용하고 있다.
원래 이렇게까지 자세히는 안 봤지만 preg_match는 정규식이 맞으면 true를 리턴하는 함수.
$pat과 GET 메소드의 val 파라미터를 비교하는 것을 알 수 있다.
if문 앞에 &pat가 있기에 패턴이 주어진 것을 알 수 있고, 패턴이 있다는 것은 정규식을 썼다는 것이다.
따로 소스 코드도 없고, 저 정규식들을 좀 더 보겠다.
" " => 패턴을 만들 때 들어가는 기본 형식. / => 처음과 끝을 표현. [] => 안에 존재하는 문자 or 숫자 중 하나만을 나타낸다는 뜻. []안의 -는 범위를 나타낸다. [b-f]는 b에서 f 중 하나를 나타낸다는 뜻. [1-100]는 1부터 100에서 하나를 나타낸다는 뜻. {} => 앞에 있는 문자를 {} 안의 갯수만큼 출력하라는 뜻. [1]{10 }는 1을 10번 출력하라는 뜻. * => * 앞의 문자를 0개 이상으로 포함한다라는 뜻. b*l는 b,bl,bbl,bbbl를 포함한다는 뜻. \t => tap이라는 의미를 가지며, url를 이용하기 위해서는 인코딩을 해야 한다. 참고로 tap을 url 인코딩 했을 경우 %09.
$pat="/[1-3][a-f]{5}_.*IP주소.*\tp\ta\ts\ts/";
==> 1aaaaa_.IP 주소.%09p%09a%09s%09s ==>pat의 패턴.
pat패턴이 $_GET[val]과 일치해야하고, $_GET은 값을 가져오라는 뜻이니까 주소 형식에 입력해야 한다.
변수가 val이므로 주소에 val = 식으로 적으면 된다.
?val=1aaaaa_.122.43.189.243.%09p%09a%09s%09s
Cf) ? <= 이거는 PHP에서 주소창에 변수를 입력할 때는 주소 맨 끝자리에 붙이고 변수를 입력해야 한다.
Cf)Lord of sql injection 문제 풀어본 게 도움이 되었다.
더 많은 정규식 표현 참고 => https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
반응형
'# Related site issues > WEBHACKING.KR' 카테고리의 다른 글
Webhacking.kr Challenge 7. (0) | 2018.05.12 |
---|---|
Webhacking.kr Challenge 5. (0) | 2018.05.12 |
Webhacking.kr Challenge 47. (0) | 2018.05.11 |
Webhacking.kr Challenge 42. (0) | 2018.05.06 |
Webhacking.kr Challenge 12. (0) | 2018.05.06 |