본문 바로가기

CTF30

[CTF] webhacking.kr 2번 Write-Up webhacking.kr 2번 문제풀이 Write Up 입니다. 제한 구역이라고 하면서 IP를 기록했다고 합니다. F12를 눌러봅니다. 맨 위에 주석은 접속 시간이 기록되어 있고, 아래 주석에는 admin.php 접속하면 걷어찬다고 합니다. 이건 못 참습니다. admin.php를 들어가봅시다. 접속했는데 암호를 달라고 합니다. 아무거나 입력해 봤는데 틀렸다는 메시지가 나옵니다. [그림 2]에서 본 접속 시간과 관련이 있는 것 같습니다. 쿠키를 확인해보니 time 쿠키가 있습니다. 해당 값과 기록된 시간이 관련된 것 같습니다. 대충 아무거나 넣고 수정해 보았더니 기록된 시간이 바뀌어 있습니다. 2022. 10. 11.
[CTF] webhacking.kr 1번 Write-Up webhacking.kr 1번 문제풀이 Write Up 입니다. 아무것도 없습니다. view-source를 눌러 보겠습니다. 소스코드가 나옵니다. 여기서 눈에 띄는 부분이 COOKIE입니다. 쿠키 조건을 만족시켜 solve(1) 함수를 호출하면 되는 것 같습니다. 소스코드를 자세히 보면, 위 코드에서 user_lv 쿠키의 값을 1로 세팅했습니다. solve(1)이 호출되는 조건은, user_lv가 3을 초과하는 경우입니다. 그러나 바로 위 조건에서 user_lv가 4 이상이면 다시 1로 만들어버립니다. 그럼 적당히 3.5 이렇게 user_lv를 수정하면 될 것 같습니다. Chrome 브라우저에서의 쿠키 수정 방법입니다. 원래 페이지로 돌아온 후 F12를 눌러 Application 탭으로 들어간 후 Coo.. 2022. 10. 10.
[CTF] SuNiNaTaS(써니나타스) 8번 Write-Up | Web 써니나타스 8번 문제풀이 Write Up 입니다. 로그인 창이 보입니다. F12를 눌러보니 힌트가 보입니다. ID는 admin이고 PW는 0부터 9999 중 하나라고 합니다. 어짜피 0~9999니까, brute force 때려서 문제 풀도록 하겠습니다. import requests from bs4 import BeautifulSoup as bs URL = 'http://suninatas.com/challenge/web08/web08.asp' for i in range(0,10000): // 0 ~ 9999 반복 data = {'id' : 'admin', 'pw' : i} // 로그인 데이터 변수 res = requests.post(URL, data = data) // post로 로그인 데이터 전송 ctf.. 2022. 10. 5.
[CTF] SuNiNaTaS(써니나타스) 7번 Write-Up | Web 써니나타스 7번 문제풀이 Write Up 입니다. Do U Like girls?라는 글자와 아이유 사진이 있습니다. 중간에는 뜬금없이 YES 버튼이 있습니다. 아래쪽에는 윤아 사진이 있습니다. [그림 2]에서 본 중간 YES 버튼을 눌러 보겠습니다. 느리다고 합니다. F12를 눌러서 확인해보니 Faster and Faster라고 힌트가 있습니다. 아마 가운데 있는 YES버튼을 빨리 누르면 될 것 같습니다. 신컨이면 이론상 빨리 누를 순 있겠지만 버튼 위치도 많이 내려가야 있고, 크기도 작아서 일반적으로는 빨리 누르기가 불가능합니다. 따라서 Console을 통해 버튼을 눌러보겠습니다. YES 버튼 소스코드를 살펴봅니다. input 태그이고, type은 submit입니다. Console 탭을 열어 이렇게 입.. 2022. 10. 5.
[CTF] SuNiNaTaS(써니나타스) 6번 Write-Up | Web 써니나타스 6번 문제풀이 Write Up 입니다. 문제에 접속하면 게시판 하나가 있습니다. 글이 5개가 있는데, 전부 눌러보도록 하겠습니다. 첫 번째 게시물입니다. 작성자가 suninatas인 글을 보라고 합니다. 두 번째 게시물입니다. md5 해시 툴이 있는 사이트인가 봅니다. 세 번째 게시물을 클릭했더니, 패스워드 입력을 요구하는 페이지가 나왔습니다. SQL 문도 같이 있는 것을 보니, SQL Injection을 통해 해결하는 문제인 것 같습니다. 그 외 게시물들은 별 내용이 없습니다. 세 번째 게시물이 핵심인 것 같습니다. 패스워드 요구 페이지 아래의 SQL 문을 자세히 살펴보겠습니다. select szPwd from T_Web13 where nIdx = '3' and szPwd = '"&pwd&".. 2022. 10. 5.
[CTF] SuNiNaTaS(써니나타스) 5번 Write-Up | Web 써니나타스 5번 문제풀이 Write Up 입니다. 문제에 접속하면 Check Key Value라는 문장과 함께 텍스트박스가 하나 있습니다. 아무 문자를 입력하고 Check 버튼을 눌러도 별 반응이 없습니다. F12를 눌러 개발자도구를 열어보면, 다음과 같은 힌트가 있습니다. 해당 힌트를 입력해도 별 차이는 없습니다. 페이지 소스코드를 더 뜯어보면, 다음과 같은 script를 발견할 수 있습니다. 다만 해당 script는 난독화가 되어 있어 읽기 어렵습니다. 따라서 난독화를 풀어주는 툴을 이용해 보도록 하겠습니다. 난독화를 해제하는 사이트는 여러 가지가 있는데, 이 글에서는 http://dean.edwards.name/unpacker/ 사이트에서 난독화를 해제했습니다. 코드가 좀 더러운데, 정리하면 다음과.. 2022. 10. 2.
[CTF] SuNiNaTaS(써니나타스) 4번 Write-Up | Web 써니나타스 4번 문제풀이 Write Up 입니다. 문제에 접속하면 다음과 같은 페이지가 나옵니다. User-Agent는 접속 브라우저를 나타내는 것 같고, Plus 버튼을 누르면 포인트가 증가하는 것 같습니다. 일단 버튼을 눌러봅니다. 막 눌러댔더니 25까지만 올라가고 26부터는 이상한 메시지가 나타납니다. F12를 눌러 뭐가 있나 확인해봅니다. 힌트가 하나 보입니다. 포인트를 50으로 만들라네요. 'SuNiNaTaS'라는 힌트도 보입니다. 위에서 본 알림창에서도 같은 글자가 있는 것을 미루어 보면, User-Agent를 SuNiNaTaS로 만들면 되는 것 같습니다. User-Agent를 바꾸는 법은 여러 가지가 있겠지만... 브라우저 기능으로 바꿔보겠습니다. Chrome 기반 브라우저 기준 방법입니다... 2022. 10. 2.
[CTF] SuNiNaTaS(써니나타스) 3번 Write-Up | Web 써니나타스 3번 문제풀이 Write Up 입니다. 페이지에 접속하면 공지 게시판에 글을 쓰라고 합니다. 이래도 되나 싶긴 하지만... 일단 공지사항으로 들어가봅니다. 당연히 글을 쓸 수 있는 버튼은 찾아볼 수 없습니다. 다른 게시판을 찾아봅니다. 자유게시판으로 들어갔습니다. 여기는 글을 쓸 수 있는 Write 버튼이 있습니다. 일단 이 버튼이라도 눌러봅니다. 여기서 글을 쓸 수 있나 봅니다. 그런데 여기 URL을 자세히 보면, suninatas.com/board/free/write 이런식으로 되어 있습니다. URL에 있는 free를 notice로 바꿔봅니다. 공지사항에 글을 작성하는 페이지로 이동했습니다. 대충 아무거나 입력하고 SUBMIT를 눌러 봅니다. 이래도 되나 싶지만 한번 눌러봅니다. SUBMI.. 2022. 10. 2.
[CTF] SuNiNaTaS(써니나타스) 2번 Write-Up | Web 써니나타스 2번 문제풀이 Write Up 입니다. 페이지에 들어가면 웬 로그인 폼이 하나 있습니다. F12를 눌러 개발자 도구를 열어 소스코드를 살펴보면, 로그인 script와 힌트를 확인할 수 있습니다. 해당 힌트에서는 join하려면 ID와 PW가 같으면 된다는데, script에서는 값이 똑같으면 join을 막아버립니다. Join 버튼을 누르면 해당 script의 chk_form() 함수가 호출되므로, 해당 함수 호출 없이 submit() 함수를 호출하면 되는 것으로 보입니다. 일단 대충 같은 값으로 집어넣고... 개발자 도구의 Console 탭으로 가 submit 함수를 실행시키면, flag를 확인할 수 있습니다. 2022. 10. 2.
[CTF] SuNiNaTaS(써니나타스) 1번 Write-Up | Web 써니나타스 1번 문제풀이 Write Up 입니다. 해당 문제에 접속하면 다음과 같은 페이지가 나옵니다. 지금 가장 눈에 띄는 것은 텍스트박스와 Check 버튼이므로, 아무 값을 입력하고 Check 버튼을 눌러 보겠습니다. 입력된 문자열이 GET 방식으로 전송된 것을 확인할 수 있습니다. 이제 해당 페이지의 코드를 살펴봅니다. str로 임의의 문자열을 받고, 해당 문자열이 admin이면 flag가 나타나나 봅니다. 다만 중간에 문자열이 변하는 함수가 있으므로, 최종 결과물이 admin이 되기 위한 문자열을 넣어야 합니다. 해당 소스코드는 ASP로 작성되었고, 코드에 쓰여진 문자열 조작 함수는 다음과 같습니다. Replace([해당 문자열], [변경할 문자열], [새로운 문자열]) // 해당하는 문자열을 새.. 2022. 10. 2.