webhacking.kr(69)
-
old-03 풀이
게임 판같이 생긴 무언가가 보입니다 맨 위에 Nonogram이라고 적혀있네요 뭐지 싶어서 찾아봤는데, 알고 보니 검은색을 칠해서 그림을 만드는 퍼즐 게임이었습니다 이런 식으로 말이죠! 이런 식으로 클릭해서 색을 채울 수 있습니다 코드를 봐도 딱히 할 수 있는 게 없는 것 같아 보입니다 우선 퍼즐을 다 맞추고 solved 버튼을 눌러보겠습니다 퍼즐을 맞춘 후에 solved 버튼을 누르니 페이지가 넘어갔습니다 이름을 입력하라고 하니, webhacking.kr에서 사용하는 닉네임을 입력해 보겠습니다 페이지가 위와 같이 바뀌었습니다 answer에 있는 2진수를 10진수로 바꿔보기도 하고, Cyber Chef에 돌려보기도 했지만 별다른 수확은 없었습니다 이전 페이지로 돌아가서 코드부터 확인해 보겠습니다 answe..
2024.01.28 -
old-38 풀이
박스 하나와 로그인 버튼이 있습니다 이번 문제는 Log Injection을 활용하는 문제인가 보네요 소스코드를 확인해 보니 admin.php라는 페이지가 있나 봅니다 admin.php로 이동해 보니 log viewer라고 쓰여있고, 로그가 찍혀있는 페이지가 나옵니다 우선 다시 메인 페이지로 돌아가서 admin으로 로그인 시도를 해봤습니다 admin으로 바로 로그인이 되지는 않네요 그러면 그냥 "test input"이라는 문자열을 넣어서 결과가 어떻게 나오는지 확인이라도 해보겠습니다 문자열 입력을 해도 메인 페이지에서는 변화가 없길래 admin.php 페이지로 왔습니다 IP와 함께 입력한 문자열인 "test input"이 로그에 찍혀있는 걸 확인할 수 있습니다 왠지 admin을 로그에 찍으면 문제가 풀릴 ..
2024.01.26 -
old-32 풀이
메인 페이지에 랭킹이 쭉 나열되어 있습니다 사람들 닉네임 위에 커서를 되니 오버 효과로 텍스트 배경이 회색이 되네요 닉네임들을 여러 개 누르다 보니 위와 같은 팝업창이 떴습니다 클릭을 하니까 숫자가 1 늘어있습니다 아마 이 중에서 제 닉네임도 있을 것 같은데, 닉네임을 계속 클릭해서 100을 채워야 문제가 풀릴 것 같습니다 한 사람당 클릭 기회는 한 번인 것 같은데.. 클릭 횟수에 걸려있는 제약을 풀어야 숫자를 늘릴 수 있습니다 쿠키 부분을 한 번 살펴보겠습니다 이 쿠키를 차단하면 클릭이 가능해집니다 클릭을 100번 하기에는 귀찮으니 python으로 자동화 코드를 만들어 돌려보겠습니다 import requests url = 'https://webhacking.kr/challenge/code-5/?hit=..
2024.01.25 -
old-19 풀이
메인 페이지에는 id 제출 폼 하나가 보이고, 그 안에는 admin이 적혀있습니다 제출 버튼을 눌렀더니 위와 같은 화면으로 변경됐습니다 소스코드도 딱히 변한 게 없네요 이번에는 "1"을 id로 넣어 로그인을 해봤습니다 이번에도 소스코드는 변한 부분이 거의 없습니다 접근법이 이게 아닌 것 같아 쿠키를 살펴봤습니다 userid라는 이름의 쿠키 하나가 보입니다 문자열 끝부분에 '='이 붙어있는 걸 보니, Base64로 인코딩으로 보입니다 문자열이 하나 나왔습니다 Cyber Chef에 Magic 옵션으로 돌려봐도 별다르게 뜨는 건 없습니다 문자열 길이를 보니 왠지 md5일 수도 있을 것 같다는 생각이 들어 아래 사이트에 문자열을 넣고 돌려봤습니다 https://www.md5online.org/md5-decryp..
2024.01.25 -
old-10 풀이
회색 영역에 O와 Goal 지점이 보입니다 저 O를 노란색 Goal 지점까지 옮겨야 문제가 풀리는 것 같습니다 O에 마우스 커서를 올리니 글자가 yOu로 바뀝니다 이벤트 속성이 적용되어있는 것으로 추측됩니다 페이지 코드를 보니 역시나 onmouseover 속성이 걸려있습니다 그리고 Gole의 위치가 left:1600px로 지정되어있고, O를 마우스로 클릭하면 left가 1씩 늘어납니다 문제를 풀려면 O를 1600번 눌러야 한다는 건데, 말이 안 되는 수치이므로..ㅋㅋ 그냥 O의 left 초기값을 늘려줬습니다 이 상태로 O를 한 번 누르면 문제가 해결됩니다
2024.01.04 -
old-27 풀이
GET으로 no 값을 가져옵니다 그리고 preg_match() 함수를 통해 no 필터링을 하는데, 필터링에 걸리지 않고 id를 admin으로 만들어야 문제가 해결됩니다 select id from chall27 where id='guest' and no=({$_GET['no']}) guest의 no가 1인 것을 확인했으므로, no 입력 부분에 0) or id = "admin"#을 넣어주면 됩니다 하지만 #, =, 공백이 필터링 대상이므로, 필터링 우회를 해줘야 합니다 1. = → like 2. # → ;%00 3. 공백 → %0b 필터링 우회를 해준 페이로드를 URL의 no에 입력해 주면 문제가 해결됩니다
2024.01.04