파일 전송 및 실행 문제 질문
// kpwn.c
#include <stdio.h>
int main() {
    printf("hello\n");
}

단순한 프로그램

$ gcc kpwn.c -o kpwn
$ ./kpwn
hello  # <--- 정상 실행 확인
$ telnet host1.dreamhack.games 15211
Trying 139.99.121.66...
Connected to host1.dreamhack.games.
Escape character is '^]'.

위처럼 첫 번째 포트로 먼저 부팅 시키고

$ nc host1.dreamhack.games 19406 < kpwn

두 번째 포트로 테스트용 실행 파일 전송 시작하고

~ $ cat /dev/vport0p1 > /tmp/kpwn # 오랫동안 반응 없음!!!
^C # <--- 반응이 없어서 Ctrl+C로 강제종료
~ $ ls -l /tmp
total 20
-rw-r--r--    1 offender offender     16696 Jun  2 05:23 kpwn # <--- 파일크기 정상
~ $ cat /tmp/kpwn
@@@@   XX-==X`-==888 XXXDDStd888 Ptd   DDQtdRtd-==HH/lib64/ld-linux-x86-64.so.2GNUGNUm9ٟ擤wZGNUem? ![ j "libc.so.6printf__cxa_finalize__libc_start_mainGLIBC_2.2.5_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableui   3@@??????HH=R/H=y/Hr/H9tH./HtDH=I/H5B/H)HH?HHHtH/HfD=/u+UH=.HtH=.d.]wUHH=]AWL=;,AVIAUIATAUH-,=pE E(D0H8G@n8A0A(B BBB@zRx$4 FJ?:*3$"\ti EC
?(    ooo=0@GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.08X|p
 @P`  P ===?@@@F=m@y=T!=== ? i @-@4Hg@t @ pe@m`/@I @ "crtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.8060__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryxx.c__FRAME_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_fini_ITM_deregisterTMCloneTable_edataprintf@@GLIBC_2.2.5__libc_start_main@@GLIBC_2.2.5__data_start__gmon_start____dso_handle_IO_stdin_used__libc_csu_init__bss_startmain__TMC_END___ITM_registerTMCloneTable__cxa_finalize@@GLIBC_2.2.5.symtab.strtab.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment#886XX$I|| Wo  ippq~o ((B@PP``
  DP P=-?@0@00*@0   X6Z8   ##### <----- 파일내용도 정상인 듯
 
~ $ chmod 777 /tmp/kpwn # <--- 실행가능하게 권한 변경
~ $ ls -l /tmp
total 20
-rwxrwxrwx    1 offender offender     16696 Jun  2 05:23 kpwn
~ $ /tmp/kpwn
sh: /tmp/kpwn: not found  # ??? 파일 실행이 안됨
~ $

질문1
파일 전송에서 오랫동안 반응이 없길래 Ctrl+C로 강제종료 시켰는데 괜찮은 건가요? 올바른 파일 전송법이 어떤지 알고싶습니다.

질문2
실행파일을 실행시키는데 오류가 나오는데 어떻게 해야하나요?

#pwnable
작성자 정보
답변 2
A
강의 수강: 10

안녕하세요! 드림핵 콘텐츠 팀입니다. kpwnote 워게임 문제 풀이 중 파일 전송 및 실행과 관련해서 질문주신 것을 확인했습니다.

질문1
파일 전송에서 오랫동안 반응이 없길래 Ctrl+C로 강제종료 시켰는데 괜찮은 건가요? 올바른 파일 전송법이 어떤지 알고싶습니다.

어떤 방식을 쓰든, 파일 전송이 정상적으로 이루어지고 체크섬이 일치하면 상관은 없습니다.

다만, 어떤 타이밍에 Ctrl+C를 눌러야 전송을 중단시키지 않고 완료할 수 있는지 알기 어렵다는 단점이 있습니다. netcat의 버전마다 동작이 다르기 때문에, 버전에 따라 다음 중 하나의 옵션을 사용하셔야 합니다.

질문2
실행파일을 실행시키는데 오류가 나오는데 어떻게 해야하나요?

커널에서 동적 링커를 찾지 못해 발생한 오류로 생각됩니다. 다음과 같이 동적 링킹 대신 정적 링킹을 사용해 해결하실 수 있습니다.

gcc -static kpwn.c -o kpwn

감사합니다.

2021.06.03. 13:37
avatar
mooji
대표 업적 없음

질문 드리고 싶은데 혹시 디스코드 아이디 있으신가요..!

2024.01.27. 11:17
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기