분류 전체보기

리버싱 문제를 푸는데 도움이 되는 z3 사용법을 간단히 적어보려 한다먼저 z3는 원하는 수식들을 넣으면 계산해주는 계산기와 같은 기능을 하는 python 모듈이다. z3 명령어 python 에서 from z3 import* 로 모듈을 불러옴 s = Solver()s라는 변수에 원하는 수식을 넣어줄 준비과정 BitVec()변수에 넣고싶은 수와 비트수를 설정#정수 선언은 x = Int('x'), 실수 선언은 x = Real('x')로 함 s.add()계산하고자 하는 수식을 추가 s.check()값이 존재하는지 확인하고 존재하면 sat, 존재하지 않으면 unsat를 반환 s.model()값이 존재할 경우 값을 구하고 존재하지 않을 경우 에러를 반환 주로 위의 함수들을 사용하며그 외의 함수는 아래와 같다 app..
1. 정렬하고자 하는 2개 이상의 수를 입력받는다. 2. 가장 왼쪽 인덱스를 기준(pivot)으로 잡고, pivot을 제외한 나머지 인덱스 중 가장 왼쪽 인덱스를 Left, 가장 오른쪽 인덱스를 Right로 잡는다.#pivot은 정렬 하고자 하는 수들의 평균에 가까운 수로 잡는게 좋다 3. P와 비교했을 때, 더 큰 수가 나올때까지 L인덱스를 하나씩 증가시켜준다. 4. P와 비교했을 때, 더 작은 수가 나올때까지 R인덱스를 하나씩 감소시켜준다. 5. L과 R인덱스가 멈추면 두 인덱스를 swap한다. 6. L과 R인덱스가 교차 할 경우, P보다 작은 수와 P를 swap한다 7. 위의 정렬을 재귀하여 반복한다.
정적분석을 연습하려고 디버깅을 하지 않고 ida로 어셈코드만 보기로했다 까보니 코드가 짧길래 별다른 행동 없이 string검색을 통해 성공구문을 찾고 이동했다 이동 후 그래프뷰로 분기문을 봤는데대충 보니 반복하며 특정 주소에 있는 값과 xor연산을 하고 비교하는 듯 하다 헥스레이로 디컴파일 해보니 입력한 name을 v6에 적재되어있는 16과 ^연산을 하고 다른 공간에 저장하고 이후 입력한 serial과 비교한다 스택에 v6로 이동해보니 v7,v8과 나란히 있다16,32,48과 반복해서 ^연산을 진행하여 명시되어있는 시리얼과 매칭되는 name을 알아냈다
알고리즘 스터디 튜터를하게되어 간단하게 다뤄볼만한 알고리즘을 찾던 중 유클리드 호제법이 떠오름 먼저 시간복잡도를 고려하지 않고 직관적으로 최대공약수 코드를 작성해봄 min(n,m)만큼 반복문이 돌아가며 두 수에 모두 나누어 떨어질경우 result에 대입하여 마지막에 출력함 다음은 시간복잡도를 고려한 유클리드 호제법을 사용하여 작성 1. m%n != 0 일 경우 func(m,n) -> func(m,m%n)2. m%n==0일 경우 m과 n의 최대공약수는 n 결과적으로 시간복잡도 O(min(m,n) => O(log(min(m,n)))
뜬금없지만 침해사고대응시 우분투 os환경에서 기본적인 정보수집에 필요한 명령어를 끄적어보려한다 먼저 system os정보를 수집-cat /etc/*release 현재 사용중인 ip확인 및 수집-ifconfig 네트워크 netstate 필요하다면 사용중인 네트워크 설정 변경/usr/sbin/netconfig 일단 관리자 권한을 갖고 있다고 가정했을때,보통 로그파일들은 var/log 디렉토리에 담겨있다 #var/log-lastlog : /etc/passwd에 등록되어있는 사용자들의 최근 로그인정보와 ip-wtmp : 사용자의 로그인,로그아웃 시간을 기록(last 명령어로 정보출력 가능)-messages : 시스템의 전반적인 메세지를 기록하는 로그파일-secure : 개인인증을 기록하는 로그파일 /root/...
Static library란 링크 단계에서 라이브러리 파일을 포함시키는 것이다 장점이라면 라이브러리 함수들을 별도의 터치없이 사용할 수 있다는 점.하지만 정적 라이브러리는 프로그램의 크기가 커질수록 실행 파일들의 크기도 비효율적으로 커지며 메모리 공간활용 효율이 떨어진다는 단점이 있다 Dynamic library란 유동적으로 링크시켜 사용하는 lib로 사용이 필요한 경우 그 부분만 링크하거나 로드하여 사용하는 것이다그렇기 때문에 메모리 공간활용 효율이 좋다는 장점이 있다
list(l) ~소스내용 10줄 출력 run(r)프로그램 실행 kill(k)프로그램 종료 breakpoint(b) *~bp설정 continue(c)bp에 걸린 프로그램 계속진행 clear(cl) ~설정한 bp 삭제 info(i) ~알고싶은 정보를 출력 ex.)reg, bp 등등 step(s) ~현재 행을 실행, 함수 내부로 들어감 next(n) ~현재 행을 실행, 함수 내부로 x #출력 형식x/~x ~바이트를 16진수로 출력x/~s ~바이트를 문자열로 출력t : 2진수o : 8진수d/u : 부호가 있는/없는 10진수
32bit 컴파일-m32 스택에 더미값을 없애고 ebp를 기준으로-mpreferred-stack-boundary=2 canary 삭제-fno-stack-protector
뚱졍뚱졍
'분류 전체보기' 카테고리의 글 목록 (14 Page)