Em hiểu ý anh rồi, vậy nếu mình cấu hình Runner của riêng mình thì sẽ không phải push pull liên tục vậy đúng không ạ? . Cám ơn anh, mong anh sẽ ra thêm nhiều bài mới.
Bình thường nếu mình làm local từng bước từng bước 1 thì tại sao cứ phải build xong push, xong lúc test lại mất công pull về, xong sang đến release lại cũng mất công pull về 1 lần nữa ???????
Lí do là vì mình đang làm ở trong Gitlab runner, Runner Share của bên Gitlab, họ có 1 list các Runners, các runner đó sẽ chạy job của mình, mình hoàn toàn ko biết mỗi job sẽ được chạy ở runner nào, Runner sẽ tạo cho mỗi job 1 môi trường "sạch trơn", nên nó ko có khái niệm về trạng thái ở các stage trước đó -> ko có image build sẵn từ các stage trước, đó là lí do vì sao ta cần phải pull image về trước ở các stage như test và release. (Thực tế là mình có thể share 1 số resource giữa các stage nhưng trong số đó a ko thấy có Docker image )
Tặng bạn thêm 1 cái trick nữa nếu bạn đã làm được đến bước đấy thì tức là đã up được mã php vào trong rồi. Bạn có thể copy cái ảnh ban đầu có chứa mã vào \wordpress\wp-content\themes\twentyseventeen và thực hiện lại bước tạo POST để RCE với ảnh đó là được nhé ^^
@Pet e thử truy cập vào project của e trên Heroku, sau đó vào phần, Resources và bấm vào cái Database e đang liên kết. Sau đó e check bên tab Overview của phần đó xem có dữ liệu không
Tuy nhiên còn 1 vấn đề nữa em thắc mắc, trong state build có bước push image lên registry rồi state test lại pull image đó về mặc dù nó đã có tại local. Vậy đó có phải là bước không cần thiết không?
Mình có thể chuyển việc push này về state release và nếu image đó lỗi (không pass state test) thì image lỗi đó vẫn được push lên registry.
Về câu hỏi của e, release khác với build như thế nào, ý tưởng trong bài a của a là build docker image trước -> chạy test trên image -> nếu test pass thì mới release, ko pass thì skip luôn đoạn đằng sau, ví dụ test trên image có lỗi thì mình sẽ ko muốn release cái image đó, vì đã gọi là "release" thì ít nhất nó phải ko có lỗi (lớn) và chạy được đúng ko
Về cấu hình thì e "nhìn" nó có vẻ giống nhau nhưng thực tế chúng lại khá khá nhau đó e:
Tại build mình pull image về làm cache -> build image (tốn nhiều thời gian) -> push image với tag là commit hash
Tại release mình pull image về -> đánh tag mới -> push , quá trình này diễn ra nhanh hơn nhiều và cái việc chúng nó làm thì cũng khác nhau
Anh cho em hỏi. Em đang làm đến bước tạo POST để RCE, nhưng khi truyền &meta_input[_wp_page_template]= [tên bản sao] và reload page thì mã không chạy được là sao vậy? Em có kiểm tra trên DB thì mã PHP chưa được tải lên trong wp_page_template. Nhưng trong wp-content\themes\twentyseventeen thì đã có ảnh chứa mã.
@HungNguyenVan chắc bạn đã biết về multi-threading, 1 thread sẽ có 1 vùng nhớ riêng là stack space và nó rất nhỏ chỉ khoảng vài KB đến vài MB. Do đó khi tạo quá nhiều local val hoặc function call (hay gặp khi đệ quy) nó sẽ dẫn đến stack overflow tuy nhiên vì nó chỉ thuộc 1 thread nên k ảnh hướng đến các thread còn lại khi hệ thống đang hoạt động. Ngoài ra GC cũng k thể làm gì để clear chỗ đó đc nên gọi là overflow và 99.999% thread đó không hoạt động được nữa.
Còn với heap space là vùng nhớ của toàn bộ chương trình đó nên sẽ là OutOfMemory khi không còn đủ memory để chứa các object.... Nếu GC hoạt động và clear đc bộ nhớ thì chương trình có thể tiếp tục hoạt động bt.
có lẽ em viết khó hiểu quá, nó là như này em dựng theo mô hình MVC trong Model em tạo 1 BaseModel để các model con sẽ extends lại. Trong Base đó em có viết các function tạo kểt nối , lấy data, nhứng đến function thêm sửa xóa , thì em muốn truyền vào các function đó là 1 request ( VD: public function insert(Request $request) ) từ client gửi lên. Sau đó trong function đó em viết 1 câu query (VD: $sql = "INSERT INTO USER VALUES ( )), trong cái values kia em sẽ lấy các giá trị từ thằng request gửi lên thì viết như nào ạ!
EM CẢM ƠN!
THẢO LUẬN
@maitrungduc1410
Em hiểu ý anh rồi, vậy nếu mình cấu hình Runner của riêng mình thì sẽ không phải push pull liên tục vậy đúng không ạ? . Cám ơn anh, mong anh sẽ ra thêm nhiều bài mới.


Chất lượng quá em
vị trí hay vị trị đấy Hoài :3 . Với thêm cái ảnh minh họa kiểu như này cho người đọc dễ hiểu này em
@viet111 câu hỏi hay
.
Bình thường nếu mình làm local từng bước từng bước 1 thì tại sao cứ phải


buildxong push, xong lúctestlại mất công pull về, xong sang đếnreleaselại cũng mất công pull về 1 lần nữa ???????Lí do là vì mình đang làm ở trong Gitlab runner, Runner Share của bên Gitlab, họ có 1 list các Runners, các runner đó sẽ chạy job của mình, mình hoàn toàn ko biết mỗi job sẽ được chạy ở runner nào, Runner sẽ tạo cho mỗi job 1 môi trường "sạch trơn", nên nó ko có khái niệm về trạng thái ở các stage trước đó -> ko có image build sẵn từ các stage trước, đó là lí do vì sao ta cần phải pull image về trước ở các stage như
)
testvàrelease. (Thực tế là mình có thể share 1 số resource giữa cácstagenhưng trong số đó a ko thấy có Docker imageBạn vào kiểm tra trong \wordpress\wp-content\themes\twentyseventeen xem những ảnh bạn upload lên có chứa đoạn mã phpinfo() ban đầu không. Nếu không có thì trong quá trình bạn crop đã bị xóa mất rồi. Bạn có thể đọc thêm tại phần Additional remarks tại trang này: https://pentest-tools.com/blog/wordpress-remote-code-execution-exploit-cve-2019-8942/#wordpress-exploit-4
Tặng bạn thêm 1 cái trick nữa nếu bạn đã làm được đến bước đấy thì tức là đã up được mã php vào trong rồi. Bạn có thể copy cái ảnh ban đầu có chứa mã vào \wordpress\wp-content\themes\twentyseventeen và thực hiện lại bước tạo POST để RCE với ảnh đó là được nhé ^^
@Pet e thử truy cập vào project của e trên Heroku, sau đó vào phần, Resources và bấm vào cái Database e đang liên kết. Sau đó e check bên tab Overview của phần đó xem có dữ liệu không
@maitrungduc1410 Cám ơn anh đã trả lời câu hỏi,
Tuy nhiên còn 1 vấn đề nữa em thắc mắc, trong state build có bước push image lên registry rồi state test lại pull image đó về mặc dù nó đã có tại local. Vậy đó có phải là bước không cần thiết không? Mình có thể chuyển việc push này về state release và nếu image đó lỗi (không pass state test) thì image lỗi đó vẫn được push lên registry.
Em cám ơn.
hi e, cám ơn e đã theo dõi.
Về câu hỏi của e,
releasekhác vớibuildnhư thế nào, ý tưởng trong bài a của a là build docker image trước -> chạy test trên image -> nếu test pass thì mới release, ko pass thì skip luôn đoạn đằng sau, ví dụ test trên image có lỗi thì mình sẽ ko muốn release cái image đó, vì đã gọi là "release" thì ít nhất nó phải ko có lỗi (lớn) và chạy được đúng koVề cấu hình thì e "nhìn" nó có vẻ giống nhau nhưng thực tế chúng lại khá khá nhau đó e:
buildmình pull image về làm cache -> build image (tốn nhiều thời gian) -> push image với tag là commit hashreleasemình pull image về -> đánh tag mới -> push , quá trình này diễn ra nhanh hơn nhiều và cái việc chúng nó làm thì cũng khác nhauxài
tuyệt vơì
@nghiepit mình viết cái profile thôi, giấu ở source mà xem ở network cũng thấy =)))
Anh cho em hỏi. Em đang làm đến bước tạo POST để RCE, nhưng khi truyền &meta_input[_wp_page_template]= [tên bản sao] và reload page thì mã không chạy được là sao vậy? Em có kiểm tra trên DB thì mã PHP chưa được tải lên trong wp_page_template. Nhưng trong wp-content\themes\twentyseventeen thì đã có ảnh chứa mã.
@HungNguyenVan chắc bạn đã biết về multi-threading, 1 thread sẽ có 1 vùng nhớ riêng là stack space và nó rất nhỏ chỉ khoảng vài KB đến vài MB. Do đó khi tạo quá nhiều local val hoặc function call (hay gặp khi đệ quy) nó sẽ dẫn đến stack overflow tuy nhiên vì nó chỉ thuộc 1 thread nên k ảnh hướng đến các thread còn lại khi hệ thống đang hoạt động. Ngoài ra GC cũng k thể làm gì để clear chỗ đó đc nên gọi là overflow và 99.999% thread đó không hoạt động được nữa. Còn với heap space là vùng nhớ của toàn bộ chương trình đó nên sẽ là OutOfMemory khi không còn đủ memory để chứa các object.... Nếu GC hoạt động và clear đc bộ nhớ thì chương trình có thể tiếp tục hoạt động bt.
cảm ơn bác, để em sửa =)))
@benkyou ko viết thì thôi sao lại nói ng ta thế
có lẽ em viết khó hiểu quá, nó là như này em dựng theo mô hình MVC trong Model em tạo 1 BaseModel để các model con sẽ extends lại. Trong Base đó em có viết các function tạo kểt nối , lấy data, nhứng đến function thêm sửa xóa , thì em muốn truyền vào các function đó là 1 request ( VD: public function insert(Request $request) ) từ client gửi lên. Sau đó trong function đó em viết 1 câu query (VD: $sql = "INSERT INTO USER VALUES ( )), trong cái values kia em sẽ lấy các giá trị từ thằng request gửi lên thì viết như nào ạ! EM CẢM ƠN!
Oh, website bạn gì thế để vào thử tìm ra các key đó không
, dùng ké.
bài viết hay quá ạ