해당 문제도 SISS 부원 중 시스템 해킹을 처음 공부하고 있는 사람이 냈다고해서 풀어봤다. 실제 대회에서는 for beginner 태그가 붙었다고하니 아마 입문자들이 가장 먼저 도전해보지 않았을까 싶다 # 문제분석 - 주어진 소스코드 이미 소스코드가 주어졌기 때문에 우리는 실제 buf가 할당되는 크기만 확인해주면 어렵지 않게 문제를 해결할 수 있을 것이다. #include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGA..
이번에 SISS에서 처음으로 pwnable을 3명이나 출제했다는 소식에 해킹캠프는 참여하지는 않았지만, SISS 부원들이 제작한 문제만 풀어보기로 했다. # 문제분석 checksec로 확인해보니 canary외에는 크게 신경써야 할 보호기법이 보이지 않는 것 같다 카나리만 우회한다면 buffer overflow 취약점으로 return address를 조작할 수 있지 않을까라고 생각했다 문제풀이에 유용한 함수를 찾아보기 위해 pwndbg의 info func 기능을 사용해보았다 get_shell 함수를 확인할 수 있었고 gdb로 확인했을 때 shell을 딸 수 있게해주는 함수인 것을 확인할 수 있었다 main에서 사용되는 함수와 함수에 사용되는 인자 값으로 예측한 프로그램의 흐름은 다음과 같다 1. buf가 ..
[Bandit] Level 1 → Level 2 Bandit : https://overthewire.org/wargames/bandit/bandit2.html 1. Level Goal 다음 Level을 위한 password는 home directory 안에 '-'라고 불리는 파일 안에 저장되어 있다 2. Commands you may need to solve this level ls cd cat file du find 💡 Helpful reading material: Google Search for "dashed filename" 3. 개념 정리 및 풀이 방법 ls 명령어 및 cat 명령어는 앞 단계에서 정리했으므로 생략한다. [Bandit] Level 0 → Level 1 [Bandit] Level 0..
Web: 보물 페이지 숫자 중에 비밀이 하나 있고 그 곳에 모든 것을 두고왔다는 것을 보니 그 곳에 플래그가 있는 것 같다 보물 내 페이지 숫자 중엔 비밀이 하나 있지...그곳에 보물을 숨겨놨다. 원한다면 찾아봐라 모든 것을 그곳에 두고 왔다! Page 1 Page 2 Page 3 소스 코드를 보니 form의 method는 get방식인 것을 확인할 수 있었다 page에 넘기는 value를 다르게 주고 있는 것 같으니 확인해보자 우선 페이지 3개를 확인해보니 아래 암호같은 문자열이 출력되는 것을 확인할 수 있었다 page= 뒤에 값을 다르게 주면 이 문자열이 변하는 것 같아 다른 숫자도 입력해 보았다 ㅎ.. 1부터 20까지 하나하나 입력해본 결과 문자열은 모두 다르게 출력되지만 FLAG는 찾을 수 없어 더..
생활코딩 javascript 수업소개(1) - 프로그램, 프로그래밍, 프로그래머(13) 1. Javascript - : 안에 javascript 문법이 작성됨을 알리는 태그 - document.write("hello world"); : 이 문서에 hello world를 출력하겠다. - A = B -> 대입연산자: 오른쪽 항을 왼쪽 항에 대입한다. - 변수 앞에 var(variable)를 쓰는 것이 좋다 2. HTML VS Javascript 언어 Javascript HTML 코드 document.write(1+1) 1+1 결과 2 1+1 특징 동적 정적 3. Event: 사건 - Javascript 사용이 필요함 - 이벤트 핸들러는 이벤트 앞에 on을 붙여준다 - onclick, onchange, onk..