일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HTML
- C언어
- c
- Javascript
- BOJ
- 숙명여자대학교 정보보안 동아리
- 생활코딩
- 풀이
- XSS Game
- SWEA
- Sookmyung Information Security Study
- PHP 웹페이지 만들기
- 머신러닝
- 기계학습
- siss
- c++
- Python
- hackerrank
- 드림핵
- lob
- 웹페이지 만들기
- 파이썬
- WarGame
- hackctf
- BOJ Python
- CSS
- 숙명여자대학교 정보보안동아리
- 자료구조 복습
- 백준
- The Loard of BOF
- Today
- Total
목록숙명여자대학교 정보보안동아리 (74)
혜랑's STORY
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : orge / PW : timewalker 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. troll.c 파일의 내용을 확인해 보았다. Lv.7에서는 argc가 2 이상이 되어도 괜찮았지만, 이번 문제에서는 argc가 꼭 2개이어야 한다. 즉, argv[1]의 RET이 agrv[2]를 가리키도록 하는 방법을 사용하지 못한다는 것이다. 환경변수도 초기화하고.. 스택 공간도 초기화하고.. 이제 쉘코드가 들어갈 수 있는 공간은 초기화하지 않는 argv[0]만 남게 되었다. 파일명을 변경하는 방법을 찾아보았다. 파일명 변경 : rename 변경전파일명 변경후파일면 대상파일 다음과 같이 코드를 구성해보았다. 이때 주의해야 할 점..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : darkelf / PW : kernel crashed 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. orge.c 파일의 내용을 확인해 보자. 이번 문제는 Lv.6에서 argv[0]의 길이를 검사하는 코드가 추가되었다. argv[0]의 길이를 77로 맞춰주기 위해 '/'를 많이 넣어 실행시켜 보았다. stack is still youur friend. 가 출력되는 것으로 보아 argv[0]의 길이 검사가 통과된 것 같다. 6단계 문제를 풀었던 것 처럼 argv[1]이 argv[2]를 가리키도록 하여 공격해보자. `python -c 'print "." + "/"*70 + "cporge"'` `python -c 'prin..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : wolfman / PW : love eyuna 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. darkelf.c 파일의 내용을 확인해 보자. Lv.5에서 등장한 egghunter와 buffer hunter에 argv[1]의 길이를 검사하는 코드가 추가된 것을 볼 수 있다. 따라서 argv[2]에 쉘코드를 넣고 argv[1]에 RET이 argv[2]를 가리키도록 하여 공격을 해보려 한다. 일단 darkelf 파일을 복사한 뒤 gdb를 사용하여 main 함수의 어셈블리 코드를 살펴보자. gdb를 통해 스택 상황을 아래와 같다고 생각해 볼 수 있다. buffer SFP RET(return) 40 4 4 가장 먼저 argv[..
DOM에 스크립트를 삽입하지 않고 XSS를 공격하는 문제이다. 일단 Sign up을 눌러 보았다. URL 파라미터로 next의 값에 confirm을 전달하고 있다는 것을 알 수 있었다. 일단 쓰레기 값을 넣어준 뒤, Next를 눌러보자. 잠시 다음과 같은 화면에 머물렀다가 처음 화면에 Welcome! ... 과 같은 문장이 삽입되어 있는 것을 볼 수 있다. 코드를 살펴보자. 코드를 확인해보니 Next 버튼이 링크 태그인 것을 확인할 수 있었다. 또한 링크의 주소가 next 변수의 값으로 전달되고 있었다. 따라서 next의 값으로 "javascript:alert("");"을 전달하고 Next 버튼을 누르면 성공이다.
#BOJ 1316번 : 그룹 단어 체커 - 풀이 #include int check(char x[]){ int flag[26] = {0}; for(int i=0; x[i]; i++){ if(flag[x[i]-'a']){ return 0; } else{ char temp = x[i]; flag[x[i]-'a'] = 1; while(1){ if(temp != x[++i]){ i--; break; } } } } return 1; } int main(){ int n, cnt = 0; char word[101]; scanf("%d",&n); for(int i=0; i= (V-B-1) / (A-B) 따라서 (v-b-1)/(a-b)+1을 출력하면 된다. - 실행결과
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : orc / PW : cantata 역시 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. wolfman.c 파일의 내용을 확인해 보자. Lv.4에서 등장한 egghunter에 buffer hunter가 추가된 것을 볼 수 있다. 여기서 buffer hunter는 코드상 버퍼를 초기화해준다. 따라서 버퍼 너머의 주소에 Lv.4의 풀이와 마찬가지로 쉘 코드를 넣고 주소를 연결시켜주면 될 것 같다. gdb로 살펴본 스택 상황은 아래와 같다고 생각해 볼 수 있다. buffer SFP RET(return) 40 4 4 따라서 RET의 마지막 주소값엔 "\xbf"가 있으면 된다. 버퍼의 시작 주소를 알아내기 위해 strcpy 함수..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : goblin / PW : hackers proof 역시 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. orc.c 파일의 내용을 확인해 보자. 앞의 문제에선 보지 못하였던 "egghunter"라는 주석과 함께 "memset()" 이라는 함수가 새롭게 등장한 것을 알 수 있다. 여기서 egghunter는 전역 선언된 environ을 memset()을 사용하여 초기화 한다. 즉, 환경 변수에 SHELLCODE를 넣고 취약한 함수의 return address를 환경 변수의 주소로 바꾸어도, egghunter에 의해 환경 변수가 초기화되기 때문에 환경 변수를 이용할 수 없게 된다. 또한 if문을 통해 argv[1][47]가 ..
#데이터베이스 설정 가장 먼저 개발을 위한 기본 환경을 만들기 위해 "cookies"라는 이름의 데이터베이스를 만들었다. 그 뒤, 데이터들이 들어갈 테이블을 만들어 주었다. 오늘 만들 글을 작성, 수정하는 기능에 필요한 테이블은 "board"라는 이름으로 만들어주었다. 숫자는 꼭 필요하기 때문에 not null로 설정하였고, 키는 기본키 그리고 자동으로 번호가 매겨지도록 설정하였다. 나머지 제목, 내용, 아이디, 날짜 또한 꼭 필요한 존재이기 때문에 not null 설정을 하였고, 각 변수에 알맞게 데이터 타입을 설정해 주었다. 추가적으로 글 작성, 수정에 필요한 화면을 제작하면서 바로 기능을 구현해 주었다. #게시물 작성 $conn = mysqli_connect('localhost', 'root', '..