완료됨
/tmp/flag 값이 이상한 것 같습니다.

챕터 2 orw 셀코드 작성 3페이지 (/tmp/flag)부분 과 아래 구현 파트 2번 그 뒤 페이지까지

/tmp/flag부분 메모리에 적재할시
0x616c662f706d742f67 혹은
0x616c662f706d742f 값을 사용하는데 (둘 중 하나는 오타인 것 같습니다.)

from tqdm import tqdm

changedHex = ''
tempStr = "/tmp/flag"
print(len(tempStr))
for i in tqdm(range(len(tempStr))):
	changedHex = hex(ord(tempStr[i])).replace('0x', '') + changedHex
	print("origin: " + changedHex) # origin: 67616c662f706d742f

파이썬으로 문자열 돌려보면 결과 값이 "0x67616c662f706d742f"로 나오는데

맨 앞 글자를 뒤로 보내는 이유가 있나요?

#시스템_해킹 #공격기법
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 2
avatar
wyv3rn
무플 방지 위원회장

말씀하신게 맞긴 하지, 불러올때는 8바이트 단위로 낮은 주소에서 높은 주소로 가져오기 때문에 스택 입장에서 보면

0x0 : alf/pmt/
0x8 : g

와 같이 들어가있는거고
불러올때는 차례대로 불러오기 때문에

/tmp/fla + g
가 되어 정상적인 문자열이 됩니다.

2023.05.12. 17:15
avatar
wyv3rn
무플 방지 위원회장

처음에 들어간 값이 스택의 낮은 위치에 쌓이니까 읽을때는 가장 마지막에 들어가게 됩니다.
예제 코드에서 67을 먼저 넣어주는 이유가 그것 때문입니다

2023.05.11. 21:00