Webhacking Writeup old-26번 문제입니다.
접속해보면

소스코드가 적힌 링크를 주는 것말고 아무것도 없으니 일단 소스코드를 보겠습니다.

중간에 색깔로 된 부분이 우리가 풀어야할 부분으로 보입니다.
해석하면 preg_match()함수는 필터링함수로 admin로 id값을 입력받을 경우
no출력과 함께 exit() 함수 종료로 아래 구문이 실행이 안된다는 군요
이후 구문은 필터링을 통과하면 urldecode( )로 입력받은 id를 한번 디코더해주고
입력받은 id값이 admin일경우에 문제가 해결된다고 합니다.
여기서 문제가 주는 힌트가 있는데 urldecode( )함수 입니다.
왜냐면 url로 값을 입력할때 url인코딩를 해서 값을 입력하라는 힌트거든요
그러면 admin의 url인코딩 값을 찾아보겠습니다.

인코딩표 중에서 소문자 부분중 일부를 가져왔습니다.
이 표대로 admin을 변경하면 %61%64%6D%69%6E 인것을 알 수 있습니다.
그럼 이것을 대입해보겠습니다.

???
url인코딩을 해서 입력을 해도 admin으로 변환되며 no가 출력됩니다.
모르겠어서 검색해보니 url인코딩으로 값을 받으면 웹은 1번 자동으로 디코딩을 해서
값을 인식한다고 합니다.
즉 우리가 %61%64%6D%69%6E 로 값을 입력해도 1번 인코딩을 한거라 웹이 디코딩을
한번 하게되면 필터링에 걸려 no가 출력되는 것이였습니다.
소스코드를 더 자세히봤다면 urldecode( )함수가 한번 더 디코딩 해주니까
두번 디코딩한 값을 입력하면 되는걸 생각 못한게 미스 였습니다.
인코딩한 값을 그럼 한번더 인코딩하면

%2561%2564%256D%2569%256E 가됩니다.
이값을 대입시켜보겠습니다.

문제가 해결되었습니다!
'Wargame(Web) > Webhacking.kr Writeup' 카테고리의 다른 글
Webhacking Writeup 19번 문제 (0) | 2022.07.27 |
---|---|
Webhacking Writeup 32번 문제 (0) | 2022.07.20 |
Webhacking Writeup g00gle1 문제 (0) | 2022.07.07 |
Webhacking Writeup 18번 문제 (0) | 2022.07.07 |
Webhacking Writeup 15번 문제 (0) | 2022.07.06 |