huff022514의 등록된 링크

 huff022514로 등록된 네이버 블로그 포스트 수는 99건입니다.

0506 [내부링크]

오늘도 어김없이 오전에는 강의 듣고... 오후에는 한이음 프로젝트 모임 도와주세요... 헤어지고 저녁 먹고 시프 리눅스 과제 함 이번주 과제는 셸 스크립트 관련 내용이었는데 코드 짜는 것보다 vi 에디터 쓰는 게 더 어려웠던 것 같다... 글자 하나 지우고 단어 하나 수정하고 줄 하나 지우고 붙여넣는 것도 익숙하질 않으니까 엄청 버벅이고... 방향키 못 쓰는 것도 너무 짜증나고... 서버 개발자는 안 할래... 그리고 이건 오늘의 일기 쓰는 이유 어버이날 선물로 드리려고 주문한 비누 꽃다발이 도착했다! 솔직히 꽃다발 자체 가격은 비싸지 않아서 퀄리티 기대는 안 했는데 생각보다 예뻐서 놀람 한진택배 배송이 느린 건 아닌데 배송 상태.......

Servlet.service() 호출이 예외를 발생시켰습니다. java.lang.NullPointerException 오류 해결 [내부링크]

내가 해결한 건 아니고, 같은 팀 언니가 해결했다 진짜 너무 대단해... ControllerAction 클래스의 requestPro 메소드에서 발생한 에러. 116번 라인에서 널 포인터 익셉션 떠서 println으로 변수 하나하나 찍어보니 108번 라인에서 command에는 /login/login.do가 들어 있는데도 commandMap.get(command)가 널을 반환해서 com에 널 값이 들어가는 게 문제였음 원인은 Command.properties 파일에 있었다 Command.properties 파일은 패키지-파일명 형태를 *.do 형태와 매핑해 두는 파일이다. 위는 수정 후 사진이고, 원래는 1번 라인도 2번 라인처럼 /login.do=meetu.action.LoginAction 형태로 작성되어 있었던 게 문제였다. ControllerActio.......

이클립스 모델2 패턴 DB 계정 여러 개 사용하기 [내부링크]

Oracle DB 사용 Servers/server.xml <GlobalNamingResources> 태그 내부에 db 계정 등록 Servers/Context.xml <Context> 태그 내부에 위(server.xml)에서 작성한 db 계정 ResourceLink 등록 프로젝트 폴더/WebContent/WEB-INF/Web.xml (없다면 새로 생성) * ControllerAction 클래스는 사용자의 요청 받아 해당하는 action 클래스와 매핑 (*.do) * Command.properties 파일은 action 파일명을 *.do 형식으로 매핑해 저장 (/login.do=프로젝트명.action.LoginAction) 이렇게 하면 여러 DB 계정을 사용할 준비는 끝났다. 각 DAO 클래스에서 위 블러 처리한 부분에 db name을 작성해 사용하면 된다. (orcl1, orcl2)

42서울 체크인 미팅 후기, 정보 공유 [내부링크]

오늘 지난번에 신청 성공한 42서울 체크인 미팅이 진행되었다. 정보 공유를 위해 관련 내용을 상세히 적어보려 한다. 본래는 체크인 미팅 신청 시 발급되는 QR로 오프라인에서 참석 여부를 확인하는데, 코로나19 상황으로 인해 실시간 화상 회의로 진행되어 QR은 쓸 일이 없어졌다. 온라인 체크인 미팅은 사전에 발송되는 메일에 포함된 줌 링크로 10시~19시 30분 중 원하는 시간대에 접속해 진행하면 된다. (12시~13시는 점심시간이라 운영되지 않음) 줌 링크에 접속하면 대기실로 입장하고, 입장한 순서대로 한 명씩 체크인 미팅을 진행한다. 늦잠을 자서 10시 넘어서 접속하는 바람에 오후에나 진행하겠다 싶었는데 줌 회의실이 터지는 바람에.......

써니나타스(Suninatas) 23번 [내부링크]

Blind SQL 문제, 20년도 초에 작성했던 코드를 지금 돌려보니 안 돌아서 패스워드 길이 구하는 부분 포함해 새로 작성함. 문제 및 힌트는 위와 같고, 아래가 새로 작성한 파이썬 코드. 패스워드 길이 알아내기 파라미터 부분은 ?id=ad'+'min'and(len(pw)>%d)--&pw=1 이다. uri 인코딩 때문에 이대로 파라미터를 보내면 계속 False만 떠서 제대로 값을 못 구한다. 따라서 위와 같이 uri 인코딩을 해서 보냄. 실행 결과 패스워드 앞 10글자 알아내기 * v로 시작하지 않으면 guest가 잡혀버림... 실행 결과 패스워드 뒤 10글자 알아내기 실행 결과 auth는 v3ryhardsqli이다. 소문자로 입력해야 함.

2종 보통 면허 취득 [내부링크]

기능 합격하고 바로 주행 교육받고 시험 치고 싶었는데 방학 끝나갈 무렵이어서 그런지 한 주가 예약이 꽉 찼대서 (;;) 어쩔 수 없이 기능 합격하고 일주일만에 주행 교육을 받았다. 감을 잃을까 걱정이었는데 첫날 교육 3시간은 야간주행이었는데도 무난무난하게 잘 받았다. 이틀 뒤에 3시간 마저 교육받고 주행 시험을 쳤는데 이날 교육 때 완전 엉망으로 운전했다 ㅋㅋㅋㅋㅋ 첫날에도 안 했던 실수 연발했음... 핸들 감다 머리 멈춰서 팔 교차 파지하고 브레이크 밟아야 하는데 엑셀 밟고 ^^... 게다가 학원에서 가장 어려운 코스 우회전 부분에서 공사까지 하는 바람에 시험 전까지 멘붕 상태였다. 그래도 강사님이 한번도 호통치거나 혼내.......

드디어 42서울 체크인미팅 등록 성공 [내부링크]

1단계 테스트 통과는 작년 여름에 했던 것 같은데 체크인미팅 신청에 번번히 광탈해서 반쯤 포기하고 있다 오늘 열린 4차에 드디어 성공했다... ㅠ_ㅠ 42서울은 과학기술정보통신부가 지원하는 소프트웨어 인재 양성 프로그램인데, 1단계 논리력/기억력 테스트 통과 후 체크인 미팅으로 본인 확인, 1달간 집중 교육(라피신)을 받은 뒤 최종 테스트에 합격하면 본과정을 최대 2년간 이수할 수 있다. 본과정에서는 삼성 싸피처럼 매달 지원금이 백만원씩 나온다고 한다! 1단계 논리력/기억력 테스트는 비전공자도 도전할 수 있는 수준이어서 평소 코딩에 관심이 있었다면 도전해 봐도 좋을 것 같다. 테스트 유형은 검색하면 많이 나오니 참고! 다만.......

0501 [내부링크]

하루종일 딱히 한 게 없어서 오늘 물 준 화분 사진이라도 첨부... 휴식이 간절했어서 늦잠자고 종일 쉰 것 자체가 너무 행복했다 선인장만 키우다가 별생각 없이 율마를 들였었는데 물 하루만 못 줘도 가지가 축축 처지고 난리다... 키우기 까다로운 듯 -_- #블챌 #오늘일기

0502 [내부링크]

오늘도 결국 놀았다는 글 오전에는 한이음 프로젝트 진행 중인 웹 DB 조금 수정했다 오후에는 친구 사진 찍어 주러 동네 구석구석 돌았다 첨으로 미러리스 카메라도 들어 봤다... ㅎㅎ 사진 잘 찍진 않지만 그래도 프사감 하나 정돈 있지 않을까 그리고 지금은 연어덮밥이랑 육회에 가볍게 반주 하는 중 ~.~ 노는 게 제일 행복해 역시 #블챌 #오늘일기

0503 [내부링크]

정신없는 하루... 일어나서 두어 시간 따로 공부하는 자격증 공부하고 강의 듣는데... 학교에서 빌린 책 반납하는 걸 까먹어서 강의 듣다 말고 부랴부랴 학교 다녀왔다... ㅋㅋㅋㅋㅋㅋㅋㅋ 왕복 세 시간 순삭 그리고 강의 마저 듣다 7시부터는 한이음 프로젝트 미팅이 있었다 기존에 짰던 코드를 모델2 방식으로 바꾸고 있는데, 아무래도 팀원끼리 공부하다 보니 모르는 점 투성이여서 멘토님께 여쭤보려고 뵙자고 했다 적당히 예시 코드 정도 보내 주실 줄 알았는데 멘토님은 두 시간 동안 열심히 강의를 해 주셨고... 거의 세 시간 꽉 채워서 회의했다 열정 부자 멘토님 덕분에 막막했던 부분은 어느 정도 해결된 듯 내일 같이 로그인 부분 코.......

0503 한이음 미팅 모델 2 큐앤에이 [내부링크]

