[DreamHack] [web] [Level 1] baby-ai 풀이
2024. 12. 9. 20:50ㆍInformation 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
'Information Security 정보보안 > DreamHack' 카테고리의 다른 글
[DreamHack] [web] [Level 1] Where-is-localhost 풀이 (0) | 2024.11.24 |
---|---|
[DreamHack] [web] [LEVEL 1] random-test 풀이 (0) | 2024.11.23 |
[DreamHack] [web] [LEVEL 1] Broken Buffalo Wings 풀이 (0) | 2024.11.22 |
[DreamHack] [web] [LEVEL 1] Type c-j 풀이 (1) | 2024.11.21 |
[DreamHack] [web] [LEVEL 1] baby-union 풀이 (1) | 2024.11.20 |