일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 동적 계획법
- 포맷스트링버그
- 수학
- House of Orange
- 백트래킹
- 브루트 포스
- heap
- 완전 탐색
- 투 포인터
- 문자열 처리
- fsb
- ROP
- 큐
- tcache
- 이진트리
- RTL
- DFS
- OOB
- syscall
- 다이나믹 프로그래밍
- 스택
- BFS
- 에라토스테네스의 체
- BOF
- 연결리스트
- off by one
- 분할 정복
- 이진 탐색
- 이분 탐색
- 스위핑 알고리즘
- Today
- Total
목록syscall (2)
SDJ( 수돈재 아님 ㅎ )
utctf끝나고 참가하지 못했던 zer0ctf의 pwn도 풀어보고자 바이너리를 찾아봤다. hipwn은 기본적은 warmup 문제다.. 보호기법은 Partial RELRO에 NX가 활성화 되어있다. hipwn은 statically linked 되어있기 때문에 syscall을 통해 exploit을 진행해야 한다. 문제에서 주어진 main.c를 보면 gets함수에서 bof가 발생하는 것을 볼 수 있다. 간단하게 execve("/bin/sh", 0, 0)을 실행시키는 코드를 만들어서 실행시키면 쉘을 딸 수 있다. exploit code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ..
보호기법은 다음과 Partial RELRO와 NX가 걸려있다. 바이너리를 분석해보자 speedrun 문제는 다 간단한 문제들이라 취약점은 쉽게 보인다. sub_400B60()함수를 보면 1 2 3 4 5 6 7 8 __int64 sub_400B60() { char buf; // [rsp+0h] [rbp-400h] sub_410390("Any last words?"); sub_4498A0(0, &buf, 0x7D0uLL); return sub_40F710((unsigned __int64)"This will be the last thing that you say: %s\n"); } BOF가 터지는게 보인다. 이 바이너리는 Dynamic linkingdynamically linked이 아니라 staticall..