어제 한이음 줌 미팅에서 멘토님께 여쭤봤던 큐앤에이 복습 겸 정리 jsp니까 카테고리는 일단 자바로 해 둬야겠다 Q1. dao, dto 외에 service 클래스 만드는 게 좋을지? action 클래스는 각 클라이언트의 요청 처리 (service 클래스 객체 생성) service 클래스는 각 클라이언트의 요청을 처리하는 로직 구현 A1. 설계하기 나름. action이 service 역할까지 해도 됨. 컨트롤러는 사용하지 않음. (스프링 MVC 패턴에서 사용 - 현재 우리는 이클립스에서 모델 2 방식으로 구현 중이기에 해당 사항 없음) command.properties에 사용할 action 클래스들이 들어가야 함. command.properties와 CommandAction.java, ControllerAction.java 형식은 보내 주.......

나의 충성심 == 천원 [내부링크]

블챌은 망했지만~ 일기 쓰는 거 귀찮다고 생각하면서도 나름 즐기고 있었기 때문에 재밌는 일 생기면(사실 없어도) 종종 일기 적어야지 근데 이렇게 생각하게 된 것도 네이버 밥 떠맥여주는 꼴이라 짜증~... 걍 이걸 의도한 거 아닐까 블로그 활성화 맞다 해피캠퍼스 오늘 처음으로 출금 신청~~ 꽁돈 같아서 기분 좋은데 수수료 엄청 떼가서 미묘한 기분 -_- 암튼 아침에 빈둥거리다 실강 전에 밥 못 먹게 생겨서 라면을 끓이는데 냄비가 없어서 넓은 팬에 끓임... 결과... 엄청난 한강라면 생성 싱거운 라면을 먹느니 굶는게 낫다 생각해서 간장 좀 넣으려는데 이마저도 실패해서 쪼륵이 아니라 콸콸 따라버림 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 진짜 콸콸. .......

0505 [내부링크]

오늘도 써 본다 일기 아침에 눈뜨면 젤 먼저 하는 것 = 율마 물 주기 예쁜 수형으로 자라게 하려면 아래에서 위로 쓸어 주라고 해서 매일 한 번씩 쓸어 주고 있는데, 그때 손에 배는 향이 좋다 그리고 드디어! 오늘 오후까지 해서 수업지도안 끝냈다 캬캬 전반적인 틀 구성하는 게 오래 걸렸지 막상 세안 짜는 건 그렇게 오래 안 걸린 것 같다 피드백 받고 엄청나게 수정할 게 예상되지만... 아무튼 한숨 돌림 그리고 그리고 그리고 오늘 일기 써야지 생각했던 가장 큰 이유... 앱솔루트 스트로베리 병이 너무 예쁘다... ㅠㅠ 원랜 앱솔루트 라임 사려고 나갔는데 저 패키징을 보고 어떻게 그냥 지나치지?... 너무 내 취향이어서 충동구매함.......

Servlet.service() 호출이 예외를 발생시켰습니다. java.lang.NullPointerException [내부링크]

login.jsp 모델2 방식으로 옮기던 중 ControllerAction 클래스의 requestPro 메소드에서 발생한 에러. 아직 해결 못 했다... 116번 라인에서 널 포인터 익셉션 떠서 println으로 변수 하나하나 찍어보니 108번 라인에서 command에는 /login/login.do가 들어 있는데도 commandMap.get(command)가 널을 반환해서 com에 널 값이 들어가는 게 문제인 것 같다. 톰캣 xml 파일이 문제인 건지... 이번주까지 login 옮기는 게 목표였는데 아무래도 힘들 것 같다

써니나타스(Suninatas) 28번 [내부링크]

