webhacking.kr 23번 문제풀이 Write Up 입니다.
접속하면 텍스트박스와 미션 설명이 있습니다. alert() 스크립트를 실행하면 된다고 합니다.
이번 문제는 XSS(Cross Site Scripting)를 성공시키면 되는 것 같습니다.
이렇게 직접적으로 입력하면 핵 쓰지 말라고 합니다.
filtering이 걸려있어서 그런 것인데, 우회해서 alert()를 호출하는 방법을 생각해 봐야겠습니다.
<h1> 태그를 입력해 보았는데 아래 텍스트 크기가 커졌습니다.
크기가 커지니까 좀 징그럽습니다.
의미없는 문자열도 2글자 이상이면 다 filtering 되는 것 같습니다.
문자열 개수 filtering을 우회해야 할 것 같습니다.
검색을 해보다가 php filtering 함수 중 eregi() 함수의 취약점을 발견했습니다.
eregi()는 NULL 문자를 만나면 문자열 검사가 제대로 이루어지지 않는 취약점이 있습니다.
요즘에는 여러 취약점 때문에 preg_match()를 많이 사용하지만, 일단 이 방법을 사용해보기로 했습니다.
NULL문자는 URL 인코딩하면 %00입니다. 사이사이에 %00을 넣으면 정상적으로 출력되는 것을 볼 수 있습니다.
참고로 값을 입력할 때는 [그림 5]처럼 URL에 직접 입력해야 합니다.
텍스트상자에 입력하고 전송하면 %가 문자(%25)로 인식되어 버립니다.
이제 script를 실행할 것입니다. 영문자 사이사이에 %00을 넣고 접속합니다.
XSS에 성공해 alert()가 실행되면 문제가 정답처리 됩니다.
'CTF > webhacking.kr' 카테고리의 다른 글
[CTF] webhacking.kr 24번 Write-Up (0) | 2022.10.18 |
---|---|
[CTF] webhacking.kr 20번 Write-Up (0) | 2022.10.15 |
[CTF] webhacking.kr 19번 Write-Up (0) | 2022.10.15 |
[CTF] webhacking.kr 18번 Write-Up (0) | 2022.10.14 |
[CTF] webhacking.kr 17번 Write-Up (0) | 2022.10.14 |
댓글