Waregame & CTF/Pwnable

보호되어 있는 글입니다.
파일명: 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..
suntall
'Waregame & CTF/Pwnable' 카테고리의 글 목록