분류 전체보기(66)
-
[CTF write up] WACON CTF 2022 Qual - babystack : Begginer's Real-World Challenge
https://irrlicht.sourceforge.io/forum/viewtopic.php?f=7&t=52785&sid=82d189da1e8d466aea667d5958334975 [fixed]Stack buffer overflow in MD2 Parser - Irrlicht Engine You discovered a bug in the engine, and you are sure that it is not a problem of your code? Just post it in here. Please read the bug posting guidelines first. procfs Posts: 2 Joined: Thu Dec 09, 2021 11:12 am Post by procfs » Sun Dec 1..
2022.06.26 -
[BoB] 차세대 보안리더 양성 프로그램 11기 : 최종합격 후기 (자기소개서, 인적성 검사, 면접)
내가 보안공부를 시작한지 약 10개월 정도가 지난 것 같다. 짧은 시간 동안 참 많은 걸 해낸 것 같아 기쁘다. 특목고도 아닌데다가 제주도 한복판에서 정보보안은 커녕 코딩조차 제대로 배우기 힘들었음에도 이 모든 것을 가능하게 해준 Dreamhack에게 감사하다. BoB 합격외에도 국내 CTF 입상이라는 목표가 있었는데 그것은 이번 Wacon CTF에서 이룰 수 있었으면 좋겠다. 1. 자기소개서 입상경력 거의 2021년도 후반기 부터 보안공부를 해서 Dreamhack CTF 조차 경험해보지 못해서 CTF 관련해서 적을꺼는 코드게이트 본선 진출 밖에 없었다. 그래도 도내 SW 대회에서 보안관련 프로그램을 출품 한적이 꽤 있었기에 그것들하고, IT 관련 장학금 받은 것을 적었다. 사소한 것이어도 보안 관련된거..
2022.06.23 -
[CTF write up] DEF CON CTF 2022 Qual - smuggler's cove : Open-Source Exploitation
일반적인 포너블 문제와 달리 netcat이 아닌 웹을 통해 접속해야 한다. 웹에서 사용자로부터 Lua Script를 받고 이를 오픈소스 Lua 컴파일러인 LuaJIT으로 실행한다. 이때, LuaJIT은 공유 파일(so) 형태로 있으며, C로 코딩된 커스텀 바이너리에서 해당 공유 파일을 import 하고 사용자의 Lua Script를 실행한다. 바이너리를 분석해보면 일반적인 Lua 함수는 사용할 수 없으며, C로 구현된 print 함수와 Cargo 함수만을 Lua Script 내에서 이용할 수 있다. 취약점 역시 C로 구현된 함수에 존재하는데, Cargo 함수를 이용하면 사용자가 Lua Script에서 정의한 함수를 가리키는 포인터를 오염시킬 수 있다. 취약점 자체는, 커스텀 Lua 함수를 구현하는 바이너..
2022.05.30 -
[CTF write up] CyberApocalypse CTF 2022 - bon-nie-appetit : Overlapping Chunk
from pwn import * context.log_level = 'debug' def command_create(size,content): p.sendline(b'1') time.sleep(1) p.sendline(str(size).encode()) time.sleep(1) p.send(content) time.sleep(1) def command_show(index): p.sendline(b'2') time.sleep(1) p.sendline(str(index).encode()) time.sleep(1) def command_edit(index,content): p.sendline(b'3') time.sleep(1) p.sendline(str(index).encode()) time.sleep(1) ..
2022.05.19 -
[CTF write up] m0lecon CTF 2022 - ptmList : Intager Overflow and List OOB
from pwn import * def up(): p.send(b'w') def down(): p.send(b's') def go(): p.send(b'\n') def esc(): p.send(b'\x1b') def drop(): p.send(b'd') def move(): p.send(b'm') def exploit(): go(); for i in range(0,231): down(); go(); down(); go(); esc(); go(); down(); go(); down(); go(); esc(); go(); down(); go(); down(); go(); esc(); down(); down(); go(); go(); # secret gift down(); go(); drop(); go(); ..
2022.05.15 -
[CTF write up] KAIST GoN CTF 2022 - NullNull : Null byte Poisoning to Stack Pivot (2022 Spring GoN Open Qual CTF)
scanf에서 마지막에 Null 바이트가 붙는 것 때문에 1바이트 오버플로우가 발생한다. 이걸로 SFP의 값 하위 1바이트를 0x00으로 바꾸어주면 RBP 값을 낮은 주소로 위조할 수 있다. 일반적으로 스택의 변수를 참조할때 RBP 값을 기준으로 참조하기 때문에 변수에 데이터를 쓰는 부분에서 더 낮은 스택 주소에 데이터를 쓸 수 있게 되고 결과적으로 RET를 오버라이트할 수 있다. 익스할 때 주의할 점이 좀 있는데 일단 RBP를 오프셋 기준으로 위조하는게 아니라 그냥 NULL 바이트로 오버라이트 하는 것이기 때문에 위조된 RBP의 주소는 랜덤하다. 그렇기 때문에 익스를 될 때까지 여러번 해줘야 한다. 그외에도 RET 부분에 ROP 체인을 쌓을 때 scanf를 이용해서 추가적인 stack pivot을 해줘..
2022.05.11