[ ★ ]Study195 Calling Convention 인자 전달 위주 32bit리눅스에선 Cdecl 호출 규약을 사용 - 함수의 인자 값을 스택에 저장.- 오른쪽에서 왼쪽 순서로 저장- 함수의 리턴 값은 EAX register에 저장 64bitSystem V AMD64 ABI 호출 규약 사용 인자 전달 방법RDI, RSI, RDX, RCS, R8, R9, XMMO-7 나머진 32bit와 동일 2018. 12. 5. P.W.N CTF ImportantService(pwn) File informationimportantservice: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=384e47753749ac204fb2125a79f489a1ed476104, not stripped security Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled GDB 및 IDA로 정보를 보면 1. width, height 두 가지의 변수를 받는다.2. width * height 2018. 12. 1. RITSEC2018 ezpwn 쥬릅.. 사진을 올릴 수 가 없다. gdb-peda$ checksec CANARY : disabled FORTIFY : disabled NX : ENABLED PIE : ENABLED RELRO : Partial 우선 문제의 배점 및 checksec을 봤을 때 BOF 겠지? 라는 생각을 했는데 역시는 감이 좋았다. 는 ... 운이 좋았다. 0x00000000000011b0 : lea rax,[rbp-0x20] 0x00000000000011b4 : mov rdi,rax 0x00000000000011b7 : mov eax,0x0 0x00000000000011bc : call 0x1080 gets 로 20byte가져오는데 이 값이 +44에서 rbp-0x8 변수와 비교를 한다. 그리고 fopen으로 텍스트 파일.. 2018. 11. 19. 함수 에필로그 leave ret; 가끔 공부하다보면 leave ret 보는데 이번에 정리겸 블로그에 적는 것도 괜찮을 듯 하다. leave와 ret 32bit = ebp, esp, eip64bit = rbp, rsp, rip ======================= leave mov esp, ebppop ebp ebp 레지스터에 저장된 값을 esp 레지스터에 저장esp 레지스터가 가리키는 스택 영역 값을 ebp 레지스터에 저장 ====================== ret pop eipjmp eip esp 레지스터가 가리키는 스택영역 값을 eip 레지스터에 저장후 점프 ================== (fake ebp 도 공부해보자) 2018. 11. 16. [Rookiss] pwnable.kr dragon 군대에 있다보니 사진을 올리기에는 벅차다. 귀찮기도 하고 정상적인 방법으로는 죽일 수 없다. 어떻게든 해보고 싶었는데(...?) 안된다.뭐 pwnable 이다 보니 정상적으로 죽일 수 있게 하는게 더 이상한가 싶다. Solution IDA나 gdb로 살펴보면 Baby, Mama의 드래곤 HP는 BYTE로 표현되는 것을 볼 수 있다. BYTE의 표현 단위는 0~127이다. Baby 드래곤의 데미지는 30으로 정상적으로 죽일 수 없고, 오버플로우 일으킬 수도 없다. 때문에 Mama를 보면 데미지는 10이다. Priest 랑 Knight를 비교했을 때 Knight도 승산이 없다. 물론 오버플로우 일으킬 수 도 없다. 떄문에 Priest를 보면 3번과 2번을 번갈아 해주면 Mama의 체력이 127을 넘어가서 이.. 2018. 11. 16. [Tip] /bin/sh 주소 찾기 pwtools 를 이용해서 /bin/sh 찾기 from pwn import * ex) /bin/sh 함수 주소 가져오기라이브러리 지정 및 변수 명 선언 libc= ELF('./라이브러리')leak_binsh = base_addr + list(local_libc.search('/bin/sh'))[0] / libc.search("/bin/sh").next() ------------------------ 기본 gdb 에서 find &system, +99999999,"/bin/sh" -------- ldd로 어떤 라이브러리 쓰는지 체크 후 strings -tx /lib/libc.so.6 | grep "/bin/sh" 출처: http://shayete.tistory.com/entry/Lv1-Gate [샤의 공간].. 2018. 11. 6. 이전 1 ··· 6 7 8 9 10 11 12 ··· 33 다음