전체 384

[C언어] 백준 - 10773 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할..

BOJ(백준) 2021.02.06

[Bandit] OverTheWire : bandit level 5 → 10

Level 5 → Level 6 The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties: human-readable 1033 bytes in size not executable ls, cd, cat, file, du, find 저번처럼 디렉토리를 하나하나 다 열어볼 순 없을 것 같아서 검색 기능을 사용하기로 했다. find 명령어에 -size옵션으로 1033바이트인 파일을 찾을 것이다. c가 바이트단위다. DXjZPULLxYr17uwoI01bNLQbtFemEgo7 Level 6 → Level 7 The password for the..

[시스템] Buffer overflow 공격 54~84p - 달고나

해커 지망자들이 알아야 할 Buffer Overflow Attack의 기초 Buffer overflow 공격 Buffer overflow 공격 실제 공격 방법을 시험해 보기 위해 vul.c 프로그램을 살펴보자. 실행 시 주어지는 첫 번째 인자를 buffer라는 char형 배열에 복사한다. bound check를 하지 않는 strcpy()함수를 이용하고 있다. 1024바이트의 버퍼공간에 쉘 코드와 NCP로 채우고 4바이트는 main함수의 base pointer이므로 NCP로 채우고 다음 만나는 4바이트가 return address이므로 이곳에 쉘 코드가 있는 곳의 address를 넣어주면 쉘 코드를 실행시킬 수 있다. 컴파일 후 setuid bit를 걸어준다. 고전적인 방법 쉘 코드가 있는 곳의 addre..

시스템 해킹 2021.02.04

[시스템] buffer overflow의 이해 12~53p - 달고나

해커 지망자들이 알아야 할 Buffer Overflow Attack의 기초 4. 프로그램 구동 시 Segment에서는 어떤 일이? (p.12) simple.c void function(int a, int b, int c){ char buffer1[15]; char buffer2[10]; } void main(){ function(1, 2, 3); } 위는 스택을 이해하기 위해 만든 간단한 프로그램이다. $gcc -S -o simple.asm simple.c 로 컴파일 컴파일러의 버전에 따라 다르게 생성된다는 것을 알고 있어야 한다. 더보기 이 프로그램이 컴파일 되어 실제 메모리 상에 어느 위치에 존재하게 될지 알아보기 위해 컴파일을 한 다음 gdb를 이용해 어셈블리 코드와 메모리에 적재될 logical ..

시스템 해킹 2021.02.02

[Bandit] OverTheWire : bandit level 0 → 5

Level 0 bandit 접속하기 putty로 접속하겠다. 호스트에는 bandit.labs.overthewire.org를 입력, port에는 2220을 입력하고 connection type은 SSH로 체크하면 된다. id와 password에 모두 bandit0을 입력하면 서버접속 성공이다. Level 0 → Level 1 The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to lo..

[XSS] XSS game level 3

XSS game level 3 URL bar의 주소를 수정해서 공격해야 하는 것 같다. 문제를 살펴봤을 때 기본적으로 알 수 있는 것은 이미지 버튼을 눌렀을 때 번호에 해당하는 이미지가 나오고 url이 frame#1, frame#2 등으로 바뀐다는 것이다. 소스코드를 살펴보자. Take a tour of our cloud data center. Image 1 Image 2 Image 3 각 이미지는 클릭시 chooseTab함수로 넘어가는데, chooseTab로 num이 전달된다. 따라서 num에 원하는 값을 넣으면 문제를 풀 수 있다. on error 속성을 이용해 공격할 것이다. on error는 이미지 링크가 없을 때 대체 이미지를 보여줄 수 있는 속성이다. 참고 이미지 부분에 없는 이미지를 입력하면..

[MySQL] 생활코딩 MySQL 15~21

생활코딩의 강의를 바탕으로 MySQL을 공부해보자. 이번 포스팅은 15)관계형데이터베이스의 필요성 부터 끝까지 강의 내용을 정리할 것이다. 15. 관계형데이터베이스의 필요성 데이터베이스를 이용하면 분리해서 저장하고 합쳐서 출력할 수 있다. 이전의 topic은 topic_backup으로 이름을 바꾸었다. 테이블명 변경 RENAME TABLE old_table TO new_table; ALTER TABLE old_table RENAME new_table; 데이터를 추가한 테이블을 출력 두 개의 테이블을 합쳐서 출력할 수 있다. SELECT * FROM table LEFT JOIN table1.column = table2.column; 테이블 속성 변경 ALTER TABLE table_name MODIFY C..

웹개발/MySQL 2021.01.29

[MySQL] 생활코딩 MySQL 1~14 실습

생활코딩의 강의를 바탕으로 MySQL을 공부해보자. MySQL 재생목록 4)MySQL의 구조 ~ 13)DELETE 4. MySQL의 구조 관계형 데이터베이스는 스프레드시트와 비슷한 구조를 가지고 있다. → 정보가 표에 저장됨. 중요한 단어 몇가지를 알아보자. 데이터베이스 : 연관된 표들을 그룹핑한 것. 스키마 : 표들을 서로 그룹핑할 때 사용하는 일종의 폴더 (=데이터베이스) 데이터베이스 서버 : 스키마가 저장된 장소 *스키마와 데이터베이스가 완전히 같은 것인지 헷갈려서 찾아보았다. 스키마와 데이터베이스의 차이 MySQL에서의 스키마와 데이터베이스 5. 서버 접속 - 6. 스키마의 사용 데이터베이스의 장점 : 보안 / 권한기능 mysql 사용자 추가하기 [MySQL 접속] mysql -uroot -p [..

웹개발/MySQL 2021.01.27