호그와트

gpt도 활용하는 방법이 있어요 그냥 무턱대고 쓰는게 절대로 아니랍니당~ (헤헷 4 의 위력)

영웅*^%&$ 2023. 6. 28. 14:13
728x90

오늘도 대단한 능력을 가진 GPT 4와 핸드레이 실습을 해보았다

참고로 말한다면, chat gpt는 주인장의 실력에 따라 편차가 꽤 크다 (실제 실험 결과임) 호구 븅딱 같은 주인을 만나면 풀지 못하는 문제도 주인장 실력이 꽤 뛰어나면 느끈히~ 풀어낸다

물론 그렇다고 gpt4가 나비에-스트로크 방정식이나 골드바흐 추측을 풀 수 있다는 건 아니다.

gpt를 최대한 활용하려면 주인장 실력도 제법 뛰어나야 한다.

.arch armv8-a

.file "chall.c"

.text

.align 2

.global func1

.type func1, %function

func1:

sub sp, sp, #16

str w0, [sp, 12]

str w1, [sp, 8]

ldr w1, [sp, 12]

ldr w0, [sp, 8]

cmp w1, w0

bls .L2

ldr w0, [sp, 12]

b .L3

.L2:

ldr w0, [sp, 8]

.L3:

add sp, sp, 16

ret

.size func1, .-func1

.section .rodata

.align 3

.LC0:

.string "Result: %ld\n"

.text

.align 2

.global main

.type main, %function

main:

stp x29, x30, [sp, -48]!

add x29, sp, 0

str x19, [sp, 16]

str w0, [x29, 44]

str x1, [x29, 32]

ldr x0, [x29, 32]

add x0, x0, 8

ldr x0, [x0]

bl atoi

mov w19, w0

ldr x0, [x29, 32]

add x0, x0, 16

ldr x0, [x0]

bl atoi

mov w1, w0

mov w0, w19

bl func1

mov w1, w0

adrp x0, .LC0

add x0, x0, :lo12:.LC0

bl printf

mov w0, 0

ldr x19, [sp, 16]

ldp x29, x30, [sp], 48

ret

.size main, .-main

.ident "GCC: (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0"

.section .note.GNU-stack,"",@progbits

먼저 실습할 어셈블리어를 던져주었다. 아마도 해커니 뭐니 하는 귀요미한 친구들도 이 어셈블리어만 봤을 때 감 못 잡을 친구들이 꽤 많을 것이다.

최고급 주인장을 만난 gpt4 는 바로 최고의 답변을 내뱉는다

(바로 아래가 gpt4 본인이 스스로 생성한 답변)

아래는 ARM 어셈블리 코드를 ARM 기반 바이너리로 변환하고, 그 바이너리를 x86 시스템에서 실행하기 위한 전체 과정에 대한 명령어들입니다:

  1. 먼저 ARM cross-compiler를 설치합니다:

bash

sudo apt install binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu

  1. 제공된 ARM 어셈블리 코드가 chall.S 파일에 있는 것으로 가정하겠습니다. 이 파일을 컴파일합니다:

bash

aarch64-linux-gnu-as -o chall.o chall.S

  1. 컴파일된 오브젝트 파일을 스태틱 바이너리로 링크합니다:

bash

aarch64-linux-gnu-gcc -static -o chall chall.o

  1. 이제 우리는 ARM aarch64용으로 컴파일된 바이너리를 가지고 있습니다. 하지만 x86_64 시스템에서 이를 직접 실행할 수는 없습니다. 따라서 ARM 바이너리를 실행할 수 있게 해주는 QEMU를 설치해야 합니다:

bash

sudo apt install qemu-user-static

  1. 마지막으로, 제공된 인자를 사용하여 바이너리를 실행합니다:

bash

./chall 182476535 3742084308

이렇게 하면 바이너리를 실행하고 결과를 얻을 수 있습니다. 이는 ARM 기반 시스템이 아닌 x86 시스템에서 ARM 코드를 실행하기 위한 일반적인 절차입니다.

ㅇㅇ 걍 말이 안 되는 수준이다.

자기가 알아서 다 명령어도 가져오고 완벽한 순서에다가 어떻게 실행시키는지 까지 다 알아서 말해준다.

위의 순서대로 실습을 해보쟈.

보는 바와 같이 단 하나의 오차도 없이 완벽히 작동한다.

gpt4 의 모든 답변이 완벽히 맞았다는 뜻이다.

다만, 이렇게 푸는 건 좀 너무 쉬우니 아예 핸드레이를 해보라고 명령을 내렸다.

gpt4가 완벽히 스스로 작성한 프로그램을 c로 만든 후 gcc를 활용하여 실행파일로 만들고 실행을 시켰다. 아래가 그 결과이다.

위에랑 정확히 완벽히 똑같이 작동하는 것을 볼 수 있다.

내가 그 c언어를 직접 검토했는데, 원래 어셈블리어랑 사실상 완벽히 같은 의미였다. 함수에 대한 이해부터 인자를 받고 return하는 거까지 완벽한 수준이었다.

이미 gpt4는 어셈블리어, 바이너리 이해 그리고 메모리 활용부터 공격, 어택 벡터, 또 그걸 막는 것 다시 패치해는 것 시스템을 활용하는 것, 익스플로잇 작성과 프로토콜의 이해부터 해서 거의 모든 면에서 최상급 해커에 준하는 수준이다. 솔직히 말해서. 물론, 여기는 조건이 있기는 하다. 위에도 말했다시피, 최상급 주인장을 만났을 때 그러하다. 내가 언제 우연히 누군가를 봤는데 쟌슨빌 같은 친구였는데 이 친구가 gpt 쓰니까 정말 gpt가 너무 바보가 되더라.. 나는 연구 결과로 gpt가 어떤 주인장이 쓰느냐에 따라 편차기 있다는 건 알았는데 실제로 그 사례를 내 눈으로 본 건 처음이었다. 내가 직접 사용했을 때 개 똑똑이 천재인 gpt가 쟌슨빌 같은 친구가 쓰니까 개밥 같은 문제도 하나도 못 풀더라 뭐 암튼 그렇다고 한다,,

gpt4가 최상급 해커랑 다른 점은 또 걸리는 시간인 거같다. 최상급 해커가 최소 일주일에서 한 달 정도 걸리는 문제도 gpt4는 10분에서 1시간 이면 풀어내기도 한다. (물론, 주인장이 꽤 준수하다고 할 때) 타율도 아주 좋은 수준이다.

728x90

'호그와트' 카테고리의 다른 글

가장 기본이 되는 공격 방식 (attack vector)  (0) 2023.07.01
흠냐  (0) 2023.06.29
해킹 해킹 바운스~ 바운스~  (0) 2023.06.23
주식 주식 바운스~ 바운스~  (0) 2023.06.20
rot13  (0) 2023.06.20