-
Sigreturn ROP에서 드는 생각ETC/Pwn 메모장 2019. 8. 7. 23:19
sigreturn()함수가 호출되고, 레지스터가 바뀌는데 이때 우리가 자알 조작해줘야 하는 레지스터는 rip, rsp, rax, cs, ss이며 rip가 호출하는 함수의 인자로는 rdi, rsi, rdx, rcx, r8, r9이다!
그렇다면,,,,
read(0, bss, len("/bin/sh"))
이런 식으로 하려면
함수 관련 rip syscall rsp read()함수가 끝나고 이동할 주소 rax read syscall number cs(User Code) 0x33 ss(Date Code / Stack) 0x2b 인자 관련 rdi 0 rsi bss rdx len("/bin/sh") 이런식으로 register 변조가 가능하다.
그럼....
got overwrite도 가능할거 같고..
bss영역에 shellcode 넣은 후에 실행시키기도 가능할 거 같다! (안해봤지만..)
완전 사기쟈너
Sigreturn ROP의 전제조건으로는 "int 0x80" 명령어 가 필요하다.
참고문헌
https://www.lazenca.net/display/TEC/02.SROP%28Sigreturn-oriented+programming%29+-+x64
02.SROP(Sigreturn-oriented programming) - x64 - TechNote - Lazenca.0x0
Excuse the ads! We need some help to keep our site up. List SROP(Sigreturn-oriented programming) SROP는 sigreturn 시스템 콜을 이용하여 레지스터에 원하는 값을 저장할 수 있습니다.해당 기법을 이용하여 원하는 시스템 함수를 호출할 수 있습니다. Signal & Signal handler Example code //gcc -g -o sig64 sig.c #include #
www.lazenca.net
ps. syscall number (x64) 찾기
https://filippo.io/linux-syscall-table/
Searchable Linux Syscall Table for x86 and x86_64 | PyTux
146sched_get_priority_maxsys_sched_get_priority_maxkernel/sched/core.c 147sched_get_priority_minsys_sched_get_priority_minkernel/sched/core.c 148sched_rr_get_intervalsys_sched_rr_get_intervalkernel/sched/core.c 158arch_prctlsys_arch_prctlarch/x86/um/syscal
filippo.io
'ETC > Pwn 메모장' 카테고리의 다른 글
fsb인지 gdb로 확인하기 (0) 2020.01.05 peda 정리 (0) 2019.12.27 Pwntools에서 gdb에 붙기 (0) 2019.07.25 Pwntools에서 recv와 recvn (0) 2019.07.14 FPO 할때 주의!(32bits) (0) 2019.07.12