Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스캐닝
- 암호해독
- 취약점분석
- Kioptrix
- 취약점 스캔
- web hacking
- sql
- 시스템 해킹
- 해킹도구
- CTF
- smb
- Metasploit
- 취약점
- 해킹
- 메타스플로잇
- 스캔
- Hacking
- 모의해킹
- load of sqlinjection
- 내부침투
- 권한상승
- Samba
- Los
- SQLINJECTION
- 해킹툴
- 포트스캔
- 칼리리눅스
- 침투테스트
- SQL Injection
- root권한
Archives
- Today
- Total
감자 텃밭
Simple_size_bof 본문
HackCTF의 Simple_szie_bof문제
우선 해당 프로그램을 실행시켜보았다.
시빅 - 자살방지 문제입니다.라는 문구가 출력되고 buf의 주소가 출력되는 듯하다
하지만 프로그램을 실행시킬 때마다. 버퍼의 주소가 계속 바뀌는 걸 볼 수 있다. ASLR기법이 적용되어있는 거 같다.
확인해보자!
음.. 일단 ASLR을 제외한 다른 보호 기법들은 적용되어 있지 않는 거 같다..!
예상했듯 문자열 출력 후 buf의 주소를 출력해주는 함수이다.
91번 줄을 보면 gets함수가 있다 그렇다면 gets를 이용하여 버퍼오버플로우를 일으켜 해결할 수 있을 거 같다.
일단 버퍼오버플로우를 일으키기 위해 필요한 버퍼의 크기는 0x6d30으로 27952 크기이다 그럼 여기에 sfp(8)를 더해
dummy값과 쉘 코드를 삽입하면 될 거 같다.
크기와, 주소를 알았으니 이제 payload를 작성하러 가보자
해당 코드는 이렇게 짰다
pwntools에서 지원해주는 recvuntil을 사용하여 buf: 문자열이 나올 때까지 문자열을 받아오고 buf에
recv를 이용하여 버퍼의 주소를 넣는다 int(r.recv(14),16)은 int 즉 정수형으로 받고 14바이트만큼 16진수로 받겠다는 것이다
14바이트인 이유는 프로그램을 실행시켰을 때 얻는 주소가 14바이트이기 때문이다.
그 후 payload에 쉘 코드와 dummy값을 SFP까지 채우고 ret에 버퍼의 주소를 넣으면 된다.
실행시켰을 때 성공적으로 쉘을 획득하고 flag를 획득할 수 있었다.!!
'my_study > HackCTF' 카테고리의 다른 글
offset (0) | 2021.05.26 |
---|---|
Simple_overflow_bof_ver_2 (0) | 2021.05.21 |
64bof_basic (0) | 2021.05.21 |
내 버퍼가 흘러넘친다!! (0) | 2021.05.18 |
Basic_BOF#2 (1) | 2021.05.17 |