g2h

안녕하세요 👋 저는 g2h입니다.

보안 컨설팅, 모의해킹, 개인학습을 통해 배우고, 경험한 내용의 글을 쓰고있습니다. 아래에서 최근 글과 연구 기록을 확인하세요.

Browse by Category

분류 전체보기 (154)
Network (4)
Web (37)
System (32)
Pentest (14)
WriteUP (47)
도구|Tools (12)
Security Issue (6)
1-Day-Analysis (1)
한줄보안 (1)

Latest

[HackCTF] ROP

카테고리: WriteUP · 2021. 8. 16.

이번에 풀어볼 문제는 hackctf의 rop문제이다

제목에서부터 유추할 수 있는 rop에 관한 문제이며 rop기초에 관한 문제인 거 같다.

해당 문제를 실행 및 적용된 메모리 보호 기법을 확인하였다.

문자열을 입력받고 입력 후 특정 문자열이 출력된다.

메모리는 역시 nx가 걸려있다.

해당 문제를 IDA를 통해 상세히 분석하였다.

main함수에서는 vulnerable_function함수를 호출하고 write함수를 통해 특정 문자열을 출력한다.

vulnerable_function함수에서는 136만큼의 buf변수를 선언하고 read함수를 통해 0x100(256)만큼 입력을 받는다

이 부분에서 bof가 일어날 거 같다. 정말 기본 rop사용 문제인 듯하다.

익스 코드는 read를 통해 bss영역에 /bin/sh문자열을 입력하고  write를 통해 read의 got를 출력하여 system함수의 실제 주소를 구한다 그 후 read함수를 통해 write의 got를 system함수의 실제 주소로 got overwrite 하고 write를 호출(system)

하여 인자 값으로 bss영역의 주소 값을 적으면 될 것이다.

이러기 위해 필요한 것은

1. read_plt

2. read_got

2. write_plt

3. write_got

4. bss영역의 주소

5. /bin/sh문자열

6. system함수의 주소

7. pppr 가젯

[해당 주소 및 가젯을 찾는 과정은 앞에서 했던 것들과 동일하기에 생략하겠다]

해당 익스 코드는 아래와 같다

좀 더 코드를 이쁘게 짜는 연습을 해야 할 거 같다...

해당 코드를 실행시키면 성공적으로 쉘을 획득할 수 있다.

'WriteUP' 카테고리의 다른 글

[pwn.kr] fd 문제  (0) 2021.08.31
[HackCTF] - yes or no  (1) 2021.08.26
[HackCTF] gift  (0) 2021.08.16
[HackCTF] Look at me  (0) 2021.08.16
[프로토스타] protostar - heap2  (0) 2021.08.16

댓글