목록분류 전체보기 (553)
Self-Improvement
ko.wikipedia.org/wiki/ELF_%ED%8C%8C%EC%9D%BC_%ED%98%95%EC%8B%9D ELF 파일 형식 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ELF 파일은 두 관점을 갖는다: 프로그램 헤더는 런타임 시 사용되는 세그먼트들을 보여주고, 섹션 헤더는 바이너리의 섹션들의 집합을 나열한다. ELF(Executable and ko.wikipedia.org offset - 0x4 1이면 32bit, 2이면 64bit offset - 0x5 1이면 리틀엔디안, 2이면 빅엔디안 offset - 0x12 28이면 arm, 8이면 mips
소스코드 // gcc -fno-stack-protector -o bof bof.c #include #include #include #include int main(void) { char buf[100]; read(0, buf, 1024); write(1, buf, 0x100); return 0; } 보호기법 ASLR on gef> checksec [+] checksec for '/home/pi/bof' Canary : No NX : Yes PIE : No Fortify : No RelRO : No ASLR이 존재함으로 ROP를 할때는 offset을 이용해야 하는 것과 바이너리파일에 system 함수가 없어도 라이브러리에서 offset을 통해 system 함수를 call 하여 실행시킬 것이다. 바이너리 파..
보호되어 있는 글입니다.
ARM에서의 PLT와 GOT를 확인해보자. 1. GDB strcpy의 plt는 0x10368이다 gef➤ disassemble main Dump of assembler code for function main: 0x00010510 :push{r11, lr} 0x00010514 :addr11, sp, #4 0x00010518 :subsp, sp, #40; 0x28 0x0001051c :strr0, [r11, #-40]; 0xffffffd8 0x00010520 :strr1, [r11, #-44]; 0xffffffd4 0x00010524 :ldrr3, [r11, #-44]; 0xffffffd4 0x00010528 :addr3, r3, #4 0x0001052c :ldrr2, [r3] 0x00010530 :sub..
shantoroy.com/security/ret-to-libc-arm-exploitation-raspberry-pi/ TITLE DESC shantoroy.com r11을 덮자 소스코드 bof.c //gcc -fno-stack-protector -o bof bof.c #include #include #include // This is our vulnerable function void vulnerable(char *arg) { char buff[100]; // to print return address printf("%p\n",&buff[0]); strcpy(buff, arg); } // Pass argument in the vulnerable function int main(int argc, char ..
크로스 컴파일 및 편리하게 ld-linux.so.3 복사 johyungen.tistory.com/391 크로스 컴파일 (cross compile) https://nightohl.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C-arm-%ED%81%AC%EB%A1%9C%EC%8A%A4%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%94%94%EB%B2%84%EA%B9%85 우분투에서 arm 크로.. johyungen.tistory.com R11 -> &lr(돌아갈 주소를 갖는 레지스터) 소스코드 ASLR, NX, Canary 보호기법 해제 #arm-linux-gnueabi-gcc -z execstack -fno-st..
크로스 컴파일 및 편리하게 ld-linux.so.3 복사 johyungen.tistory.com/391 크로스 컴파일 (cross compile) https://nightohl.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC%EC%97%90%EC%84%9C-arm-%ED%81%AC%EB%A1%9C%EC%8A%A4%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%94%94%EB%B2%84%EA%B9%85 우분투에서 arm 크로.. johyungen.tistory.com R11 -> &lr(돌아갈 주소를 갖는 레지스터) bof.c 소스코드 gcc 컴파일할 때 NX, Canary 보호기법을 제거하기 위한 옵션을 추가하고 진행하였다. 풀이2 에서는 코드..
틀린점이 있다면 지적 바랍니다. LDR = 메모리에 있는 값을 레지스터에 저장한다. ex) LDRR2, [R11, #s] // R2 = s LDRB = 메모리에 있는 값 1byte를 레지스터에 저장한다 ex) MOVR3, #0x61 STRBR3, [R11,#var_5] LDRBR3, [R11,#var_5] // var_5 = 0x61, R3 = 0x61 STR = 레지스터에 있는 값을 메모리에 저장한다 ex) MOVR3, #5 STRR3, [R11,#var_68] // var_68 = 5 STRB = 레지스터의 값 1byte를 메모리에 저장한다 ex) MOVR3, #0x61 STRB R3, [R11,#var_5] // var_5 = 0x61 SUB * 주소를 줄때 자주 사용된다. * ex) SUBR3, ..
#include #include struct score { int kor; int eng; int mat; }; int main(void) { char aaa[50]; char abc[10]; char abb[10]; char aa='a'; unsigned int a[10]={1,2,3,4,5}; char b[10]="abcdefg"; scanf("%s",&abc); strcpy(abb,abc); printf("abb : %s\n", abb); printf("%c\n", aa); printf("%d %d %d\n",a, a[0], a[4]); printf("%s %c %c\n",b, b[0], b[4]); } 소스코드에 없는 memset을 한거보니 unsingned int a[10]을 의미하는 것으로 보..
보호되어 있는 글입니다.