ctf(5)
-
[ codegate - pwn] librarian
main __int64 __fastcall main(__int64 a1, char **a2, char **a3) { unsigned int v3; // eax int v5; // [rsp+8h] [rbp-798h] BYREF int v6; // [rsp+Ch] [rbp-794h] char book_list[1928]; // [rsp+10h] [rbp-790h] BYREF unsigned __int64 v8; // [rsp+798h] [rbp-8h] v8 = __readfsqword(0x28u); sub_184C(); v3 = time(0LL); srand(v3); memset(book_list, 0, 0x780uLL); while ( book_num 14 ) { puts("The book list is ..
2023.06.18 -
[ CCE 사이버공격방어대회 ] n0t rand0m
우리 팀이 예선 7등으로 본선을 가게 되었다. 그런데 좀 아쉬운 점은 내가 개인사정으로 인해 본선날에 시간이 안 돼서 못 간다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 전체 코드 void __fastcall __noreturn main(int a1, char **a2, char **a3) { unsigned int v3; // eax unsigned int nbytes; // [rsp+0h] [rbp-30h] unsigned int case_1; // [rsp+4h] [rbp-2Ch] char name[8]; // [rsp+8h] [rbp-28h] BYREF char comment[24]; // [rsp+10h] [rbp-20h] BYREF unsigned __int64 v8; // [rsp+28h] [rbp-8..
2023.06.12 -
Dreamhack CTF Season 3 Round #2
awesome-basics (pwn)코드를 보면 read함수에서 bof가 터진다.bof가 터지니까 rop을 먼저 생각했었는데 가젯이 없었다.그래서 코드를 다시 보니 ./tmp/flag를 열고 v5에 파일 디스크립터를 받아온뒤그 값을 flag와 buf에 write해주는것이였다. 이것을 이용할 방법을 찾다가buf는 rbp-0x60 위치에 있고v5는 rbp-0x10에 있는 것을 확인하였고buf에서 bof가 터지니까 bof로 v5를 1(stdin)으로 조작해주면write(1, flag, 0x45);가 되어 플래그가 화면상으로 출력되게 된다. exploitfrom pwn import *r = remote("host3.dreamhack.games", 13508)#r = process("./chall")payload..
2023.04.22 -
[ layer7 ctf ] Christmasgift
getGift wow, fantastic, holy를 모두 1로 만들어 주고 rop을 하면 끝나는 쉬운 문제였지만 rop payload에서 payload에 += 으로 내용을 계속 더해주는게 아닌 계속 = 으로 초기화를 해주고 있었다 그래서 익스코드에 문제가 생겼던 것이였다 문제를 푸는중에 밖에 나가야할 일이 생겨 계속 ctf는 참여하지 못해서 좀 아쉽다. 익스 코드 from pwn import * from ctypes import CDLL import time import math context.log_level = "debug" r = process("/home/asdf/ctf/layer7/christmasgift") e = ELF("/home/asdf/ctf/layer7/christmasgift") ..
2022.12.20 -
[ 화이트햇 콘테스트 ] left_right
game함수에서 취약점이 발생했다. 5번째 줄을 보면 v3이 함수 포인터로 선언이 된 것을 확인할 수 있다. v3을 초기화하지 않으니 만약 v3이 할당되는 메모리 영역에 특정 값이 있다면 해당 값이 call될 것이다. 이제 v3이 할당되는 공간에 특정 값을 넣을 수 있는 곳을 찾아야 한다. left_right 바이너리를 까보면 read_input함수가 여러 곳에서 사용되는데 첫번째로 호출되는 read_input함수에서 buf가 할당되는 주소를 gdb로 확인해보니 v3가 할당되는 공간보다 8바이트 낮은 위치에 할당됐다. 처음 read_input함수가 호출될 때 더미값 8개를 집어넣어주고 바이너리에 있는 wanna_flag함수의 주소를 넣어주면 game함수의 20번째 줄에서 wanna_flag 함수가 호출될..
2022.10.17