[DreamHack] [web] [LEVEL 1] Broken Buffalo Wings 풀이

2024. 11. 22. 13:28Information Security 정보보안/DreamHack

728x90

배울내용 

dreamhack,

web hacking,

개발자도구,

dreamhack 풀이,

dreamhack Broken Buffalo Wings 문제,

dreamhack web 풀이 ,

burfsuite,  

Broken Buffalo Wings,

CSP

 

 

문제

 

이번문제는 영어로 되어있다 망가진 버팔로 날개들? 

참고로 버팔로는 미국의 뉴욕주 버팔로(Buffalo)라는 도시에서 유래한 이름이고 닭 날개 요리 이름에 들어간 "버팔로"는 도시 이름에서 온 것이지, 새와는 관련이 없다! 🐓

 

 

문제를 보면 더 쉬운방법이 있는데 패치된 버전과 오리지널 챌리지의 차이를 보라고한다 

 

 

문제에서는 이렇게 버팔로 날개의 설명과 함께 댓글과 전송이 있는데 댓글을 입력하고 전송해도 아무런 변화가 없었다

아마 코드에서 힌트를 얻을수있을것같다

 

 

        <?php   

                if (strlen($_GET['comment'])>500){
                    echo 'Too Long';
                    die();

                }
                if (isset($_GET['comment'])) {
                    $comment = $_GET['comment'];

                    if (strpos($comment, 'lol') !== false){
                        $prefix = 'Dreame : Looks delicious ~~ But I like pizza more ';
                        echo $prefix . $comment;
                    }

                    if (strpos($comment, 'script') !== false){
                        $untrusted_comment = $_GET['comment'];

                        while (strpos($untrusted_comment, 'script') !== false) {
                            $alert = 'Malicious string Detected !!!!!';
                            $untrusted_comment = str_replace('script', '', $untrusted_comment);
                            echo $alert;
                            echo $untrusted_comment;
                            
                        }
                    }
                } 


                $nonce = base64_encode(random_bytes(20));
                $csp_header = "Content-Security-Policy: default-src 'self'; script-src *.bootstrapcdn.com 'nonce-" . $nonce . "'; style-src-elem *.bootstrapcdn.com;";
                header($csp_header);
        ?>

 

여기에서 comment 를 받아서 조건문을 살펴 보니 lol 을 입력하면 아래와 같이 나오게 된다  

그리고 그동안 script 는 사용하지 못하게 막아 논걸 볼수있다 . 뿐만아니라 XSS 공격또한 할수있을것같지만 코드 하단에 보면 csp_header를 보아 XSS 공격 방지하고 있는걸 예상할수있다 

 

 

CSP(Content Security Policy)란?

웹사이트의 보안 기능 중 하나로, 웹 애플리케이션이 실행 중 로드하거나 실행할 수 있는 콘텐츠를 제한하는 HTTP 응답 헤더입니다. 주로 XSS(Cross-Site Scripting)데이터 인젝션 공격을 방지하는 데 사용

 

 

그러면 어디가 취약점인 걸까?

                    if (strpos($comment, 'script') !== false){
                        $untrusted_comment = $_GET['comment'];

                        while (strpos($untrusted_comment, 'script') !== false) {
                            $alert = 'Malicious string Detected !!!!!';
                            $untrusted_comment = str_replace('script', '', $untrusted_comment);
                            echo $alert;
                            echo $untrusted_comment;
                            
                        }
                    }

 

이렇게 어떻게 하면 script 를 우회하면 가능할것같은데 문제를 곰곰히 생각해보면 there's also easier way to do it!! 이 기억난다 아마 의외로 간단할수있을것 같다 

 

 

일단 내가 할수있는 script 를 Script 로도 해보고 scscscripripirptt 이런식으로 노가다를 해보고 안되고 html 안에 img 태그도 넣어서 시도해봤다 안됐다

 

그다음에는 다운한 파일을 기반으로

flag 가 있는 걸 감안해서 url 에 flag.txt 를 넣어봐서도 해보고 하니 됐..다?

조금 멍하긴하다 

 

 

 

문제를 내면 출제자의 의도를 예상해봐야하는데 이번거는 이전에 나왔던거는 안나올거라는 안일감 때문에 아마 너무 깊게생각해버린게 아닐까 라는 메세지를 남긴것같다 즉, 단계별로 처음부터 step by step 으로 한단계식 시도해 봐야한다 라는 느낌이지 않을까 싶다 

728x90