목록HackCTF/Pwnable (11)
Bace
32비트 프로그램이다. 보호기법이 안걸려있다. 프로그램을 실행하면 다음과 같이 나온다. IDA로 봐보았다. scanf로 s를 받은 다음 %p로 주소를 출력해준다. 보호기법이 안걸려있으므로, 아무 글자나 넣고 맨처음 주소를 알아내고 Again을 통해 다시 돌아가서 s, sfp의 크기인 0x88 + 4를 쉘코드와 \x90으로 다 채워주고 처음 주소를 ret으로 주면 된다. # exploit Data에 a를 넣어 맨처음 주소를 알아내고, Again으로 돌아와서 쉘코드를 넣고, \x90으로 나머지를 채우고 ret에 data를 주고 Again을 n으로 넣어 끝냈다. # 결과 flag가 떴다. HackCTF{y0u_d1d_7h3_45516nm3n7_5ucc355fully!} # Auth
파일은 32비트 파일이다. 보호기법은 NX와 PIE가 걸려있다. 프로그램을 실행하면 다음과 같이 나온다. aaaa를 넣어봤다. Nah... 가 나온다. IDA를 통해 확인해보았다. welcome j0n9hyun 주소 bof_pie 프로그램을 실행하면 앞의 5자리만 바뀌고, 뒤의 3자리는 welcome의 주소인 909가 그대로 박혀있다. 이 909를 j0n9hyun의 주소인 890으로 바꾸면 문제가 풀릴 것이다. # exploit p.recvuntil로 welcome의 j0n9hyun is 까지 받은 후 뒤의 주소를 받아서 data에 넣어준다. 그리고 data에서 welcome의 주소인 0x909를 빼준 후 j0n9hyun의 주소인 0x890 을 더해주면 된다. 그리고 welcome의 v1의 크기인 0x1..
문제는 다음과 같다. checksec 32비트 프로그램 - main one print_flag select_func select_func에서 one을 넣으면 one이 실행된다고 해서 one을 넣어보았다. 이제 v3를 오버플로우 해서 print_flag의 주소를 줘서 보내면 될 것이다. v3를 오버플로우 하기 위해서는 0x2a - c 이후에 넣어주면 된다. # Exploit flag가 떴다. HackCTF{76155655017129668567067265451379677609132507783606}