TOOR

· TOOR
보호되어 있는 글입니다.
· TOOR
tistoryBlogName: lmxx tistoryTitle: “[TOOR] 6.2 Toor_Canary write_up” tistoryTags: “” tistoryVisibility: “0” tistoryCategory: “1189856” tistorySkipModal: true tistoryPublished: “” tistoryPostId: “65” tistoryPostUrl: https://lmxx.tistory.com/65 link [TOOR] 6.1 Canary & canary write_up [[Canary Canvas.canvas|Canary Canvas]] main main 함수의 어셈은 다음과 같다. Dump of assembler code for function main: 0x0000..
· TOOR
핵심.read 함수의 리턴은 eax 에 저장되고 이는 길이를 반환한다. 필요한 것 rao syscall; ret gadget 셸코드 or binsh 인데 binsh 삽입보다 셸코드 넣는게 더 가능성 높을 듯 sigreturn frame read Exploit method mprotect 를 호출해서 code 영역에 쓰기, 실행 권한을 부여한다. shellcode 를 삽입해서 실행한다. Attack Flow 우선 read syscall 을 하는데 mov edx, 0x130 으로 bof 가 발생하고 rao가 가능하다. syscall gadget 이 있는데 eax control gadget 이 없어 보이는데 read syscall 의 return 은 입력받은 문자열의 길이 이기 때문에 eax 를 조작할 수 있..
· TOOR
보호되어 있는 글입니다.
· TOOR
실행 생략.. 풀이과정 %6$p%7$p 했을 때와 tele -l 40 를 대조해서 보면 여기서부터 6번째다. 랜덤 값은 0xc8번쨰에 있으니 31번쨰다. 여기 값을 바꿔서 랜덤 비밀번호를 무효화 시킨다. %c%31$n 이렇게 하면 wyv3rn 이 아직 있다고 가라고 하는데 name 입력을 하면 0x10 번째에 생긴다. 처음에 %p 해서 스택 주소 알아낸 다음에 0x20 만큼 더해서 dsfsb 해서 wyv3rn을 바꿔버리면 될 거 같다. 이 wyv3rn 은 한글자라도 있으면 안된다. 그리고 name 부붕네서 wyv3rn 을 다시 써서 kind list 에 넣어줘야 한다. from pwn import * p = process("./chall") context.log_level = 'debug' sla = p..
· TOOR
[dreamhack]_rtld_global 프로그램 종료과정에서 사용된다. 직접 한번 보자 // Name: rtld.c // Compile: gcc -o rtld rtld.cint main() { return 0; } 실행을 해서 main 함수가 종료되는 부분부터 보면 __libc_start_main+231 로 리턴한다. 이후 내부에서 __GI_exit 를 call 한다. 계속 보다보면 __run_exit_handlers 함수를 호출한다. 함수의 코드 크기가 크기 때문에 라이브러리 코드로 봐야 한다. /* Call all functions registered with `atexit' and `on_exit', in the reverse of the order in which they were regist..
· TOOR
what is Race Condition 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과 값에 영향을 줄 수 있는 상태. 즉 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. 다음은 예시 코드이다. 예제 코드는 여기서 가져왔고 이후 설명도 해당 글에서 인용해왔다. #include #include int sum; void *run(void *param) { int i; for (i = 0; i < 10000; i++) sum++; pthread_exit(0); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, run, NULL); pthread_c..
· TOOR
배열의 범위를 벗어난 메모리에 접근할 수 있는 취약점 개발자가 인덱스에 대한 검사를 제대로 하지 않으면 발생한다. 임의 주소 읽기, 임의 주소 쓰기로 이어질 수 있다. 배열의 특징 배열은 연속된 메모리 공간을 점유한다. 이때 배열이 점유햐는 공간의 크기는 요소의 개수와 요소 자료형의 크기를 곱한 값이 된다. 배열이 포함하는 요소의 개수를 배열의 길이라고 부른다. dreamhack Memory Corruption: Out of Bounds 배열의 각 요소의 주소는 배열의 주소, 요소의 인덱스, 요소 자료형의 크기를 이용하여 계산한다. OOB OOB는 요소를 참조할 때, 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생한다. 개발자가 인덱스의 범위에 대한 검사를 명시적으로 프로그래밍하지 않으면, 프로세스..
lmxx
'TOOR' 카테고리의 글 목록 (2 Page)