실시간 날짜, 시간 출력 하기 Calendar - 실시간으로 날짜와 시간(초 까지) 출력하는 자바 프로그램 import java.util.*; public class C1 { public static void main(String[] args) throws Exception { for (int i = 0; i < 10; i++) { Thread.sleep(1000); Calendar now = Calendar.getInstance(); System.out.println(now); System.out.print(now.get(Calendar.YEAR) + "년"); System.out.print(now.get(Calendar.MONTH) + 1 + "월"); System.out.print(now.get(C..
MySQL Workbench를 들어간다. Navigator - Schemas - mydb - Create Table로 들어간다. 아래와 같이 테이블명과 Charset, Column을 설정 후 Apply를 눌러 적용한다. 테이블 수정이 필요하다면 해당 테이블 우클릭으로 Alter Table로 변경한다. 게시판 데이터추가는 테이블명에 마우스를 올렸을 때 나오는 3번째 기호를 선택하여 들어간다. 상단에서 SQL문을 사용하거나 하단의 테이블에 직접 데이터 추가 후 Apply를 누르면 된다.
문제를 들어가서 Download 버튼을 누르면 아래와 같은 evidence.tar 압축파일이 다운받아진다. 다운받은 파일의 내용은 아래와 같다. 눈여겨볼만한 부분은 아래와 같다. ===shadow 파일 root:$6$E2loH6yC$0lcZ0hG/b.YqlsPhawt5NtX2jJkSFBK6eaF/wa46d8/3KPs6d45jNHgNoJOl7X1RsOrYsZ.J/BBexJ93ECVfW.:15426:0:99999:7::: suninatas:$6$QlRlqGhj$BZoS9PuMMRHZZXz1Gde99W01u3kD9nP/zYtl8O2dsshdnwsJT/1lZXsLar8asQZpqTAioiey4rKVpsLm/bqrX/:15427:0:99999:7::: ===passwd root:x:0:0:root:/root:/b..
소스코드 확인 후 눈에 띄는 코드와 힌트가 아래와 같이 적혀있다. 문제 페이지를 내리다보면 버튼이 있고, 버튼 클릭 시 아래와 같은 창이 뜬다. 위에서의 소스코드를 해석해보았다. keyCode 116, 9, 78, 82 가 어떤 키인지 찾아보았다. 116 : F5 9 : Tab 78 : n 82 : r F5나 Tab을 누르면 ‘No!’라는 팝업창이 뜨고 false를 반환한다. 또한 Ctrl을 누르며 n이나 r을 울러도 ‘No!’라는 팝업창이 뜨며 false를 반환한다. 버튼은 무슨 역할을 하는지 보기 위해 다시 소스코드를 봤더니 web07_1.asp로 이동시키는 것을 볼 수 있었다. 아래의 코드는 form의 전송 방식은 post 이동 혹은 데이터를 보내는 페이지인 web07_1.asp form의 이름은 ..
게시판의 글들을 확인해보면 힌트나 사용할 사이트들이 게시글로 나온다. 아래 글은 힌트에 대한 내용으로 써니나타스 글들을 보라는 내용이다. https://md5hashing.net/ 링크가 나와있다. README 게시글은 클릭 시 아래 창이 열린다. 아래 글은 별 내용 없어보인다. README 클릭 시 열리는 창은 패스워드를 입력하라고 적혀있고 하단에는 SQL문이 적혀있다. select szPwd from T_Web13 where nIdx = '3' and szPwd = '"&pwd&"' T_Web13 테이블의 컬럼에서 nIdx 값은 3, szPwd 값은 &pwd&인 szPwd를 찾는다고 해석할 수 있다. SQL이 나오는 걸 보고 SQL 인젝션 문제라고 생각하고 있다. SQL 인젝션의 문제중 가장 먼저 시..
기존 아이디 대신 Admin으로 로그인하라는 건가 싶어서 시도했으나 풀리지 않았다. 잠깐 다른 라이트업을 참고하여 /admin 이라는 공간이 추가로 있다는 것을 알아내었다. 그럼 아래와 같이 QR코드를 보게 된다. QR코드를 모바일로 스캔 후 들어가면 로그인창이 떠야 하는데 플러그인 지원이 되지 않아서 안된다. 소스코드라도 보았는데 admlogin.swf 라는 파일을 다운받을 수 있었다. swf 파일을 디컴파일해보았다. 아래 링크에서 디컴파일했다. https://pdfrecover.herokuapp.com/swfdecompiler/ SWF Decompiler, SWF to FLA Online Convert SWF to FLA file, This app is a powerful SWF to FLA conv..
소스코드를 보니 문자열에 대한 난독화가 있어보이고 Init() 함수가 실행되면 패스워드를 초기화해버리는 것 같다. 힌트로는 12342046413275659 라고 적혀있다. eval(function(p,a,c,k,e,r) 부분을 보고 패킹되어 있다고 적혀있다고 생각해두었다. eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k..
문제 화면에는 포인트 점수와 User-Agent라는 HTTP 요청 패킷의 일부가 나와있다. BurpSuite를 사용하여 해당 페이지의 패킷을 확인해본 것과는 다른 부분이 있었다. //문제의 부분 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36 //직접 찍은 부분 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 문제 화면의 ip로 변경하여 패킷을 보내보았다...
문제 화면도 페이지 소스코드에도 이상한점이 보이지 않았다. 그냥 공지 게시판에 글을 써보라고 해서 이동해보았다. 그러나 공지 게시판에는 글을 쓸 수 있는 방법이 없어보였다. 자유게시판에는 글을 쓸 수 있어보인다. 글을 써보기 위해 Write 버튼을 눌러서 이동해보았더니 url을 보면 /free[게시판명]/write 으로 적혀있다. 공지게시판도 똑같을까 싶어서 url 뒤에 write를 붙였더니 글을 쓸 수 있는 공간이 나왔다. 게시글을 작성해보았다. 1q2w3e4r5t6y7u8i9o0p 라는 인증키가 나왔다. 인증키를 인증 페이지로 가서 입력하면 문제가 풀렸다는 알림창이 뜬다. 1q2w3e4r5t6y7u8i9o0p