CTF (12) 썸네일형 리스트형 [hack.lu 2023 CTF] custom office 멀티 프로세스로 구현된 server와 client로 client가 기능을 서버로 custom 패킷을 보내고 서버는 이를 받아 처리하는 방식으로 동작합니다 총 2개의 취약점을 사용하였는데 user가 user의 패스워드를 받는 기능에서 oob 버그가 발생하여 leak이 가능했습니다 다음 취약점은 user를 생성하는 과정에서 malloc으로 user struct를 할당 받고 memset으로 초기화를 하는 등의 작업이 없어 fake password를 구성하여 원하는 주소를 free시킬 수 있는 버그가 있습니다 그래서 힙에 미리 rop chain을 구성해두고 stack ret를 stack pivoting할 수 있는 가젯으로 덮어 플래그를 읽어 아무 password에 덮어둔 뒤 password 출력 기능으로 fla.. b01lers CTF 2022 후기 CTFtime에서 weight가 높은 CTF라 나와서 쫄았는데 포너블 문제들을 다 기초 문제였다 너의 이름은 보면서 했는데 운석 분리될때 쯤 포너블 문제는 다 풀 수 있었다 저녘 약속도 있고 힙쪽도 어제하다만거 끝내야되서 기초적인 포너블 문제 write-up만 작성할까 한다 gambler_baby 주어지는 바이너리는 제목처럼 겜블링하는 프로그램인데 랜덤으로 생성되는 소문자 4글자를 맞추면 되는 프로그램으로 초기 점수 100점이 주어지고 정답이면 10점 추가, 틀리면 10점 감점이 되서 결국 0이되면 게임오버 999점을 돌파하면 플래그를 준다 보호기법은 다 걸려있고 공격루트가 내눈엔 없어 보인다 해당 문제에서는 rand()함수를 통해 소문자 4글자를 생성하는데 srand함수로 시드값을 주지않기 때문에 ra.. zer0pts 2022 / Modern Rome 삽질하다 못 풀고 대회가 끝나버렸다... 좀 전에 vs에 코드가 남아있길래 다시 차근차근 분석해보니까 코드 분석을 제대로 안 해서 못 풀었다.. 고대 숫자 체계가 여전히 현대에서도 사용된다고 한다 해당 문제는 바이너리와 C++로 작성된 원본 코드가 주어졌다 #include #include #include short buf[10]; short readroman() { short res = 0; std::string s; std::cin >> s; auto it = s.crbegin(); int b = 1; for (auto c : "IXCM") { int cnt = 0; while (cnt < 9 && it != s.crend() && *it == c) { it++; cnt++; } } return res.. UTCTF 2022 / smol Rating 높은 줄 모르고 까불다 1문제 풀고 도망쳤다.... gets함수로 bof가 터지고 fsb가 터진다 stack_fail_chk의 got주소를 get_flag로 쓴 뒤 카나리를 변조하여 stacK_fail_chk가 호출 되어 쉘을 띄우도록했다 1337UP LIVE CTF 2022 후기 이번 주 첫 CTF도 끝나기 막바지에 들어와서 풀었다 그 덕분에 5문제 중 4문제를 풀었고 마지막 문제는 바이너리를 열어보지도 못했다 cake문제에서 시간을 좀 많이 쓴 것 같다 항상 거의 코드도 제대로 분석하지 않고 무지성 디버깅으로 풀려는 습관이랑 영화나 유튜브 보면서 CTF 하는 안 좋은 습관을 좀 고쳐먹어야겠다... 문제는 전체적으로 libc가 주어졌기 때문에 번거로움이 덜했다 Easy Register 안걸려있는 보호기법만 보더라도 ret2shellcode문제일 것이라고 짐작이 가능하다 main함수에서 easy_register()함수를 호출하는데 v1배열(스택)의 주소를 출력해주고 gets함수로 입력받는다 from pwn import * p = remote("easyregister.ctf.inti.. UMDCTF 2022 후기 접근 방법을 알 것 같은데 못 푼 문제와 접근조차 모르는 flask 관련된 문제가 나왔다 Legacy blind rop인줄 알았다;; traceback를 보면 python으로 작성된 것을 알 수 있고 python2 input 취약점을 활용한 문제이다 ( 참고 https://www.geeksforgeeks.org/vulnerability-input-function-python-2-x/) Classic Act fsb로 stdout주소와 canary 릭하고 bof로 ret 주소에 oneshot 가젯 넣어서 푼 문제다 main함수에서는 단순 vuln함수를 호출한다 fsb와 bof가 터진다 payload를 작성할 때 조건문에서 strncmp로 문자열과 동일한지 검사를 수행한다 from pwn import * p .. FOOBAR 2022 후기 너무 늦게 참여한 것이 참 아쉬운 CTF였다 포너블 6문제 중 4문제 풀었다 SSID flag.txt에서 플래그를 s에 저장한 뒤 fgets로 32byte 입력받고 __printf_chk함수로 그대로 출력해주면서 fsb가 터진다 보호 기법은 모조리 걸려있고 __printf_chk 때문에 메모리 릭말곤 할 수 있는게 없다 (단순 flag leak) 단순히 flag 릭하면 된다 (문제와 관련된 링크: https://www.bleepingcomputer.com/news/security/iphone-bug-breaks-wifi-when-you-join-hotspot-with-unusual-name/) warmup printf에서 fsb가 터지고 gets함수에서 bof가 터진다 fsb로 canary랑 stdout.. bof + rop 보호되어 있는 글입니다. 이전 1 2 다음