포렌식으로 분류되어 있는 문제. zip 파일을 다운로드받을 수 있는 링크가 있다. 압축을 풀려고 하니 암호가 걸려 있어 풀 수 없다. 압축 파일의 내용물은 위와 같다. 문제 페이지에서 브루트포스가 필요 없다고 했으니, 파일에 조작을 가해 암호를 없애야 할 것이라고 생각했다. * zip 파일 포맷에 대해 찾아보았다. (https://blog.naver.com/koromoon/220612641115) 로컬 파일 헤더, 센트럴 파일 헤더의 flags 부분이 암호화와 관련된 부분이다. zip 파일의 헤더 시그니처는 로컬, 센트럴 각각 50 4b 03 04, 50 4b 01 02이다. HxD로 파일을 열어 검색해 보니, 다섯 개의 헤더가 있음을 알 수 있었다. flags 부분(50 4b @@ @@ @@ @@ XX XX에서 X.......

[파이썬3] 백준 단계별로 풀어보기 - 1차원 배열 [내부링크]

10818번: 최소, 최대 코드 입력받은 값인 N을 사용하기 위해 위와 같이 코딩했다. 파이썬 스타일의 코드는 아래와 같다. 2562번: 최댓값 코드 2577번: 숫자의 개수 코드 처음엔 이렇게 복잡하게 풀었었음... 3052번: 나머지 코드 1546번: 평균 코드 8958번: OX퀴즈 코드 4344번: 평균은 넘겠지 코드

[파이썬3] 백준 단계별로 풀어보기 - 함수 [내부링크]

15596번: 정수 N개의 합 코드 for문 사용 4673번: 셀프 넘버 코드 1부터 10,000까지의 값이 든 숫자 리스트를 만든 뒤 셀프 넘버가 아닌 수를 제거하는 식으로 풀었다. 1065번: 한수 135, 123과 같이 숫자의 각 자리수가 등차수열을 이루는 경우를 한수라고 한다. 1부터 99까지의 수는 모두 한수로 본다. 코드 1부터 99까지의 수는 모두 한수이다. 또힌 문제의 조건에서 1000보다 작거나 같은 수가 주어진다고 제시했고, 1000은 한수가 아니다. 따라서 세 자리 수의 경우만 if문에서 비교하도록 했다.

써니나타스(Suninatas) 29번 [내부링크]

포렌식으로 분류되어 있는 문제이다. 파일을 다운로드받고 헥스에디터로 열어 보면 위와 같은 헤더를 볼 수 있다. 파일의 원래 확장자는 egg일 것이다. 확장자를 바꾸고 압축을 풀어주었다. vmware 파일들이 보인다. Windows7.vmx 파일을 실행하면 vmware로 윈도우7이 부팅된다. 부팅에 성공하면 30초 후 컴퓨터가 로그오프될 것이라는 창이 뜬다. cmd 창을 켜 shutdown /a 명령을 입력해 예약된 로그오프를 취소해 주면 된다. 1. 네이버에만 들어가면 사이버경찰청 차단 화면으로 넘어간다 > 파밍 공격 방법 중 한 가지인 hosts 파일 변조를 의심해 볼 수 있다. 위와 같은 경로로 진입하면 hosts 파일을 확인할 수 있다. 그러나 hosts 파일은.......

써니나타스(Suninatas) 30번 [내부링크]

포렌식으로 분류되어 있는 문제. 메모리 덤프 파일을 분석하기 위해 volatility라는 툴을 사용했다. volatility 폴더에서 cmd 창을 열고, 아래와 같은 명령어를 입력한다. 메모리 덤프 파일은 volatility 폴더 내에 있어야 한다. volatility_2.6_win64_standalone -f "MemoryDump(SuNiNaTaS 30)" imageinfo * volatility에서 imageinfo 명령어는 덤프 파일에 대한 정보를 출력할 때 사용한다. 해당 메모리 덤프 파일은 32bits Windows 7 운영체제의 메모리 덤프 파일이다. suggested profiles에서 사용할 프로필을 선택하면 된다. 1. 김장군 pc의 ip 주소 네트워크 상태를 출력하는 netscan 명령을 사용한다. volatility_2.6_win64_sta.......

써니나타스(Suninatas) 31번 [내부링크]

포렌식으로 분류된 문제. pdf를 분석해 키 값을 찾아야 하는 것 같다. 다운로드받은 파일은 위와 같다. 특이한 점은 보이지 않는다. http://www.malwaretracker.com/pdf.php 위 사이트는 pdf에 멀웨어가 있는지를 확인하기 위해 pdf 분석을 도와주는 사이트이다. 위 사이트에 pdf를 업로드해 보았다. 멀웨어로 분류되었다며 아래에 여러 경고 문구가 뜬다. 정상적인 pdf를 분석하면 경고 문구 없이 analysis time까지만 출력된다. Object 37.0에는 자바스크립트 코드와 base64로 인코딩된 암호가 있다. 디코딩 결과가 base64로 나와서 열 번 정도 디코딩을 반복했으나 정답이 아니라는 문구였다. 다른 Object를 살펴보던 중, 39.0에 PDF 헤더가 있.......

써니나타스(Suninatas) 32번 [내부링크]

써니나타스의 마지막 문제! 포렌식으로 분류된 문제이다. 다운로드받은 파일을 헥스에디터로 열어 보았다. FAT32의 부트섹터 파일이다. 한 섹터는 512byte이고, 이 섹터의 끝인 0x01FE – 0x01FF에는 부트레코드의 시그니처 55AA가 있어야 한다. 그러나 이 파일에서는 모든 섹터의 시그니처가 앞으로 당겨져 있다. 00을 삽입해 제자리로 돌려놓았다. 파일 복구 시 주로 사용하는 FTK Imager를 이용해 해당 파일을 열어 보면 2차 테러 계획이라는 파일이 보인다. 이를 추출했다. 1. 테러 계획이 들어 있는 문서의 수정 일시 2016-05-30_11:44:02 2. 테러 장소 Rose Park 2016-05-30_11:44:02Rose Park 를 md5 해싱하면 8ce84f2f0568e3c70665167d44.......

2종 보통 장내기능시험 합격 [내부링크]

운전면허 장내기능시험에 합격했다! 연습면허는 학원 측에 발급을 신청해서 나한테 없는 관계로 도로주행 교육 예약현황이라도 첨부... 전문학원에 등록해서 면허 취득에 도전하는 중인데, 내가 등록한 학원은 필기시험 합격 원서를 제출하면 4시간 스트레잇으로 기능시험 연습 뒤 바로 기능시험을 친다. 겁이 많은 성격이라 한 번은 떨어질 걸 예상했는데 예상 외로 한 번에 100점으로 붙었다 ㅎ_ㅎㅋㅋㅋㅋㅋㅋ 다른 학원 중에서는 양일에 걸쳐 첫날에 2시간 교육받고 다른 날에 2시간 연습 뒤 시험을 치는 곳도 있는 것 같다. 개인적으로는 내가 다니고 있는 학원처럼 하루에 몰아서 치는 편이 낫다고 생각한다. 개인적으로 2시간 교육을 마친.......

[파이썬3] 백준 단계별로 풀어보기 - 문자열 [내부링크]

11654번: 아스키 코드 코드 11720번: 숫자의 합 코드 문자열 문제여서 str로 입력받았다. list 형식으로 입력받아도 됨. for문 조건은 for i in str로 작성해도 되지만 입력받은 변수 N을 사용하기 위해 위와 같이 코딩함. 10809번: 알파벳 찾기 코드 파이썬의 find 함수는 문자열에 해당 문자가 있다면 그 인덱스를, 없다면 -1을 반환한다. 아래는 처음 짰던 코드... 아직도 파이썬에 익숙하지 않다 2675번: 문자열 반복 코드 1157번: 단어 공부 코드 1152번: 단어의 개수 코드 2908번: 상수 코드 A[n:m:-1] : A의 n번 인덱스부터 m번 인덱스까지의 역순 (m번 인덱스는 포함되지 않음) n을 생략하면 처음부터, m을 생략하면 끝까지. 5622번: 다.......

웹 플젝 진행 현황이랑 동아리 주절 [내부링크]

동아리~~ 드디어 방학 활동이 끝났다. 수업 진행하는 걸 방학 초반에 했으면 좀 나았을 것 같은데 2월에 하려니까 더더 하기 힘들었다... ㅠㅠㅋㅋㅋㅋㅋ 학기 중 동아리 운영은 웹해킹 복습 + 시스템 해킹, 해킹 대회 선정 및 대회 준비하는 식으로 진행될 듯. 확실히 남 가르치면 는다는 말은 맞는 것 같다. 작년에는 파이썬도 SQL도 낯설었어서 Blind SQL 풀 때 다른 분 라이트업 참고하는 경우가 잦았는데, 이젠 어느정도 머릿속에 정리가 된 느낌이다. 쉘에 플래그 값 하나씩 도착할 때 너무 뿌듯함... 웹 플젝 그동안 추가, 수정한 것들 중 내가 코딩한 부분만 업로드 회원가입 (join.jsp + @) - 회원가입 시 학사정보 DB와 비교해 DB에 존.......

써니나타스(Suninatas) 16번 [내부링크]

* 15번 문제 라이트업은 이전 글들 중 있습니다. 다운로드를 누르면 packet_dump.zip이 다운로드되고, 이를 압축 해제하면 packet_dump.pcap 이라는 이름의 패킷 파일이 나온다. 패킷 파일은 와이어샤크라는 패킷 분석 툴을 이용해 분석한다. 와이어샤크로 pcap 파일을 열면 수많은 패킷이 보이는데, 우리가 알아내야 할 것은 패스워드이므로 HTTP 프로토콜 중 POST 방식으로 보낸 패킷만 정렬해 보았다. 몇 개 되지 않는다. 위와 같이 서버에 보낸 id와 pw 값을 확인할 수 있다. 하나하나 써니나타스 홈페이지에 입력해 로그인 시도를 해 보면 Auth Key 값을 알아낼 수 있다. 개수가 많지 않아 직접 로그인 시도를 했었는데 개수가 많다면 파이.......

써니나타스(Suninatas) 17번 [내부링크]

QR코드가 망가졌다는 문구와 QR코드가 보인다. QR코드를 복구하라고 한다. 쉬어가는 문제인 것 같음! 포토샵으로 대강 그렸다. QR코드 스캐너를 이용해 스캔하면 된다. Auth Key는 YouAreQRCodeMaster~! 이다.

써니나타스(Suninatas) 18번 [내부링크]

소스 코드에 별다른 힌트는 없다. 아스키 값으로 보여서 대강 코드를 짜 내용을 확인해 보았다. 위와 같은 base64 코드가 나온다. 이를 디코딩한 값은 Today is a good day. The AuthKey is VeryVeryTongTongGuri!이다. + 예전에 풀었던 문제라 코드를 c로 짰었는데, 파이썬으로 풀면 훨씬 간단하다. 실행 결과 (사진 하단)

써니나타스(Suninatas) 19번 [내부링크]

소스 코드에 별다른 힌트는 없다. 바이너리 디코더를 이용해 위 문자열을 디코딩해 보면, NVCTFDV KF JLEZERKRJ REU KFURP ZJ R XFFU URP REU RLKYBVP ZJ GCRZUTKWZJMVIPYRIU 라는 결과가 출력된다. (https://cryptii.com/pipes/binary-decoder) * 띄어쓰기가 되어 있는 것을 보아 카이사르 암호화인 것을 알 수 있다. 카이사르 암호는 치환 암호로, 예를 들어 abcd와 같은 문자열을 3글자씩 밀어내 defc로 치환할 수 있다. 단순하고 간단하다는 장점이 있지만, 철자의 빈도와 자주 사용되는 단어와 형태를 이용해 쉽게 풀 수 있다는 단점이 있다. (https://ko.wikipedia.org/wiki/%EC%B9%B4%EC%9D%B4%EC%82%AC%EB%A5%B4_%EC%95%94%ED%98%B8) 카.......

써니나타스(Suninatas) 20번 [내부링크]

리버싱 너무 어려워... correct 함수가 호출될 수 있는 input 중 가장 짧은 것을 구하라고 한다. 리버싱 문제여서 압축 파일을 다운로드받으면 당연히 exe 파일이 있을 줄 알았는데 확장자가 없는 파일이 있었다. 헥스에디터 등으로 파일의 헤더 부분을 보면 elf 파일이라는 것을 알 수 있다. * elf 파일은 리눅스 파일이다. 올리디버거는 elf 파일을 다룰 수 없기 때문에 Ghidra라는 무료 디스어셈블링 프로그램을 설치했다. Ghidra는 jdk 11 이상의 버전에서만 동작한다. 노트북에 깔려 있는 jdk가 8.0 버전이어서 문제를 풀기 위해 지우고 재설치하느라 번거로웠다. * Ghidra 설치 및 프로젝트 생성은 https://ndb796.tistory.com/323을 참고.......

써니나타스(Suninatas) 21번 [내부링크]

솔루션 키를 알아내야 하는 듯하다. 이미지 파일의 크기가 jpg 확장자인 것에 비해 매우 크다. 여러 사진을 한 장에 넣어 두었을 수도 있겠다는 생각이 들었다. * jpg의 헤더는 FF D8로 시작한다. EOI (End of Image)는 FF D9이다. FF D8 FF E0 @@ @@ 4A 46 49 46과 FF D8 FF E1 @@ @@ 45 78 69 66 두 가지가 jpg의 파일 시그니처이다. (https://en.wikipedia.org/wiki/List_of_file_signatures) 이 jpg 파일의 시그니처는 ff d8 ff e1 29 72 45 78 69 66이다. 검색 결과를 보면 알 수 있듯, 이 파일에는 맨 처음 헤더를 포함해 4개의 jpg 파일이 포함되어 있음을 알 수 있다. * 파일 carving이란 파일을 깎는다는 뜻으로, 디지털 포렌식 용어이.......

써니나타스(Suninatas) 24번 [내부링크]

* 22, 23번 문제 라이트업은 이전 글들 중 있습니다. 시스템으로 분류되어 있는 문제. 다운로드 링크를 누르면 suninatas.zip 파일이 다운로드된다. 압축을 해제하면 별다른 확장자가 없는 suninatas24라는 이름의 파일이 나온다. 헥스 에디터로 열어 보면 헤더 부분에 AndroidManifest.xml이라는 파일이 눈에 들어온다. 이는 어플리케이션의 정보가 적혀 있는 파일이다. 따라서 suninatas24 파일의 확장자는 apk일 것으로 예상했다. 디컴파일을 하기 위해 jadx라는 프로그램을 다운로드받았다. * apk 파일은 zip으로 압축된 파일이다. 따라서 zip으로 확장자를 바꾸면 구조 정도는 볼 수 있지만 소스코드가 들어 있는 dex 파일은 바로 볼 수 없.......

써니나타스(Suninatas) 25번 [내부링크]

시스템으로 분류되어 있는 문제. 마지막 숫자라는 문구가 적혀 있다. MAKE 버튼을 누르면 번호가 생성된다. 다운로드 버튼을 누르면 zip파일이 다운로드되고, 압축을 해제하면 확장자가 없는 파일이 나온다. 파일을 헥스 에디터로 열어 보면 헤더 부분에 androidmanifest.xml이 있다. apk 파일일 것이다. zip으로 확장자를 바꾸어 압축을 해제했다. class.dex 파일을 jadx로 열어 보았다. 드래그한 라인을 보면 get 방식으로 id, pw, name, number 네 가지 값을 보낸다. id와 pw는 이전 문제처럼 써니나타스 id와 pw일 것이다. name은 getContacts 함수에서 SuNiNaTaS여야 함을 알아냈다. number은 앞서 발급받은 네 자리 숫자일 것이다. http://.......

써니나타스(Suninatas) 26번 [내부링크]

포렌식으로 분류되어 있는 문제. 공백과 문장 부호를 생략한 암호문을 빈도 분석으로 푸는 문제이다. 암호문이 길기 때문에 빈도수 분석 툴을 사용했다. (https://math.bab2min.pe.kr/substt) N이 가장 빈도가 높으므로 e로 두고, e로 끝나는 단어 두 개 중 BPe가 24번 출현한 것을 보아 the라고 생각했다. 마지막 부분에 heIe와 IeeI가 눈에 띈다. he@e는 here일 것으로 생각해 I를 r로 두었다. reer이 들어가는 단어는 드물다. (맨 마지막 단어) 단순하게 career이라고 생각했다. chaQHZYG이라는 단어가 여러 번 출현한다. 사전을 찾아보니 cha로 시작하고 t, h, e, c, a, r이 포함되어 있지 않으며 중복되는 글자가 없는 8글자 단어에는 chalk.......

써니나타스(Suninatas) 27번 [내부링크]

시스템으로 분류되어 있는 문제. NSA 수사관을 도와 마피아 조직원들 사이의 메시지의 비밀을 밝혀내라고 한다. down 버튼을 누르면 나오는 글이다. 글에서는 별다른 힌트를 찾을 수 없다. 문제의 제목이 x86인데에서 힌트를 얻었다. (바이너리 코드 분석은 x86 디버거를 사용한다) 글 내용 전체를 복사해 헥스에디터로 연다. 헥스값을 다시 복사해 준다. 올리디버거로 아무 exe 파일을 연다. 그 다음, 어셈블리 코드 전체 선택 > 우클릭 > Binary > Binary paste를 누르면 헥스값이 어셈블리 값으로 자동 변환되어 붙여넣어진다. 어셈블리 값으로 변환되어 붙여진 코드 바로 아래 부분에 bp 설정 맨 첫번째 줄에 New origin here로 eip.......

파이썬 3.7 설치하기 [내부링크]

파이썬 2.X 버전과 3.X 버전은 문법에 차이가 있다. print() 함수로 예를 들어 보겠다. 때문에 파이썬을 다운로드받을 때 항상 버전에 유의해야 한다. 최신 버전(3.8, 3.9)은 해결되지 않은 버그가 존재하기 때문에 3.7 버전을 다운로드받는다. 이 포스팅에서는 3.7.5 버전을 설치한다. 위 링크에 접속해 하단으로 내리면 Files 탭에서 다운로드 파일을 확인할 수 있다. 컴퓨터가 32비트 운영체제인지, 64비트 운영체제인지에 따라 다운로드받아야 할 파일이 다르다. 윈도우 기준 빠른 운영체제 비트 확인 방법은 내 컴퓨터 우클릭 > 속성을 누르면 된다. 또는 제어판 > 시스템 및 보안 > 시스템에서 확인 가능하다. 운영체제의 비트까.......

VS Code 파이썬 개발 환경 구축 [내부링크]

지금까지는 파이참을 사용했지만 보다 가벼운 툴인 VS Code를 이용해 보려고 한다. * 파이참은 교육 기관 이메일(.ac.kr로 끝남)이 있으면 졸업 연도까지 무료로 Professional 버전을 이용할 수 있다. Community 버전은 모두 무료로 사용할 수 있다. 확장 탭에 Python을 검색해 나오는 것들 중 Python, Python for VSCode, Python Extension Pack을 설치한다. .py 파일을 열거나 새로 작성 후 별도의 설정 필요 없이 Ctrl + F5를 누르면 코드가 실행된다. F5를 통해 디버깅도 가능하다. VS Code에 C 개발 환경 구축할 때에는 엄청 삽질했는데 파이썬은 매우 간단하게 설치가 끝났다... * Code Runner 확장 도구를 사용 중이라면 Code Runner 단축.......

써니나타스(Suninatas) 9번 [내부링크]

페이지 소스에 기초 리버싱 문제라고 힌트가 적혀 있다. 파일을 크롬으로 다운로드하면 안전한 페이지가 아니라는 창이 뜨며 막히기 때문에 다른 브라우저를 이용해 다운로드받고, 암호 suninatas를 입력해 압축을 해제하면 Project1.exe라는 파일이 나온다. exe 파일을 실행하면 위와 같은 창이 뜨는데, 임의의 값을 입력하고 Click 버튼을 눌러도 아무런 반응이 없다. 디스어셈블리와 디버그가 가능해 리버싱할 때 쓰이는 프로그램인 올리디버거로 파일을 열어 보았다. 아래는 창 별 기능이다. (https://ladybug.tistory.com/entry/올리디버거Ollydbg-설치-및-사용법) 1. 주소 창: 명령어가 실행될 주소를 가르키는 창 2. OP코드 창: 기계어를.......

써니나타스(Suninatas) 10번 [내부링크]

소스 코드에 리버싱 문제라는 힌트가 주어져 있다. 파일을 다운로드받아 압축을 풀면 reversing.exe라는 파일이 나오고, 이를 실행시키면 위와 같은 창이 뜬다. 올리디버거로 파일을 열어 보려고 했으나, 열리지 않았다. 헥스 에디터로 열어 본 결과는 아래와 같다. 2theT@P이 입력될 시 Auth key값 Did U use the Peid?이 출력된다. Peid를 이용해 푸는 것을 의도했나 보다. * PEiD 역시 리버스 엔지니어링 시 정보를 얻기 위해 사용하는 프로그램이다. 섹션 뷰어, 디스어셈블러 등의 기능이 있다. PEiD로 파일을 열어 본 결과 reversing.exe는 C# 프로그램임을 알 수 있다. 올리디버거는 .net, C#의 디버깅을 지원하지 않는다. 때문에 올리디버.......

써니나타스(Suninatas) 11번 [내부링크]

파일을 다운로드받고 압축을 해제하면 exe 파일이 나온다. 레지스터 키를 찾는 리버싱 문제이다. 텍스트만 보기로 문제 해결 메시지를 찾아본 결과, 위에 2V XS B6 H1 0F이라는 글자들이 보인다. 위의 문자열이 문제의 답(exe 파일에 입력해야 하는 값)인지를 알고자 디버거를 이용해 보았다. 알림 팝업이 뜨기 전 브레이크포인트 설정(F2)를 하고, 디버거를 실행(F9)해 abcde를 입력해 보았다. 우측 레지스터 창을 보면 EAX라는 주소에 내가 입력한 abcde가 들어가 있고, EDX라는 주소에 위에서 본 문자들이 있다. 내가 입력한 값이 위의 문자들과 대조되는 것으로 추측할 수 있다. 2VB6H1XS0F를 입력하면 문제 해결!

써니나타스(Suninatas) 12번 [내부링크]

써니나타스에 관리자로 로그인하라고 한다. 실제 써니나타스 로그인 창에 admin을 입력하고 sql injection을 시도해 봤지만 별다른 반응이 없어서 찾아본 결과, sununatas.com/admin 페이지에 접속하면 되는 간단한 방법이 있었다. 페이지에 접속하면 위와 같은 QR코드가 있다. QR코드를 스캔하면 아래와 같은 페이지 주소가 뜬다. MECARD:N:;TEL:;EMAIL:;NOTE:;URL:http://suninatas.com/admin/admlogin.asp;ADR:; 로그인 창이 있는 페이지이다. 이 페이지는 swf 확장자를 사용한다. 페이지 주소의 asp 자리에 swf를 입력해서 파일을 다운로드받았다. (http://suninatas.com/admin/admlogin.swf) 무료 플래시 디컴파일러 JPEXS로 다운로드받은 파.......

써니나타스(Suninatas) 13번 [내부링크]

<!-- Hint : 프로그래머의 잘못된 소스백업 습관 --> <!-- Hint : The programmer's bad habit of backup source codes --> 소스 코드에는 위와 같은 힌트가 있다. 문제 페이지의 url 맨 뒷부분 .asp를 .zip로 바꾸면 zip파일이 다운로드된다. 파일에는 암호가 걸려 있어 열리지 않는다. 압축 비밀번호는 4자리 정수라고 한다. 알집 구버전의 암호 찾기를 이용해 암호를 찾았다. 다른 브루트포싱 도구를 이용해도 된다. 암호는 7642이다. 압축을 해제하면 4개의 이미지 파일과 1개의 txt 파일이 있다. 4개의 이미지를 합하여 key를 구하라고 한다. 이미지 파일을 헥스에디터로 열면 first key: 3nda192n이라는 문구를 확인할 수.......

써니나타스(Suninatas) 14번 [내부링크]

suninatas의 패스워드를 알고 있냐는 질문과, 다운로드 버튼이 있다. 다운로드 버튼을 누르면 evidence.tar 파일이 다운로드된다. evidence.tar 파일의 압축을 해제하면 shadow 파일과 passwd 파일이 있다. 리눅스에서는 사용자 계정 정보를 passwd 파일에 저장해 둔다. 이전에는 사용자 계정 정보뿐만 아니라 사용자의 패스워드 또한 암호화해서 passwd 파일에 넣어 두었으나, 이 방법은 크래킹의 위험이 있다. 따라서 현재는 위와 같이 루트 권한 사용자만 볼 수 있는 shadow 파일에 x로 아예 제거한 뒤 관리한다. shadow 파일의 전체 내용은 위와 같다. 각 항목은 콜론으로 구분되어 있다. daemon:x:15426:0:99999:7::: 항목을 예를 들어 설명.......

VS Code에서 파이썬 모듈 설치 및 import 시 오류 해결 [내부링크]

VS Code 사용 시 파이썬 모듈 설치에는 두 가지 방법이 있다. 첫 번째는 위와 같이 명령 프롬프트를 관리자 권한으로 실행해 를 입력하는 일반적인 방법이다. 관리자 권한으로 실행하지 않으면 빨간 글자로 권한 관련 에러가 뜬다. 두 번째 방법으로는 위 명령문을 VS Code의 터미널 창에 입력하는 것이 있다. 모듈이 성공적으로 설치된 것을 볼 수 있다. VS Code에서 파이썬 모듈 설치 중 빨간 글씨로 권한 관련 에러인 [WinError5]가 발생한다면 VS Code를 관리자 권한으로 실행한 뒤 모듈을 다운로드받거나 관리자 권한 명령 프롬프트에서 다운로드받은 뒤 VS Code를 재실행한다. * 해당 오류가 발생해 VS Code를 관리자 권한으로 실행한 뒤 모.......

요새 하고 있는 것들 [내부링크]

* 당분간은 웹 해킹 워게임 푼 것들 라이트업 올리느라 글 올리는 날에는 글이 대여섯 개씩은 올라가지 않을까 싶어요 ㅠ_ㅠ... 피드 도배가 싫으신 분들은 편하게 이웃 해제해 주세요! 계절학기 듣고 특강 듣고 자격증 시험 치고 봉사까지 하느라 방학이 정신없이 지나갔다... 일단 지금 하고 있는 건 보안 동아리 + 웹 개발 프로젝트. 동아리에서는 해킹 대회(아마 웹 해킹 대회를 나가지 않을까 싶다) 출전을 목표로 스터디를 진행 중이다. 방학에는 웹 해킹 맛보기 느낌으로 쿠키, 자바스크립트, PHP, 버프스위트, SQL 인젝션, 파이썬, Blind/Time Based SQL 인젝션으로 파트를 나눠 임원진이 파트별 강의를 진행하고, 간단한 워게임 문제들.......

FTZ level 4 [내부링크]

파일 및 디렉터리의 목록을 확인하고 힌트 파일을 출력했다. 누군가 /etc/xinetd.d/에 백도어를 심어 놓았다고 한다. * 백도어: 시스템 개발자가 유사시를 대비해 정상적인 절차를 거치지 않고도 프로그램에 접근할 수 있도록 만들어 둔 일종의 뒷문이다. 해커가 정보 탈취 등을 목적으로 프로그램에 백도어를 심는 경우도 있다. /etc/xinetd.d로 이동해 디렉터리 내부 내용을 보았다. backdoor이라는 이름을 가진 level4 권한의 파일이 존재한다. 읽기 권한만 존재하므로 실행은 되지 않는다. backdoor 파일의 내용을 보았다. finger이라는 서비스 함수? 로 보이는 내용이 존재한다. tmp라는 디렉터리 내부에도 backdoor 파일이 있는 것 같다. t.......

웹해킹, 써니나타스 전부 클리어 [내부링크]

웹해킹, 써니나타스 문제를 전부 클리어했다! ^___^ 4월에 대회 준비 시작하면서부터 본격적으로 풀기 시작했으니까 다 푸는 데에는 대충 두 달 정도 걸린 것 같다. 처음에는 쿼리문을 짜는 데에 익숙하지 않아서 Blind SQL Injection 문제가 가장 싫고 어려웠지만 뒤로 갈수록 쿼리문 몇 번 날려 보고 기계처럼 파이썬 코드를 짜게 되었다. 쿼리문만 생각해 내면 길이, 테이블명, 컬럼명, 패스워드 등등을 알아내는 코드는 틀이 대강 정해져 있다 보니 점점 수월하게 풀 수 있었던 것 같다. 가장 어려웠던 건 써니나타스 리버싱 문제였다. 바이너리 코드는 아예 초면인 데에다 올리디버거, 기드라, jadx, IDA 같은 여러 종류의 툴을 사용해야 하.......

[파이썬3] 백준 단계별로 풀어보기 - 입출력과 사칙연산 [내부링크]

알고리즘 문제는 파이썬으로 푸는 게 빨리 풀기에 좋다고 해서, 남은 방학 한 달 동안 백준 단계별 풀이로 연습해 보려고 한다. 사용한 파이썬 버전은 3.7.5이다. 2557번: Hello World 코드 10718번: We love kriii 무슨 이런 문제가 있지 생각함... 코드 10171번: 고양이 코드 10172번: 개 코드 1000번: A+B 코드 1001번: A-B 코드 10998번: A×B 코드 1008번: A/B 코드 10869번: 사칙연산 코드 10403번: 나머지 코드 2588번: 곱셈 코드 쉬운 단계여서 푸는 시간보다 정리하는 시간이 더 걸린다... ㅎ_ㅠ

[파이썬3] 백준 단계별로 풀어보기 - if문 [내부링크]

1330번: 두 수 비교하기 코드 9498번: 시험 성적 코드 2753번: 윤년 코드 14681번: 사분면 고르기 코드 2884번: 알람 시계 코드

[파이썬3] 백준 단계별로 풀어보기 - for문 [내부링크]

2739번: 구구단 코드 10950번: A+B - 3 코드 8393번: 합 코드 15552번: 빠른 A+B 코드 상대적으로 속도가 느린 input() 함수 대신 속도가 빠른 다른 입력 함수를 사용해 보는 문제. sys 모듈을 import한 뒤, input 함수가 들어갈 자리에 사용하라고 한 함수를 그대로 써 주면 해결된다. 2741번: N 찍기 코드 2742번: 기찍 N 코드 N번 반복 시 N부터 시작해서 1씩 감소시키기 위해서는 for문의 범위를 (N, 0, -1)로 지정한다. for (i = N; i > 0; i--)와 동일. 11021번: A+B - 7 코드 11022번: A+B - 8 코드 A+B 시리즈가 정말 많다... 2438번: 별 찍기 - 1 코드 반가운 별 찍기 문제! 위의 코드는 파이썬의 장점을 살려서 짠 코드이다. 문.......

[파이썬3] 백준 단계별로 풀어보기 - while문 [내부링크]

10952번: A+B - 5 코드 또는 아래와 같이 while문 내부에 if문으로 break 조건을 넣을 수도 있다. 10951번: A+B - 4 코드 tc의 개수를 입력받지도 않고 몇 개인지 제시되어 있지도 않다. try - except문을 이용해 잘못된 값이 입력되면 while문을 빠져나가도록 한다. 1110번: 더하기 사이클 코드 조건이 항상 참인 while문을 사용하지 않으려다 보니 코드가 길어졌다... 26으로 예를 들어 새로운 수의 생성 과정을 살펴보면 새로운 수의 십의 자리 수: 기존 수의 오른쪽 자리 수 (6) 새로운 수의 일의 자리 수: 기존 수의 십의 자리 수와 일의 자리 수를 더한 수의 오른쪽 자리 수 (8, 2 + 6) 즉, 새로운 수는 68이고 이 과정이 사이클의 한 단계.......

웹해킹(Webhacking) old-15 [내부링크]

페이지에 접속하면 위와 같은 알림 팝업이 뜨고, 확인을 누를 시 메인 페이지로 돌아간다. Ctrl + U (페이지 소스 보기 단축키)를 눌러 보면 위와 같은 소스를 확인할 수 있다.홈으로 돌아가는 코드 뒤에 GET 방식으로 다른 페이지로 연결되는 코드가 있다.간단하게 문제 페이지 주소 뒤에 ?getFlag를 붙여 접속하면 문제가 풀리겠지만, 버프스위트의 프록시를 이용해 풀어 보았다. 리피터 옵션에서 위 체크박스에 체크해 줘야 서버에서 클라이언트로 전송되는 response도 확인할 수 있다. 프록시에서 Forward를 누르다 보면 다음과 같이 html 코드가 뜬다.alert("Access_Denied");location.href='/';두 줄을 삭.......

웹해킹(Webhacking) old-6 [내부링크]

* base64 인코딩: 2진 데이터를 텍스트로 전환하는 인코딩 방식. 텍스트는 ASCII 문자 중 64개를 사용. 대개 알파벳 대소문자와 0-9까지의 숫자를 사용하며 마지막 두 개의 기호를 어떤 것을 쓰느냐에 따라 종류가 달라짐. 문자(바이트)들이 입력되면 이를 2진수로 전환한 뒤 24비트(3바이트)의 버퍼에 넣고, 이를 6bit 단위로 잘라 Base64 테이블의 ASCII 문자로 변환. 즉 하나의 버퍼에는 3바이트씩만 들어갈 수 있다. 인코딩 과정에서 3바이트 미만의 바이트가 남을 시에는 버퍼의 남는 부분이 0으로 채워지고, 이는 결과에 ‘=’으로 나타난다. 출처:view-source를 누르면 위와 같은 코드를 확인할 수 있다. 두 개의 php 코드가 있다.......

웹해킹(Webhacking) old-16 [내부링크]

문제 페이지에서 w, a, s, d를 누르면 별이 출력되고, 큰 별이 이동한다. 소스 코드를 보았다. mv라는 이름의 함수가 보인다.100, 97, 119, 115는 각각 아스키코드로 w, a, s, d를 의미하고 124는 아스키코드로 |을 의미한다.문제 페이지에서 |을 입력하면 문제가 해결된다.

웹해킹(Webhacking) old-18 [내부링크]

view-source를 눌렀을 때 나오는 소스 코드는 위와 같다.php 코드는 아래와 같이 작동된다.Get 방식으로 ‘no’를 전달받았을 때 db에 연결하고 조건문 안의 문자가 포함되어 있으면 “no hack” 알림을 출력하고 내보냄chall18이라는 테이블에서 id가 guest이고 no가 입력값인 id를 선택해 추출한 값을 result에 저장id가 guest면 “hi guest”를 출력id가 admin이면 문제가 해결되고 “hi admin”을 출력 주석 내용을 통해 admin의 no는 2임을 알 수 있다. 하지만 위의 소스는 id가 guest인 값만을 찾으므로 정답을 찾을 수 없다.sql injection 공격을 통해 문제를 해결해야 할 텐데, if문의 조건에 따라 스페이스(공백), /, (, )는 입력할 수.......

FTZ level 1 [내부링크]

level1에 접속하면 아무런 출력 없이 쉘만 덩그러니 있게 된다. ls -al 명령을 이용해 어떤 파일이 있는지 확인해 보았다. hint라는 파일이 보여 cat hint 명령을 통해 파일 내용을 화면에 출력하니, level2 권한에 setuid가 걸린 파일을 찾으라고 한다.* 해커스쿨 FTZ 문제를 해결하려면 다음 단계 권한(이 문제에서는 level2)이 걸린 쉘을 획득해 my-pass 명령을 통해 패스워드를 확인하면 된다. my-pass는 리눅스 자체의 명령어가 아닌 FTZ 문제를 풀 때에만 사용되는 명령어이다. find 명령을 이용해 파일을 찾아보았다.find / -user level2 -perm -4000 /부터 level2 유저의 파일 중 적어도 SetUID가 걸린 모든 파일을 찾으라는 뜻이다.......

FTZ level 2 [내부링크]

level2에 접속해서 파일 내용을 확인하고 hint 파일을 실행해 본 결과, 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는 내용이 출력된다. * 권한이 없다는 메시지가 너무 많이 떠 가독성이 떨어지는 것을 해결하고자 찾아보니, 2> /dev/null이라는 명령이 있다는 것을 알아냈다. 2는 표준 에러를 의미한다. 따라서 권한이 없다는 에러를 화면에 보여주는 대신 /dev/null로 버리게 된다.find 명령을 사용해 level3의 파일 목록을 출력한 결과, /usr/bin에 editor라는 파일이 있는 것을 알게 됐다. /usr/bin으로 이동해 editor 파일을 실행시키면 위와 같은 화면이 뜬다. * vi 편집기는 리눅스 문서 편집기이다. 편집기 실행 중 리눅.......

웹해킹(Webhacking) old-1 [내부링크]

view-source를 눌러 볼 수 있는 소스코드는 위와 같다. 소스코드를 보았을 때, 현재 쿠키 값은 1로 설정되어 있고, 이것이 페이지에 user_lv, 즉 “level: 1” 부분에 출력되는 숫자일 것이다.쿠키 값이 숫자가 아닌 경우와 6 이상인 경우에는 쿠키 값이 1로 설정되고, 5를 초과한 경우에 문제가 풀리는 것으로 보인다. 쿠키 값에 5 초과 6 미만의 숫자를 넣으면 된다. 쿠키 값을 설정한 뒤에 페이지를 새로고침하면 문제가 풀린다.

FTZ level 3 [내부링크]

파일 및 디렉터리의 목록을 확인하고 힌트 파일의 내용을 화면에 출력해 보았다.autodig이라는 파일의 c 코드가 보인다. argc의 값이 2가 아니면 프로그램이 종료되고, 2일 시에는 “dig @”이라는 문자열 뒤에 argv[1]의 값과 “ version.bind chaos txt”라는 문자열을 붙인 뒤 실행한다. level4 권한을 가진 디렉터리 혹은 파일을 찾으니 위에서 본 autodig이라는 파일이 뜬다. bin 디렉터리로 이동해 autodig 파일을 실행해 보았다. argc 값이 2가 아니어서 프로그램이 종료된 것 같다.위에서 본 힌트에서는 동시에 여러 명령어를 사용할 것과, 문자열 형태로 명령어를 사용할 것을 명시했다. * 리눅스에서 동시에 여러 명령어를 사용하려.......

[R] 동전 던지기 시뮬레이션 [내부링크]

동전을 던지는 횟수의 증가에 따라 앞면과 뒷면이 나올 확률이 어떻게 변하는지 시뮬레이션으로 살펴본다.코드실행 결과수평축은 동전을 던진 횟수, 수직축은 앞면이 나온 확률을 나타낸다.0.5 위치에 표시된 수평선은 이론적 확률이다.실행 결과, 시행 횟수가 증가함에 따라 이론적 확률과 측정한 확률이 유사해짐을 알 수 있다.

써니나타스(Suninatas) 4번 (버프스위트) [내부링크]

문제와 파이썬 풀이는 위 글에plus 버튼을 눌렀을 때, 버프스위트에서의 프록시 값은 다음과 같다.여기서 바로 User-Agent 값을 SuNiNaTaS로, total 값을 50으로 변경한 뒤 Forward 버튼을 눌러 패킷을 보낸 후 인터셉트를 꺼 보았으나, point 값은 1만 증가했다.여러 번 반복해 본 결과, 패킷을 한 번 보낼 때마다 plus 값은 1 증가함을 알 수 있었다. 따라서 리피터를 사용하는 것이 효율적이다.다시 인터프리터를 켠 뒤 Ctrl+R(리피터 단축키)를 눌러 User-Agent 값에 SuNiNaTaS을 넣고, total 값을 수정한 뒤 Send를 눌러 패킷을 보낸 화면이다.Point가 50이 될 때까지 Send 버튼을 누르고 인터프리터를 꺼 주면 브라우저에서Congratul.......

써니나타스(Suninatas) 8번 (파이썬) [내부링크]

Level 8 문제 화면은 위와 같으며, 페이지 소스를 보았을 때의 힌트는 다음과 같다.<!-- Hint : Login 'admin' Password in 0~9999 --> 힌트를 보았을 때, ID 값은 admin이고 PW 값은 0~9999 사이일 것이다.i값은 0부터 9999까지 증가하고, 맞는 ID와 PW가 입력되면 ‘Password Incorrect!’가 사라지고 Auth key 값이 생길 것으로 추정되므로 파이썬의 requests 모듈을 이용해 다음과 같은 코드를 짰다. 실행 결과는 다음과 같다. (일부 생략)Congratulation 알림 팝업이 뜨며, Auth key 값을 확인할 수 있다.

써니나타스(Suninatas) 8번 (버프스위트) [내부링크]

문제와 파이썬 풀이는 위 글에버프스위트의 인트루더 기능을 이용해 문제를 풀 수 있다.ID값에 admin, PW값에 1234를 넣은 뒤 Login을 누른 상태의 패킷이다.Ctrl+I(인트루더 단축키)를 누른 뒤 ID 값에 admin을 넣고, pw값은 §§(페이로드 설정)을 넣어 준다. 이는 자동으로 파라미터 값이 넘어가도록 하겠다는 것을 의미한다. Payloads에서 다음과 같이 페이로드 설정을 해 준다.실행 결과를 보면 다음과 같이 7707 Payload만 길이가 다름을 볼 수 있다.응답 결과를 보면 Congratulation 알림 팝업이 떴음을 알 수 있고, Auth key 값을 확인할 수 있다.

써니나타스(Suninatas) 5번 [내부링크]

페이지 소스는 다음과 같다. 자바스크립트 코드가 난독화되어 있는 것을 볼 수 있다.자바스크립트 코드가 페이지 소스에 그대로 노출되어 있으면 클라이언트가 악용할 수 있는 가능성이 생긴다. 이를 막기 위해 코드를 난독화하는 것이다.코드를 복사해 언패커(unpacker) 사이트를 통해 해독해 보았다.해독 결과는 위와 같은 함수이다. 힌트 부분에 있는 숫자를 함수에 대입하면 될 것이다.개발자 도구의 콘솔을 통해 함수에 키 값을 넣어 보았다.결과 9c43c20c을 입력하면 문제가 풀린다.

써니나타스(Suninatas) 7번 [내부링크]

아이유 사진 아래의 YES 버튼을 누르면 다음과 같은 창이 뜬다.페이지 소스에 있는 힌트도 Faster and Faster인 것을 보아, 빠르게 YES버튼을 누르면 문제가 풀릴 것이다.페이지 요청 직후 YES 버튼을 누르도록 하는 코드를 파이썬으로 짜 보았다.url은 문제 페이지의 url이고 url_1는 알림 창이 뜰 때의 url이다.버튼이 빠르게 눌려 url_1에 slow라는 단어가 존재하지 않는다면, url_1의 내용을 화면에 출력해 준다.코드 실행 결과는 위와 같다.

웹해킹(Webhacking) old-17 [내부링크]

페이지 소스는 위와 같다.입력 폼 login의 input 이름이 pw이고, 코드를 보아 login.pw.value가 unlock일 때 풀릴 것이다.unlock 값은 개발자 도구의 콘솔로 계산할 수 있다.계산 결과 7809297.1을 입력하고 check 버튼을 누르면 문제가 풀린다.

써니나타스(Suninatas) 15번 [내부링크]

* 15번 문제는 간단한 디지털 포렌식 관련 문제이다.디지털 포렌식: 디지털기기의 데이터를 수집해 범죄의 증거를 찾아내는 수사 기법Play the Music을 클릭하면 아래와 같은 페이지로 이동한다.노래가 자동 재생되고, 우측의 자세히 버튼을 눌러 mp3 파일을 다운로드 받을 수 있다. diary.mp3 파일이 다운로드된다.다운로드한 파일의 속성에서 자세히 탭을 살펴보면 지휘자의 값이 GoodJobMetaTagSearch임을 확인할 수 있다. 답은 GoodJobMetaTagSearch.

써니나타스(Suninatas) 6번 [내부링크]

힌트 글을 열어 보면 나오는 내용은 위와 같다. 적힌 글대로, 써니나타스의 글(read me)을 누르면 아래와 같은 창이 뜬다.SQL 쿼리문이다. “pwd”에 내가 입력한 값이 입력되게 된다.위 쿼리문의 뜻은 사용자가 입력한 패스워드를 T_Web13 테이블의 nldx 값이 3인 라인의 swPwd 컬럼을 참조하라는 뜻이다.입력 결과가 항상 참인 쿼리문을 입력한 결과이다. (1' or '1' < '2, sql injection 공격)쿼리문의 뜻은 pwd가 1이거나(or) 1이 2보다 작으면 로그인이 되게 하라는 뜻이다.참고* sql injection 공격: 일반적으로 로그인은 DB에 있는 ID와 PW 값을 대조해 결과가 참이면 로그인된다. 로그인 창에 항상 결과가.......

써니나타스(Suninatas) 22번 [내부링크]

참고* sql injection과 blind sql injection의 차이점: blind sql injection은 쿼리 결과를 참 거짓으로 나타낸다. 페이지 소스를 보면 다음과 같은 힌트가 있다.<-- Hint : guest / guest & Your goal is to find the admin's pw -->id guest, pw guest로 로그인하면 OK guest라는 문구가 뜬다. 힌트에 적힌 대로 id admin의 패스워드를 찾으면 되겠다. 먼저 admin의 pw 길이를 알아내기 위해 다음과 같은 쿼리문을 이용했다.admin' and len(pw) = n—위 쿼리문의 뜻은 id 란에 admin을 입력하고, pw의 길이는 n이라는 뜻이다.* -- 뒤에 입력되는 내용은 주석 처리된다.n의 값을 1부터 하나씩 증가시켜가며.......

써니나타스(Suninatas) 23번 [내부링크]

소스 코드에서 찾을 수 있는 힌트는 다음과 같다.<!-- Hint 1 : guest / guest & Your goal is to find the admin's pw --><!-- Hint 2 : Bypass 'admin' string --> admin 문자열도 필터링 처리되어 no hack이라는 문구가 뜨며 처리되지 않는다.그러나 admi'+'n'과 같이 분리해 입력하면 OK admin이라고 처리된다.ad'+'min'and(len(pw)>n)--을 이용해 비밀번호 자릿수를 찾은 결과 12자리임을 알 수 있었다.ad'+'min' and left(pw,1)=’알파벳’--&pw=1을 이용해 비밀번호 첫 번째 글자를 찾은 결과 비밀번호의 첫 번째 글자는 v이다.위 정.......

웹해킹(Webhacking) old-14 [내부링크]

페이지 소스는 위와 같다.* 자바스크립트의 indexOf 함수: 문자열 내부에서 조건에 맞는 문자열이 몇 번째 위치에 존재하는지를 반환한다. (0부터 시작)* document.URL: 현재 페이지의 주소ck라는 함수가 보인다.먼저 document.URL 값을 ul 변수에 대입한 뒤, ul 내부에서 .kr로 시작하는 문자열이 몇 번째에 위치해 있는지 찾아 ul에 대입하고 ul 값에 30을 곱해 다시 ul에 대입한다.ul 값이 입력된 값(pw.input_pwd.value)과 동일하면 문제가 해결될 것이다.현재 페이지의 주소, https://webhacking.kr/challenge/js-1/에서 .kr은 18번째에 위치해 있다. 따라서 18 * 30을 계산한 값인 540을 입력하면 문제가 풀린다.

[R] 카운트 다운 애니메이션 [내부링크]

animation 라이브러리를 활용해 간단한 애니메이션을 출력해 보고자 한다.(10 ~ 0까지 1초 간격으로 숫자가 감소하는 애니메이션)실행 전, install.package('animation') 명령어를 이용한 animation 패키지 설치가 필요하다.코드rect(0, 0, 1, 1, col = 'orange') - 사각형 영역을 주황색으로 칠함.: rect(xleft, ybottom, xright, ytop, col)text(0.5, 0.5, i, cex = 5, col = rgb(.2, .2, .2, .7)) - 0.5, 0.5 위치에 i값 출력.: text(x, y, labels, cex, rgb(red, green, blue, alpha)x: x 좌표y: y 좌표labels: 출력할 문자 (벡터)cex: 글자 크기(디폴트 크기의 n배)rgb: 글자 색실행 결과 (10부.......

[R] 구글 맵에 위치 표시 [내부링크]

의정부시에 있는 대형 마트 및 백화점의 위치와 이름을 구글 맵에 표시해 보았다.실행 전, install.package('ggplot2'), install.package('RgoogleMaps'), install.package('ggmap') 명령어를 이용한 패키지 설치가 필요하다.또한, R에서 구글 맵을 이용하려면 API 키 인증이 필요하다. API 인증은 아래 블로그를 참고했다.점포명 및 주소 정보코드실행 결과* 위 지도에는 '이마트 의정부점'의 위치가 잘못 지정되어 있다.구글 맵에서 보았을 때, '이마트 의정부점' 의 경도, 위도 값은 127.102330, 37.743026인데 반해, 위 코드를 실행했을 때 '이마트 의정부점'의 경.......

백준 1075번 - 나누기 [내부링크]

문제두 정수 N과 F가 주어진다. 지민이는 정수 N의 가장 뒤 두 자리를 적절히 바꿔서 N을 F로 나누어 떨어지게 만들려고 한다. 만약 가능한 것이 여러 가지이면, 뒤 두 자리를 가능하면 작게 만들려고 한다.예를 들어, N=275이고, F=5이면, 답은 00이다. 200이 5로 나누어 떨어지기 때문이다. N=1021이고, F=11이면, 정답은 01인데, 1001이 11로 나누어 떨어지기 때문이다.입력첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.출력첫째 줄에 마지막 두 자리를 모두 출력한다. 한자리이면 앞에 0을 추가해서 두 자리로 만.......

요즘 먹은 것들 [내부링크]

외대 후문 쪽에 위치해 있는 파스타집 '치보(CIBO)'. 내가 먹은 메뉴는 감베로니이고, 같이 간 언니가 먹은 메뉴는 카비알레이다. 가격은 각각 1.5, 1.2.메뉴판에는 매콤하다고 설명되어 있는데, 매운 걸 싫어하는 내게 매운 맛이 거의 느껴지지 않을 정도로 안 매웠다. 느끼하지 않을 정도인 것 같다. 내가 시킨 메뉴에는 왕새우가 있어서인지 접시와 칼을 별도로 준비해 주셨다.같이 나오는 빵도 따듯할 때 옆 소스에 찍어 먹으면 맛있는데, 배가 너무 불러서 거의 먹지 못했다.집 앞에 있으면 매일 가겠다 생각할 정도로 맛이 괜찮았다.같은 날 방문한 경희대~외대 근처 카페 '컴플리트커피'. 아인슈페너를 좋아.......

[R] 벡터 함수 [내부링크]

벡터 값에 대해 통계적으로 자주 사용하는 함수는'합계, 평균, 분산, 표준편차'일반적으로 자주 사용하는 함수는'제곱근, 절댓값, 벡터 길이' 등이 있다.예시실행 결과 (콘솔)Environment실행 결과 (콘솔)Environment

[R] 배열(Array), 행렬(Matrix), 리스트(List) [내부링크]

배열(Array)- 한 개 이상의 벡터로 구성, 동일한 데이터 유형을 가짐.- 1차원 배열: 벡터/2차원, 다차원 배열: 여러 개의 벡터.- 배열을 만들기 위해 사용하는 함수: array()1차원 배열 생성 예시실행 결과2차원 배열 생성 예시실행 결과행과 열 이름 추가 예시실행 결과행렬(Matrix)- 행, 열로 구성된 2차원 배열- 행렬을 만드는 함수: matrix()행렬 생성 예시실행 결과백터 결합으로 행렬 생성 예시실행 결과리스트(List)- 벡터의 각 원소들이 이름을 가지며, 각 원소는 하나 이상의 값으로 구성될 수 있음.- 서로 다른 데이터 유형으로 구성될 수 있음.- 리스트를 만드는 함수: list()리스트 생성 예시실행 결과

[R] 함수(Function) [내부링크]

함수(Function)- 함수 선언: 함수명 <- function() {...}예시실행 결과

[R] 차트로 영업 실적 비교 [내부링크]

부서별 영업 실적을 바 차트와 파이 차트로 비교한다.파이 차트 코드실행 결과바 차트 코드실행 결과

[R] 데이터프레임(Dataframe) [내부링크]

- 데이터프레임은 R을 이용한 데이터 분석에서 가장 자주 활용되는 객체이다.- 데이터프레임명 <- data.frame(벡터명, 벡터명)과 같이 선언한다.예시실행 결과콘솔 창에서 출력된 변수명들을, Environment 창에서 df 데이터프레임이 생성된 것을 확인 가능하다.5 obs. of 2 variables는 데이터프레임이 5행 2열로 구성되어 있음을 나타낸다.df[행, 열]행(row): obs(observation)열(column): variablesEnvironment 창에서 df을 클릭하면, 다음과 같이 생성된 데이터프레임을 확인할 수 있다.위에서 작성한 코드에 다음과 같은 코드를 추가해 변수명 지정, 행 또는 열의 삭제 방법을 알아보도록 하겠다.* 변수명 지정 시 변수명이 한.......

써니나타스(Suninatas) 3번 [내부링크]

별다른 입력 창도 없고, 페이지 소스를 봐도 힌트를 알아낼 수 없었기에 적힌 그대로 공지사항에 글을 적으라는 문제로 이해했다.Notice 게시판에 들어가면 당연히 글을 작성하는 버튼은 없다.글을 적을 수 있는 Free 게시판으로 가 Write 버튼을 눌러 보면 url이 ‘http://www.suninatas.com/board/free/write’인 것을 알 수 있다.Notice 게시판에 글을 작성해야 하므로 url을 ‘http://www.suninatas.com/board/notice/write’로 고치면 Notice 게시판에 글을 작성하는 페이지에 접속할 수 있다.위 페이지에 임의의 내용을 적은 뒤 SUBMIT 버튼을 넣으면 문제가 풀린다.

써니나타스(Suninatas) 4번 (파이썬) [내부링크]

Plus 버튼을 누르면 Point 값이 1씩 증가하고, 25가 되면 아래와 같은 경고창과 함께 값이 더이상 증가하지 않는다. 페이지 소스를 보았을 때의 힌트는 다음과 같으며, User-Agent 값과 Auth key 값은 화면에 출력대는 값과 같음을 알 수 있었다.지금까지 얻은 정보에 근거해 추측해 보면, 문제를 풀기 위해서는1. Point 값을 50으로 만들어야 할 것이고,2. Point 값이 25를 초과해 50이 되려면 User-Agent 값이 SuNiNaTaS여야 할 것으로 추측된다.문제 페이지의 url은 'http://www.suninatas.com/challenge/web04/web04.asp'이지만, Plus 버튼을 누를 때에는 'http://www.suninatas.com/challenge/web04/web04_ck.asp&#x.......

백준 1547번 - 공 [내부링크]

문제세준이는 컵 3개를 탁자위에 일렬로 놓았다. 컵의 번호는 가장 왼쪽 컵부터 순서대로 1번, 2번 3번이고, 세준이는 이 컵을 이용해서 게임을 하려고 한다.먼저 1번컵의 아래에 공을 하나 넣는다. 세준이는 두 컵을 고른 다음, 그 위치를 바꾸려고 한다. 예를 들어, 고른 컵이 1번과 2번이라면, 1번 컵이 있던 위치에 2번 컵을 이동시키고, 동시에 2번 컵이 있던 위치에 1번 컵을 이동시켜야 한다. 위치를 바꿀 때, 컵을 먼저 들고 이동해야 한다. 따라서, 공의 위치는 가장 처음 1번컵이 있던 위치와 같다.세준이는 컵의 위치를 총 M번 바꿀 것이며, 컵의 위치를 바꾼 방법이 입력으로 주어진다. 위치를 M번 바꾼 이후에 공이 들어있는 컵의 번.......

백준 1085번 - 직사각형에서 탈출 [내부링크]

문제한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.입력첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.코드

백준 1157번 - 단어 공부 [내부링크]

문제알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.입력첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.출력첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.코드

[R] 벡터(Vector) [내부링크]

- 벡터: 하나 이상의 문자, 숫자 등의 집합.- R은 통계 분석에 최적화된 프로그래밍 언어이고, 데이터를 다루어야 하기 때문에 객체를 벡터 단위로 다룸.- 벡터를 다루는 함수는 c( )예시실행 결과 (Environment)

[Python] main 함수 [내부링크]

파이썬은 다른 프로그래밍 언어들과는 다르게 프로그램을 실행하면 자동 실행되는 main 함수가 없다.프로그...

다이어리 구매 [내부링크]

조금 늦은 감이 있지만, 미루고 미루다 드디어 2020 다이어리를 구매했다.사실 '이미 늦은 거, 이번...

[Python] 연산자 [내부링크]

파이썬 연산자는- 산술 연산자- 비교 연산자- 대입 연산자- 비트 연산자- 논리 연산자- 멤버 연산자- 식...

[Python] if문 [내부링크]

if문파이썬에서 if문은 다음과 같이 표현된다.조건 뒤 콜론이 반드시 있어야 한다는 점과 들여쓰기에 유...

[R] 객체(Object) [내부링크]

- R에서는 객체 생성 시 '<-'를 사용한다. '='도 사용할 수 있으나, 오류가...

[Python] 파이썬 기본 문법 [내부링크]

주석(Comments)- 파이썬의 주석은 #, ''' 두 종류를 사용한다.- #는 단일 라인 주석으로, ...

[Python] 변수 선언 [내부링크]

파이썬에서는 변수를 선언할 때 int, float 등의 자료형을 선언할 필요가 없으며, 예약 선언할 필요도 없다...

[Python] 삼항 연산자 [내부링크]

삼항 연산자는 if-else문을 한 라인으로 표현한 것이다.주로 조건이 간단한 경우에 사용한다.파이썬의 삼...

써니나타스(Suninatas) 1번 [내부링크]

참고* Replace 함수는 해당 문자열에서 사용자가 지정한 문자를 찾아 사용자가 지정한 문자로 치환한다.* ...

[Python] 형변환 [내부링크]

파이썬에서는 함수를 사용하여 데이터 형식 간의 변환이 가능하다.여러 함수 중, str(), int(), float(), h...

[Python] random, if문 예제 (동전 던지기/양수, 음수, 0 구별 프로그램) [내부링크]

동전 던지기- 난수를 생성하여 동전 던지기 게임을 한다.난수 생성을 이용한다.실행 결과는 다음과 ...

써니나타스(Suninatas) 2번 [내부링크]

참고* 자바스크립트는 웹페이지에서 소스 보기를 할 시에 소스코드가 그대로 노출되며, 프록시 도구를 이용...

[Python] 데이터 타입 [내부링크]

파이썬의 데이터 타입에는- int (정수)- float (실수)- complex (복소수)- boolean (참, 거짓)- string (문...

[Python] 연산자 예제 (짝수 홀수 판별/잔돈 계산/거스름돈 계산/윤년 판별 프로그램) [내부링크]

짝수 홀수 판별 프로그램- 입력된 수가 짝수인지, 홀수인지를 판별하도록 한다.실행 결과는 다음과 같다. (2회 실행)코드(if문은 추후 포스팅에서 추가로 다룰 예정이다.)잔돈 계산 프로그램- 입력된 금액을 동전으로 바꾸어 준다. 최대한 큰 단위의 동전으로 바꾸어 주도록 한다.실행 결과는 다음과 같다. (2회 실행)코드거스름돈 계산 프로그램- 물건값과 지불한 돈의 액수를 입력하면 거스름돈을 계산하고, 500원과 100원짜리 동전으로 거슬러 주도록 한다.실행 결과는 다음과 같다.코드윤년 판별 프로그램- 연도를 입력하면 윤년인지 아닌지를 판단하도록 한다.윤년은1. 연도가 4로 나누어 떨어지고 100으로 나누어.......