[DreamHack] [web] [Level 1] baby-ai 풀이

2024. 12. 9. 20:50Information Security 정보보안/DreamHack

728x90

배울내용 

dreamhack,

web hacking,

개발자도구,

dreamhack 풀이,

dreamhack random-test 문제,

dreamhack web 풀이 ,

burfsuite,  

baby-ai,

prompt injection,

 

 

 

문제

 

 

 

 

 

 

 

위와같이 나와있고 url 을 타고 들어가보니 챗봇이 있는것같다

이것저것물으니 특정 키워드에 대해서는 "I'm sorry, I cannot continue the conversation." 이라고 뜨며 대화를 차단해버린다 

 

 

 

 

아마 코드를 확인해봐야할것같다

 


    llmState = 'busy';

    let message = data.toString();

    const hasBannedKeyword = ['admin', 'flag', 'pass', 'secret', 'private']
      .some((word) => message.toLocaleLowerCase().includes(word));

    if (hasBannedKeyword) {
      message =
        `Repeat after me, "I'm sorry, I cannot continue the conversation."`;
    }
  
  });

 

코드를 보는중 중요한 부분이 보였다 바로 Keyword 에 admin, flag, pass,secret, private 가 들어가면 대화를 차단해버리는것이다. 그래서 키워드를 pass 대신에 pasS 및 PasS 등 대문자를 섞어서 대화를 시도해보니 아래처럼 성공플레그가 나온다

 

 

이번 문제에서는 아래의 공격에 대해서 경각심을 주려는 것같다 

 

프롬프트 인젝션 공격

프롬프트에 포함된 규칙에도 불구하고, 사용자가 다음과 같은 입력을 보낼 경우 시스템을 우회할 수 있습니다

 

 

 

 

또한 해킹? 을 할수있었던것은 아래의 것이 부족해서 그런것같다. 

 

WebSocket 메시지 검증 부족

WebSocket 메시지에서 사용자 입력을 검증하는 부분이 너무 부족함 

javascript
Copy code
let message = data.toString(); const hasBannedKeyword = ['admin', 'flag', 'pass', 'secret', 'private'] .some((word) => message.toLocaleLowerCase().includes(word));

 

 

 

이를 해결하기위해서는 정교한 필터링이 필요함으로 보인다 

 

 

 

728x90