일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 모의해킹
- load of sqlinjection
- 취약점 스캔
- 취약점분석
- smb
- 칼리리눅스
- Los
- sql
- 해킹툴
- 권한상승
- Metasploit
- 해킹
- 시스템 해킹
- 내부침투
- root권한
- 암호해독
- 스캐닝
- 포트스캔
- CTF
- Hacking
- SQL Injection
- 스캔
- Samba
- 침투테스트
- web hacking
- 메타스플로잇
- 해킹도구
- 취약점
- SQLINJECTION
- Kioptrix
- Today
- Total
감자 텃밭
basic_exploitation_000 본문
이번에 풀 문제는 dreamhack에 1단계 문제인 basic_exploitation_000이다.
bof에 대해 기본적인 문제인 거 같다.
프로그램을 실행시켜보면 buf의 주소를 출력해주는 거 같다.
해당 프로그램의 메모리 보호기법을 확인해보았다.
기초적인 문제라 그런지 메모리보호기법은 아무것도 적용되어있지 않다.
해당 문제는 .c파일을 같이 제공해준다 확인해보았다.
buf변수가 선언되어있고 그 주소를 출력해준다 하지만 alsrq은 걸려있는 듯하다 또한 scanf를 통해 141바이트만큼 입력하도록 적용되어있다 여기서 bof가 일어날 것으로 보인다 그리고 위의 함수들로 인해 time out 또한 있는 거 같다.
gdb를 통해 다시 확인해보았다.
buf부터 sfp까지의 거리느 0x80(128바이트)이다 그럼 141바이트만큼 입력받는 scanf에서 bof가 일어나는 것이 맞다.
우리가 작성해야할 공격코드의 내용은 더미 값과 쉘 코드로 buf부터 sfp까지 덮어쓴 후 ret부분에 buf의 주소를 넣어 쉘 코드를 실행시키는 것이다.
공격코드를 작성은 아래와 같이 했다.
쉘코드는 26바이트를 사용하였다 그 이유는 scanf에서는 25바이트 쉘 코드가 적용되지 않는 걸로 알고 있기 때문이다.
그 후 recvuntil을 이용하여 buf = ( 문자열 이후의 출력되는 부분을 recv를 이용하여 ret변수에 저장한다 즉 ret변수에는
출력되는 buf의 주소 값이 저장된다
그 후 payload는 쉘 코드+더미 값(128+sfp = 132 -26(shellcode) = 106)+ret(buf의 주소)를 저장
그 후 실행시키면 정상적으로 공격에 성공하여 flag를 획득할 수 있었다.
'pwnable' 카테고리의 다른 글
basic_exploitation_001 (0) | 2021.07.22 |
---|