목록분류 전체보기 (427)
안 쓰던 블로그
gdb 켜서 전역변수 리스트 확인 /bin/sh 주소인 0x0000000000004038 확인 함수 정보 확인 main, nothing, vuln main확인 vuln 함수가 있다 vuln 함수 확인 read를 사용했다 nothing 확인 첫 번째 인자를 받는 레지스터인 rdi rdi를 push rdi를 pop후 return rdi에 원하는 값을 넣으면 return되면서 되겠다 pop rdi 가젯: pop rdi; ret 가젯을 이용하여 첫번째 인자를 받는 레지스터인 rdi에 전역변수 sh의 주소를 넣은 뒤 system 함수를 ret 하면 쉘이 실행 됩니다. 익스플로잇 코드 먼저 ida등에서 버퍼가 16이라는 사실을 알고 있다 16+8=24만큼 더미를 넣는다 하지만 64bit는 다르다... 64bit에서..
www.acmicpc.net/problem/6603 n개 중에 6개를 뽑는 모든 경우의 수 구하기 몇개를 뽑는지 정해져 있다면 순열을 이용할 수 있다 뽑는 6개에 대해 1이라고 하고, n-6에 대해 0이라고 한 순열을 만들고 모든 순열을 돌면서 1인 경우의 값을 출력한다 #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; while (1) { cin >> n; vector a(n), d; if (n == 0) break; for (int i = 0; i > a[i]; for (int i = 0; i < n - 6; i++) d.pu..
순열 next_permutation()과 prev_permutation() 직접 구현하기 다음 순열, 이전 순열, 모든 순열 순열 크기 n이 3인 수열을 사전순으로 나열하면 다음과 같다 123 132 213 231 312 321 n=3인 수열은 총 6개가 있다 여기서 먼저 알 수 있는 사실은 크기가 n인 순열을 총 n!개 존재한다는 것이다 첫 번째 오는 수를 n가지 중에서 선택, 그 다음 수를 n-1가지 중에서 선택, 그 다다음 수를 n-2가지 중에서 선택..을 반복하기 때문에 총 가지 수는 n*(n-1)*(n-2)*...*2*1 즉, n!이다 또 알 수 있는 사실은 첫 순열은 오름차순, 마지막 순열은 내림차순이라는 것이다 그러므로 중간 순열을 구하고 싶다면 첫 순열에서 다음, 다음, 다음으로 넘어가서 ..
알고리즘에서 나머지 연산은 연산의 값이 너무 커져서 자료형으로 담기 어려울 때, 각 연산마다 나머지 연산을 하여 자료형 안에 담기 위하여 사용한다 덧셈, 곱셈, 뺄셈은 성립하지만 나눗셈의 경우 성립하지 않는다. (나눗셈의 경우는 modular inverse를 구해야 한다) 그리고 주의할 점은 뺄셈의 경우 먼저 mod 연산을 한 결과가 음수가 나올 수 있기 때문에 다음과 같이 한 번 더하는 과정이 필요하다 $(A-B) mod M = ((A mod M) - (B mod M) + M) mod M$ 그 이유는 무엇일까? M을 더해도 전체 식에 영향은 없는 것인가? 나머지 연산에서 음수가 나오는 예시를 먼저 본다 $(6-5) mod 3 = 1 mod 3 = 1$ 이다 만약 $(6 mod 3-5 mod 3) mod..
DLL 인젝션 DLL 인젝션이란 실행 중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 것이다 좀 더 자세하게 말하면 다른 프로세스에게 LoadLibrary() API를 스스로 호출하도록 명령하여 사용자가 원하는 DLL을 로딩하는 것이라고 할 수 있다 DLL 인젝션이 일반적인 DLL 로딩과 다른 점은, 로딩 대상이 되는 프로세스가 나 자신이냐 아니면 다른 프로세스냐 하는 점이다 예를 들어 공격자의 DLL 파일 hack.dll이 있다고 하면, notepad.exe 프로세스의 메모리 공간 어딘가로 강제 삽입을 하여 DLLMain()을 자동호출 시키는 식이다 (참고로 DLLMain()은 프로세스에 DLL이 로딩되면 자동으로 실행된다. 본래는 버그 수정, 기능 추가 등의 목적으로 사용된다. DLL에 대한..
Database = DB 여러 응용 시스템들이 공유할 수 있도록 통합, 저장된 운영 데이터의 집합 특징 1.실시간 접근: 사용자 질의에 대해 즉시 처리 응답 2.계속적인 변화: 삽입, 삭제, 갱신을 통해 정확한 최신 데이터 유지 3.동시 공유: 여러 사용자가 동시에 공유 4.내용에 의한 참조: 사용자가 요구하는 데이터 내용에 따라 참조 5.데이터 논리적 독립성: 데이터 논리 구조가 변경되더라도 응용프로그램은 변경되지 않음 구성 요소 DBMS 데이터 베이스 관리 시스템 응용 프로그램과 데이터의 중재자 모든 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리한다 MySQL -PHP 웹 프로그래밍에서 사용되는 DBMS -대용량 데이터 처리 가능 -오픈소스 GUI기반 툴이 따로 내장되지 않기 때문에 CUI를..