if(preg_match("/admin/", $_GET[id])) exit("HeHe");
admin이라는 문자열을 필터링한다.
if($result['id'] == 'admin') solve("troll");
admin이라는 id를 입력받으면 문제가 풀린다.
그럼 admin이라는 문자열을 우회해서 필터링에 막히지 않고 전달하게 되면 풀린다는뜻인데
대소문자를 구분하나 확인겸 admin을 Admin으로 입력해보았다.
문제 해결.
이 외에도 우회하는 방법은 여럿 있다.
URL 인코딩 우회: "admin" 문자열을 URL 인코딩하여 전달하는 대신, "admin"을 다른 문자열로 치환하고 해당 문자열을 URL 인코딩할 수 있습니다. 예를 들어, "admin"을 "%61dmin"과 같이 치환하고 인코딩한 후 전달할 수 있습니다. 이렇게 하면 필터링을 우회할 수 있을 수 있습니다.
대/소문자 혼용: "admin" 대신 "Admin", "aDmIn"과 같이 대/소문자를 혼용하여 전달할 수 있습니다. 필터링이 대/소문자를 구별하지 않는 경우 이 방법이 도움이 될 수 있습니다.
스페이스 및 특수 문자 사용: "admin" 대신 "a%20dmin"과 같이 스페이스를 삽입하거나 "%61dmin"과 같이 특수 문자를 추가하여 우회할 수 있습니다.
유니코드 이스케이프 시퀀스: "admin"을 유니코드 이스케이프 시퀀스로 변환하여 전달할 수도 있습니다. 예를 들어, "admin"의 유니코드는 U+0061, U+0064, U+006d, U+0069, U+006e입니다. 이를 "%u0061%u0064%u006d%u0069%u006e"과 같이 전달할 수 있습니다.
'Lord of SQL Injection' 카테고리의 다른 글
Lord of SQL Injection 10번 문제 - skeleton (0) | 2024.05.13 |
---|---|
Lord of SQL Injection 9번 문제 - Vampire (0) | 2024.05.13 |
Lord of SQL Injection - 7번 문제 Orge (0) | 2024.05.13 |
Lord of SQL Injection - 6번 문제 DARKELF (2) | 2024.05.10 |
Lord of SQL Injection - 5번 문제 wolfman (0) | 2024.05.10 |