rop 7

[THC CTF 2021] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro Pwn Babyrop (94 point, 59 solves) rop ? rtl ? 대놓고 BOF가 터진다. secret_func에서 execve 함수를 사용해준다. 그래서 굳이 libc leak할 필요가 없다. 0x402204 + 22 = 0x40201a from pwn import * p = process('./babyrop') e = ELF('./babyrop') pop_rdi = 0x4012c3 pop_rsi_r15 = 0x4012c1 payload = '' payload += 'A' * 0x28 payload += p64(pop_rdi) payload += p64(0x40201a) # /bin/sh payload += p..

CTF/Write UPs 2021.06.17

[BCACTF 2.0 : binex] 내가 푼 문제들 풀이 (포넙 올클!) (예약글, 6/14 09:30 공개)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro BCA Mart 일정 금액의 money를 주고 그 money보다 많은 flag를 구매해야 하는 문제 이런 문제일 경우, 보통 음수로 입력하거나 int 최댓값 뭐 이런거 입력하면 바로 풀린다. amount 입력할 때 int 최대값 입력해서 내 money를 늘릴 수 있다. Honors ABCs 진심 이게 젤 어려웠음 ㅎㅎ; gets로 인한 BOF for문에서 response에 대한 값을 뭐 검증한 후, 밑의 if문 로직에서 grade 변수의 값에 따라 flag를 준다. 내가 한 삽질 처음에 BOF가 일어나서 grade 변수 부분의 값을 flag출력되는 조건에 맞게 변조시키려고 했으나, 내가 입력한 후 for문 안에서 grade 변수..

CTF/Write UPs 2021.06.14

[HackCTF : Pwnable] Unexploitable #1 풀이 (64bit, sh)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 이제 sh 문자열만 보면 흥분할 것 같다 wish.. fish.. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 system 함수의 plt를 가지고 있단다. IDA 오호 정말 선물처럼 system함수가 있다. main을 살펴보면 bof가 발생한다. How to exploit system 함수를 줘서 친절하게 /bin/sh 문자열도 어디 숨겨놨나~ 하고 찾아봤다. sh 명령으로도 익스할 수 있다. (jiravvit.tistory.com/entry/HackingCamp-CTF-2021-pwn-Secure-Test-%ED%92%80%EC%9D%B4-%EC%96%B8%EC%9D%B8%ED%85%90?category=9023..

WAR GAME/HackCTF 2021.04.15

[HackCTF : Pwnable] pwning풀이 (32bit, underflow)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 하마터면 못풀뻔했다. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 쓰고싶은 바이트 수를 쓰고 그 바이트만큼 쓸 수 있다. IDA main은 간단하다. vuln 함수 하나 있다. 여기서 주목해야할 건 v2 변수가 int라는 것이다. 그래서 -1을 입력하게되면 언더플로우가 발생해서 겁나 큰 수가 되게 된다. get_n 함수는.. getchar()함수를 이용해서 '\n' 오기 전까지 입력받는 거다. (사실 저런 수 입력하는거 보면 -1 입력하고 싶은 욕구(?)가 생겨서 코드보기전에 일단 -1부터 눌러봤다 ㅋㅋ) How to exploit -1를 입력하여 BOF를 트리거 하여 ROP해주면 될 듯하다. 리모트로 익스하려면 ..

WAR GAME/HackCTF 2021.04.15

[dreamhack : pwnable] basic_rop_x64 풀이

문제 풀이 환경 : ubuntu 16.04.7 64bit에서 ROP 문제이다. main에서 bof가 발생하고 있다. buf 크기는 0x40이지만 read로 0x400을 읽으려고 하고 있다. 페이로드를 총 두 번 짤 것이다. 첫 번째 페이로드는 libc_base를 구하기 위함이다. libc_base를 구하기 위해 read함수의 실제 주소를 leak한다. 그리고 RET를 main으로 줘서 main이 한 번 더 돌게 한다. 두 번 째 페이로드에서 RET에 system함수를 넣어 진짜 쉘을 딸 것이다. 첫 번째 payload : read 함수의 실제 주소 leak read 함수의 실제 주소를 leak하기 위해서는 어떻게 해야 할까? 출력하는 함수 인자로 read함수 got를 주면 read 함수의 실제 주소가 출..

WAR GAME/dreamhack 2021.01.20

[BISC CTF 2020 : pwn] oldschool 풀이

문제 풀이 환경 : ubuntu 16.04.7 처음으로 대회시간 안에 CTF에서 포너블 문제를 풀었다. 쉽고 간단한 문제지만... 기념으로 롸업을 작성해본다 ㅎ 제공된 파일은 두개, libc 파일과 바이너리 문제 파일이다. 먼저 보호기법을 확인해 보았다. 보호기법을 먼저 확인해 보았다. Partial RELRO... GOT overwriting을 하는 문제일까? 이제 IDA로 바이너리를 분석해보자. vuln 함수의 return을 보고 RET를 조작하여 main으로 돌려서 read함수의 got를 system 함수의 주소로 바꾸고 인자를 '/bin/sh'로 주어야겠다고 생각했다. 그 전에 read 함수의 got 주소가 leak되어야 한다. 여기서 주의해야할 게 "Hello BOB" 라는 문자열 뒤에 leak..

CTF/Write UPs 2020.11.30