buffer over flow(4)
-
HACKCTF - Offset
실행시켜보면 메인 코드를 보면 다음과 같다. 9번줄에서 입력을 받고, 입력받은 내용을 그대로 10번째줄에 select_func함수에 넘긴다. 6번째줄에서 v3 에 two 를 넣고 7번째 줄에서 인자로 받은 src 를 dest에 넘긴다. 여기서 0x1f만큼 넘기게 되는데 dest 가 0x2a이고, v3 가 0xc 라서 두 함수의 차이는 30인데 31만큼 넘겨서 bof가 일어난다. 여기서 무엇을 덮을지 생각하다가 flag를 출력하는 함수를 발견하였고, 이 함수로 넘기면 될것이라고 생각하였다. print_flag 함수가 0x000006d8이고 two 함수의 주소가 0x000006ad 이므로 0x000006까지는 같고 뒤에 1바이트만 다르니까 뒤에 1바이트만 덮어주면 된다고 생각할 수 있 다. desk[0x2a..
2020.07.15 -
HACKCTF - x64 Buffer Overflow
문제 이름부터 전형적인 64bit BOF문제를 나타내는 것을 볼 수 있다. 실행은 입력한 값에 앞에 Hello 를 붙여주는 형식이다. NX가 켜져있으니 전에 했던 문제들처럼 shellcode를 직접 넣어서 푸는 문제형식은 아닐것이다. scanf 에서 입력제한을두지 않으니 기본적인 bof기법으로 RET를 덮으면 될듯한데 쉘의 위치를 찾으려 하니 마침 아래 함수가 보였다. 더미로 s[0x110]을 덮고 SFP[0x8] 추가해주고, 마지막 RET[0x8]
2020.07.10 -
HACKCTF - Basic_BOF #2
가장 먼저 해야할 일은 역시 실행시켜보는 것 이상한 문구가 나와서 당황했습니다. 따라서 이 프로그램은 뭔가 넣으면 뭔가가 나오는 프로그램 인것을 알 수 있죠 더 이상은 모르니 IDA로 까보면 1. [7번줄] s에 0x85사이즈의 값을 받아넣는다 2. [6번줄] s값을 출력하는 함수의 주소를 v5에 넣는다 3. [8번줄] s값을 출력하는 함수 주소 실행 그럼 이제 어떻게 풀어야할지 생각을 해야하는데 그 전에 보호기법 확인해서 풀이방향을 좁혀보자. nx가 가능하니까 단순 bof로 쉘코드를 넣는건 불가능(짜피 버퍼 크기 딸려서힘듬) 그럼 ROP쪽이나 BOF에서 리턴주소 바꿔서 하는 가능성이 커보여서 함수들 찾아보는 중 에 초반에 나온 "하아하아하아하아"그 멘트를 찾고자 STRING을 봤는데 /bin/dash를..
2020.07.07 -
[pico CTF 2013] rop1
pico ctf rop1번 문제입니다. checksec 하고! 바이너리까보면 취약한 함수라고 손수 알려주는군요 ㅎㅎ88만큼받는데 무려..100을 ㅎㅎ BOF 어떻게 rop를 만들까 생각해보니까 마침 부르지말라는 곳에 shell호출하는 함수가 있네요! :) 그냥 exploit하죠!! 12345678910111213141516171819from pwn import * r = process("./pico_rop1")system = 0x080484A4 payload = "" payload += "A"*140payload += p32(system) r.send(payload)r.interactive() cs (grin)
2018.08.15