일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Frida
- Interceptor
- 파일해시생성
- SW에듀서포터즈
- 침해사고대응
- crack
- tar
- John the ripper
- Android
- upx
- K-sheild Jr
- CodeEngn
- ctf-d
- 안티디버깅
- K-shield Jr 10기
- swing
- 디스크
- 리버싱핵심원리
- 모바일프로그래밍
- 포렌식
- Multimedia
- disk
- Mobile
- 케쉴주
- shadow
- Autoware
- Reversing
- ZIP
- 써니나타스
- Today
- Total
목록Waregame & CTF/Pwnable (5)
물먹는산세베리아
보호되어 있는 글입니다.
파일명: ropasaurusrex 아무 글자나 입력하니 WIN이라는 단어가 나왔다. 바로 IDA로 까봤다. main에서 sub_80483f4()라는 함수와 write 함수를 확인할 수 있었고 좀 전에 출력된 WIN도 볼 수 있었다. 버퍼의 크기는 136인데 read함수에서 256byte(0x100)을 입력받기 때문에 BOF취약점이 있다는 걸 확인할 수 있었다. 여기에 system("/bin/sh")을 넣어야 하는데 read, write 모두 인자를 세개씩 갖고 있으므로 "pop; pop; pop; ret" 가젯 주소를 찾는다. objdump -d ropasaurusrex | grep -B3 ret 주소는 80484b6이다. read@plt 주소 구하기 objdump -d ropasaurusrex | gr..
보호되어 있는 글입니다.
문제 nc pwnable.kr 9000 https://pwnable.kr/play.php https://pwnable.kr/play.php pwnable.kr 풀이 일단 실행해서 아무거나 넣어봄 overflowme에 입력하면 될 거 같다. bof.c #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0;..
먼저 col, col.c, flag 파일 이렇게 3개가 존재하는 걸 확인했다. flag를 실행시켰지만 접근이 거부되었고, 그 파일은 사용자가 col_pwn일 때만 열 수 있는 걸 확인했다. 그리고, col 파일을 보면 setuid로 인해 접근이 가능한 걸 알 수 있었다. 그러면 col 파일을 해결해야 된다는 얘기이므로 col.c 파일을 열어보았다. (vi 명령어) 주목할 부분은 들어와야 할 값은 20byte이며 hashcode와 check_password()에서 가져오는 값이 같을 때 flag가 풀린다는 것인다. check_password 함수를 보면 res에 인수로 들어온 값을 5번 붙인다는 얘기이고, 일단 hashcode는 0x21DD09EC이다. 다섯번 더해준다고 했으니까 일단 주어진 해시코드를 5..