일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- intent
- 계측
- textfield
- drift
- livedata
- CustomScrollView
- TEST
- Coroutines
- data
- textview
- ScrollView
- Dialog
- 안드로이드
- Kotlin
- appbar
- scroll
- 테스트
- Compose
- Flutter
- android
- Navigation
- LifeCycle
- DART
- binding
- activity
- 앱
- viewmodel
- Button
- tabbar
- 앱바
- Today
- Total
목록리버싱 (23)
Study Record
1. 레이스 컨디션 ☞ 레이스 컨디션(Race Condition) 다수의 프로세스가 서로 동일한 자원을 할당받기 위해 경쟁하는 상태이다. ☞ 레이스 컨디션(Race Condition)의 전제조건 다른 계정의 권한에 접근해야 하므로 SetUID가 걸려 있어야 한다. 임시 파일을 생성해야 한다. 공격자가 임시로 생성되는 파일명을 정확하게 알아야 한다. ☞ 레이스 컨디션 원리 victim.c (SetUID, root) attack.c 임시파일 생성 (/tmp/tmp1) 임시파일 사용 임시파일 삭제(/tmp/tmp1) while(true){ if( /tmp/tmp1 파일이 존재?){ # /tmp/tmp1 에 대한 공격 동작 break; } } victim.c 프로그램이 실행될 때 attack.c 가 동시에 실행..
nc CMD - yum -y install nmap-ncat - client, server 모델이다. - 인위적인 TCP / UDP 연결이 가능하다. - 모의해킹 관점 : 백도어(EX: reverse_tcp, bind_tcp)로 사용된다. - 포렌식 관점 : 파일 전송(EX: OS Image 전송, 지정된 이미지 파일 전송) ☞ 옵션 -n : 호스트 네임과 포트를 숫자로만 입력받는다. -v : 더 많은 정보를 얻을수 있다. -o [filename]: 보내거나 받은 데이터를 헥스덤프하여 파일에 저장한다. -u : TCP connection 대신에 UDP connection 이 이루어 진다. -p [port number or name] : local-port 를 지정한다. 주로 -l 과 같이 사용하게 된다...
1. UID(RUID : Real UID) / EUID (Effective UID) UID(RUID) : 내가 로그인 했을 당시 사용자 (# who am i) EUID : 현재 내가 누구인지 (# id ; # whoami) ex ) user01로 로그인 한 뒤에 su - root 로 계정전환을 한 뒤 → 프로그램 자체가 권한을 확인할 때 RUID 를 확인할수도 있고 EUID 를 확인할 수도 있다! [root] # cp /bin/bash /test/bash # chmod 4755 /test/bash 한 뒤, user01사용자로 telnet 으로 접속한뒤 /test/bash 로 실행해도 root 권한으로 실행되지 않는다. 아래와 같은 backdoor 프로그램을 실행해도 root 권한으로 실행되지 않는다. s..
0x08048360 : push %ebp 0x08048361 : mov %esp,%ebp 0x08048363 : sub $0x8,%esp 0x08048366 : and $0xfffffff0,%esp 0x08048369 : mov $0x0,%eax 0x0804836e : sub %eax,%esp ------------------- mian 함수 시작 부분 -------------------- 0x08048370 : sub $0x8,%esp 0x08048373 : push $0xbbb # 인자값2 0x08048378 : push $0xbbb # 인자값1 0x0804837d : call 0x80482a0 0x08048382 : add $0x10,%esp ------------------- setreuid(0x..
→ AT&T 문법 : "명령어 [source] [dest]" → intel 문법 : "명령어 [dest] [source]" ※ 참고 사항 CF, ZF, SF, OF는 각각 1바이트로 전부 4바이트의 크기를 차지하는 레지스터이다. CF : Carry Flag : 연산시 Carry가 발생하면 1로 세팅된다. 오버플로우를 탐지하는데 쓰이기도 한다. ZF : 가장 최근에 계산된 명령어의 결과값이 0이면 1로 세팅된다. SF : 가장 최근에 계산된 명령어의 결과값이 음수면 1로 세팅된다. OF : 가장 최근에 계산된 명령어가 2's complement 오버플로우를 일으키면 1로 세팅된다. xor %eax, %eax 각 비트가 서로 다른 값일 때만 결과가 1이 되고 같은 값이라면 결과는 0이 된다.(mod 2) →..
gcc CMD gcc -o test1 test.c : 컴파일해서 파일이름을 test1 으로 한다. gcc -S test1.as test.c : 어셈블리어로 컴파일한다. gcc -g test.c : 바이너리 파일에 표준 디버깅 정보를 포함시킨다. # gdb a.out # gdb a.out PID # gdb a.out core gdb CMD ☞ gdb 종료 (gdb) (gdb) quit ☞ 소스 코드 확인(gcc -g 옵션을 포함하여 컴파일한 경우) (gdb) list (gdb) list 10 # 10번째줄 코드 출력 (gdb) set listsize=20 # 앞으로 소스 코드를 20줄씩 보여줌 ☞ disassemble (gdb) disassemble (gdb) disassemble main (gdb) di..
자주 사용되는 함수 ※ 참고 사이트 : http://forum.falinux.com/zbxe/index.php?document_srl=408400 int setreuid(uid_t ruid, uid_t euid) -> RUID / EUID 변경 int execl(const char* path, const char* arg); -> 현재 쉘에서 사용된다. int execv(const char* path, const char* arg[]) ☞ 공유 메모리(shmget , shmat, shmdt) https://laustudy.tistory.com/67 ☞ exit() #include void exit(int status); /* 커널에서 종료작업을 실행한다. status : 상태 코드 */ ☞ printf(..