whoisthatguy

@whoisthatguy

Joined on Feb 9, 2023

  • Mitigations 1. SMEP dont allow to execute user space code in qemu, to enable SMEP we use -cpu+smep to disasble it use -append nosmep SMEP is a hardware security mechanism. Setting the 21st bit of the CR4 register enables SMEP. 2. SMAP kernel space cannot read or write userspace memory to do that we need to use copy_from_user / copy_to_user
     Like  Bookmark
  • FSOP stdout Analysis 1. fclose fclose() → __IO_new_fclose #define fclose(fp) _IO_new_fclose (fp) src (glibc-2.31)int _IO_new_fclose (FILE *fp)
     Like  Bookmark
  • ret2csu là kỹ thuật được sử dụng khi ta không có đầy đủ gadget cần thiết để thực hiện rop chain. Đây chính là gadget luôn có khi compile dynamic một binary. Bài này mình sẽ giới thiệu về kỹ thuật này thông qua một challenge. Tổng quát Khi chạy chương trình, không chỉ có các đoạn code của ta được thực thì mà còn có các đoạn code mặc định được thêm vào. Những đoạn code này nhằm mục đích khởi tạo các giá trị môi trường, load thông tin về những phần được thực thi cũng như "huỷ" nó khi kết thúc chương trình. Đây là thứ tự chương trình chạy khi trace từ entry point và ở đây ta cần chú ý đến hàm __libc_csu_init. Khi ta disass hàm này thì có một vài gadget thú vị gef➤ disass __libc_csu_init
     Like 1 Bookmark
  • Trong một số trường hợp khi ta overflow mà không có các hàm trong PLT thích hợp để leak libc ra thì ret2dl_resolve là một kỹ thuật để lấy được shell. Trong bài này mình sẽ giới thiệu tóm tắt về cách ret2dl_resolve ở glibc 2.37 hoạt động qua một bài demo. I. Prerequisites : Do nếu mình giải thích chi tiết từng dòng code chạy sau thì nó rất rất dài và giống như reinvent the wheel nên các bạn có thể đọc trước ở đây: syst3mfailure - Phân tích chi tiết từng dòng phrack article ở mục 5 - bài original public về kỹ thuật này ricardo2197 - Bài khá hay tóm tắt về nó file binary mình demo
     Like 1 Bookmark
  • Trong bài này mình sẽ giới thiệu qua về TOCTOU (time of check - time of use), một hướng khai thác trong race condition cũng như cách setup đơn giản để khai thác và giải một số bài minh hoạ. Giới thiệu Race condition là một lỗi xảy ra khi thực hiện một loạt các context switch giữa một process này với một process khác nhưng các process đấy lại xảy ra mâu thuẫn với nhau. TOCTOU là một dạng trong số các mâu thuẫn đấy và xảy ra khi chương trình check một điều kiện nào đó trước khi thực hiện công việc bất kỳ nhưng khi thực hiện context switch thì điều kiện đấy sẽ không còn đúng nữa và sẽ cho phép dẫn tới privilege escalation hoặc đọc ghi file ngoài ý muốn. 1. Nguyên nhân Nguyên nhân chính của việc dẫn đến race condition là do máy tính cho phép thực hiện multitask. Điều này giống như việc đang mở một task Discord và một task Chrome. Máy tính sẽ gây cho ta một ngộ nhận là các task này hoạt động song song với nhau nhưng thực chất là từng process trong task của Discord sẽ đan xen với từng process trong task của Chrome. Nhưng do tốc độ hoạt động của CPU quá nhanh nên ta nhầm tưởng chúng hoạt động song song. Điều này "khá tương tự" cách mắt bạn thấy ánh sáng từ đèn huỳnh quang. Về bản chất là nó chớp rồi tắt nhưng do dòng điện xoay chiều có tần số lớn nên mình tưởng nó luôn sáng. Hình 1 : Việc một process thực hiện đơn lẽ
     Like  Bookmark
  • Vấn đề Giả sử ta có đoạn code sau đây được compile bằng gcc -o rand rand.c #include <stdio.h> int main() { int input ; scanf("%d",&input) ; srand(time(NULL)); if (rand() == input) system("/bin/sh");
     Like 1 Bookmark
  • I. Giới thiệu Như ở bài trước ta đã biết được stack canary là một cơ chế để ngăn chặn buffer overflow. Đây là một giá trị để trước return address và được check trước khi return 1 stack frame nhằm tránh overflow. Do đó để chuyển hướng hoạt động của chương trình, ta cần tấn công bằng 1 trong 2 cách sau: leak hoặc bruteforce stack canary. Trong bài này sẽ tấn công bằng cách thứ 2. II. Chương trình khai thác CODE #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h>
     Like  Bookmark