일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Los
- 메타스플로잇
- SQLINJECTION
- 권한상승
- Hacking
- sql
- Samba
- 해킹도구
- 스캐닝
- smb
- 취약점분석
- web hacking
- 내부침투
- Kioptrix
- 시스템 해킹
- root권한
- 해킹툴
- 암호해독
- load of sqlinjection
- 침투테스트
- 해킹
- 취약점 스캔
- 취약점
- 스캔
- 칼리리눅스
- CTF
- Metasploit
- SQL Injection
- 모의해킹
- 포트스캔
- Today
- Total
감자 텃밭
basic_exploitation_001 본문
이번에는 basic_exploitation_001문제를 풀어봤다.
basic_exploitation_000 문제보다 오히려 더 쉬운 문제인 거 같다.
해당 문제도. c파일과 함께 주어졌다
먼저 프로그램을실행시켜보았다.
프로그램을 실행시키면 특정 문자열을 입력받을 수 있게 되어 있고 문자열을 입력하면 아무것도 일어나지 않는다.
해당 문제의 메모리 보호 기법을 확인해 보았다.
NX가 걸려있는 걸로 봐서 스택상에서 쉘 코드를 실행시킬 수 없을 거 같다.
이번엔 같이 주어진. C파일을 확인해보았다.
이전 문제와 유사하지만 이번엔 read_flag 함수가 존재하고 해당 함수를 통해 system함수를 실행시키며 flag를 알려주는 거 같다.
나머지는 이전 문제와 유사하다 그렇다면 buf부터 ret까지의 거리 값을 구하고 더미 값을 채운 후 ret부분에 read_flag함수의 주소를 삽입하여 read_flag함수를 실행시키면 된다.
그럼 이제 해야 할 것은
1. buf -> ret까지의 거리
2. read_flag 함수의 주소 값
이렇게 두 개만 구하면 간단하게 풀 수 있다.
일단 gdb를 통해 buf부터 ret까지의 거리 값을 구하였다
11번 줄에서 gets를 통한 buf의 위치가 ebp-0x80이므로 128바이트이다
그렇다면 128+4(rsp)를 통해 132바이트를 더미 값으로 채우면 된다
이제 read_flag의 주소 값을 구해보자
read_flag함수의 주소는 0x08 015b 9이다. 이제 구해야 할 것은 모두 구했으므로 공격코드를 작성하면 된다.
132바이트만큼 더미 값으로 채운 후 ret부분에 read_flag함수의 주소를 넣었다 그 후 실행시키면
성공적으로 flag를 획득할 수 있다.
'pwnable' 카테고리의 다른 글
basic_exploitation_000 (0) | 2021.07.22 |
---|