목록view all (60)
인디안 보호구역
목적 : 지옥같은 gdb에서 벗어나기 위해 윈도우에서 Linux 프로그램을 디버깅한다. 환경 : Host(Windows 10), Guest(VM, Ubuntu 18), IDE(VisualStudio 2019) 리눅스 환경 세팅 1. VMware(or VirtualBox)를 통해 ubuntu를 설치한다. 2. ubuntu의 네트워크 환경을 브릿지로 바꾼다. (vmware나 virtualbox 네트워크 설정에 가면 있음) 3. ubuntu의 ip를 확인한다 (ifconfig) 4. ubuntu에 ssh를 설치한다 (sudo apt-get install ssh) 5. 재시작 IDE 환경 세팅 1. Visual studio -> 도구 -> 옵션 -> '플랫폼 간' -> '연결 관리자' -> 추가(ubuntu의 ..
면접 당일, 정말 너무 긴장해서 멘토님들께서 질문한 내용들을 대부분 대답하지 못했는데 분명 면접에서 떨어졌다고 생각하며 열심히 자책하고있었는데 오잉!! 공지사항 들어가기 전만해도 주변에 합격했다는 소식들이 들려서 한숨 푹 쉬면서 왼손으로 눈 가리고 으.. 으... 이러면서 긴장하며 봤는데 ㅋㅋ 정말 감사하게도 합격자 명단에 있었다. 문닫고 들어온 느낌이지만 나갈땐 문 여는 쪽에 있도록 열심히 공부하겠습니다 ㅎㅎ 감사합니다.
인젝션을 통해 경고창을 띄우라는 문제이다. 인젝션 문제가 역시 그렇듯, 코드는 get 방식으로 데이터를 넘기는 것 외엔 크게 눈에 띄는 것이 없다. 혹시 모르니 를 바로 대입해봤다. no hack이라고 뜨는 것을 보아 필터링 되는 문장이 있다는 것을 알 수 있었고 우선 , / 등의 특수문자를 삽입해봤는데 전부 통과했고, 결국 script, alert 등의 문자열이 필터링 되고 있음을 알 수 있었다. 인코딩 쪽으로 눈을 돌려보았다. base64, URL 인코딩 둘 다 안되는 것을 확인했다. 아는것이 바닥나서 구글신께 '인젝션 키워드 우회'로 검색했더니, 알파벳에 %를 붙이거나 대소문자를 변경하면 된다고 나와있었다. a%l%e%r%t%281%29%3B 위와 같이 입력해보았는데도 안된다. (이유 : Mysql..
값을 입력한 뒤, check 버튼을 누르면 제출되는 형태이다. unlock이라는 변수는 이미 스크립트 상에서 선언되어있는데, 보아하니 값을 알아야할 것 같다. 패스워드를 알 수 있는 조건은 login.pw.value == unlock이다. 시간을 들이면 계산할 수 있겠지만 컴퓨터가 있는데 손으로 계산하는 바보가 되진 않으리! 콘솔 윈도우에서 해당 값을 출력하면 문제를 풀 수 있다.
군대 전역한지 2개월차.. 복학하기 전에 색다른 경험이 해보고 싶어서 BOB 8기에 지원했는데 서류까진 알차게 통과했으나 면접에서 개뿔 다 말아먹은 것 같다. ㅠㅠ 제품 개발 트랙에 지원했고 Merkle Tree를 응용한 상호 신뢰적 IoT 플랫폼이 주제였는데 해시체인 설명도 빼먹고 면접관님이 물어보는 질문들에 머리가 하얘져서 아무런 대답조차 하지 못했따 ㅠㅠㅠ 으엉어어어엉어어어어엉 Q1. 새로운 기기를 등록하려면 Merkle root를 수정하여 재연산하고, 재배포되는 과정이 필요할텐데, 이러한 과정에 해커의 공격이 개입되어 Merkle root를 재연산하는 것을 도청한다면 막을 방법이 있는가? Q2. 해당 기법을 통해서 위의 IoT 기기가 투입되려면 어떤 난관이 있겠는가? 예상되는 것은 무엇인가? Q1..
문제 풀이 이번에는~ 100점짜리 문제. 스크립트 링크 외에 아무런 단서가 없기에 클릭하였다! GET method를 이용하여 변수 id에 admin 값을 집어넣어야 한다. 그러나 eregi() 함수가 “admin” 문자열을 필터링하고있기 때문에 값은 admin이지만 형태는 다른 문자열을 넣어야할 것이라고 생각했다. 의미는 같은데 형태가 다른 것.. 인코딩을 해야겠다고 생각했다. admin 입력 놉! 단호한 자식.. 2) ASCII hex로 표현 URL Encoding 0x610x640x6d0x690x6e \0x61\0x64\0x6d\0x69\0x6e \x61\x64\x6d\x69\x6e %61%64%6d%69%6e NULL은 브라우저에서 디코딩해주지 못했다. 4) Force Full + NUL Injec..
문제 풀이 base64 인코딩과 관련된 문제인가보다 하며 스크립트를 클릭! 이번에도 문제 페이지의 HTML 코드는 아무 영양가가 없었기에 바로 index.phps를 확인해보았다. 전체적인 순서는 아래와 같다. ‘인코딩 20번 -> 문자열 치환 -> 쿠키 생성 -> 문자열 치환 -> 디코딩 20번’ 그런데 처음 시작하는 if문을 살펴보면, user라는 쿠키가 없을 경우 ‘인코딩 20번 -> 문자열 치환 -> 쿠키 생성 /// 문자열 치환 -> 디코딩 20번’ 위와 같이 인코딩부터 쿠키생성까지의 과정이 생략되게 된다. 결국 페이지는 ‘문자열 치환 -> 디코딩 20번’의 과정만 실행되게 되는데 이를 통한 결과 값이 ‘admin’이 되어야 함을 알 수 있다. Base64에서 출력값 문자의 특징은 ‘a-z, A-..
문제 풀이 특정 문자열이 있는데 마지막 패딩(==)문자를 보고 base64의 출력값임을 알 수 있었다. 코드 확인 결과 딱히 단서가 있진 않아 생략한다. 별 다른 점이 발견되지 않아 바로 base64 디코딩을 시작하였다. base64란? 인코딩 기술로서 패딩 연산을 통해 ‘총 비트수%3’의 값에 따라 문자열 끝에 ‘=’문자를 남기는 것이 특징이다. 출력값으로 64개의 문자를 사용한다 (a-z, A-Z, 0-9, +, /) SHA1이란? 암호화 기술로서 해시 함수의 일종이다. 출력값은 160bit이며, 16진수 문자 40개로 이루어져있다.(0-f) c4033bff94b567a190e33faa551f411caef444f2 해당 문제의 문자열을 base 64로 디코딩했더니 위와 같은 문자열을 얻었다. 처음엔 ..
HTTPS(SNI) 차단 논란 종합 SNI 차단이란? HTTPS 통신을 하더라도 (암호화가 개시되기 이전의) 핸드셰이킹 과정에서는 에 호스트 이름, 즉 ‘목적지 URL’이 표시될 수 있음. ISP 업체는 이 정보를 이용해 사이트를 차단한다. 문제점 : ESNI(Encrypted SNI)를 이용하면 우회가 가능함. 논란이 되는 사항들 1. 감청일까? 감청 : 통신의 내용을 들여다 보는 것. ex. 편지를 뜯어서 내용을 보면 감청, 하지만 봉투 겉면에 쓰인 주소를 보는것은 감청이 아니다. SNI 차단은 내용을 보지 않으므로 감청이 아니다. 2. 사찰일까? 원론적으로는 맞다. 편지의 주소를 보는 것도 사찰이기 때문. 하지만 실질적인 사찰은 봉투에 쓰인 발신자 주소가 누구인지 개별적으로 식별하고 또 그것을 저장..
문제 풀이 문제를 클릭하니 알림창과 함께 문제 선택 페이지로 돌아가게 된다. 소스코드를 보고 싶은데 알림창이 뜬 화면에서는 띄울 수가 없었다. 버프스위트를 이용하여 소스를 확인하면 된다고 생각했다. 엥 소스 안에 플래그가 떡하니 있었다. 너무 쉽게 문제를 푼 것이 아닌가 하는 생각이 들었다. 문제라는 것이 그렇듯 출제자의 의도도 중요하니까, 띵킹 해보기로했다. 우선, url을 보니 js를 사용중이고, 알림창과 이전 페이지로 이동하는 기능 역시 전부 js일 것이니, js 기능을 끄면 되겠다는 생각이 들었다. Chrome에서는 좌측 상단의 버튼을 누르고 사이트 설정을 들어가 아래와 같이 설정할 수 있다. 허용을 차단으로 바꾼다. 2. 배운 점 비밀번호는 html 스크립트에 평문으로 적으면 안된다. 3. 참고..