본문 바로가기

전체 글

(56)
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..
ASIS CTF Quals 2021 - V8 for dummies diff --git a/src/compiler/js-call-reducer.cc b/src/compiler/js-call-reducer.cc index 5e26a68ada..a3638ef5b3 100644 --- a/src/compiler/js-call-reducer.cc +++ b/src/compiler/js-call-reducer.cc @@ -6260,12 +6260,11 @@ Reduction JSCallReducer::ReduceArrayIteratorPrototypeNext(Node* node) { Node* etrue = effect; Node* if_true = graph()->NewNode(common()->IfTrue(), branch); - // This extra check exist..
CCE 2021 - shlowering 취약점 분석 JSCreateLowering에 최적화 phase를 하나 더 추가했다. jscreate의 size가 add, bit shift, sub로 계산될 경우, 해당 값을 최적화하는 로직이다. Reduction JSCreateLowering::ReduceHandleCCE( Node* bnode, Node* node, Node* length, MapRef initial_map, ElementsKind elements_kind, AllocationType allocation, const SlackTrackingPrediction& slack_tracking_prediction) { int capacity = 0; Node* newLength = length; Node* const value = bnode..
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
Fuzzing cheat sheet 보호되어 있는 글입니다.
Ida python for bug hunting 보호되어 있는 글입니다.