**Write-up for Program Interaction** --- **Level 1: bash** * Kiểm tra trong thư mục chứa challenge thì thấy có 2 file ![image](https://hackmd.io/_uploads/H12w3nEET.png) * Thử chạy file checker.py thì bị Permission Denied ![image](https://hackmd.io/_uploads/H1Ni23EVp.png) * Kiểm tra file còn lại thì là file setuid ![image](https://hackmd.io/_uploads/ryXp23NN6.png) * => Chạy file embryoio_level1 sẽ là cách để lấy flag ![image](https://hackmd.io/_uploads/HyGXa2N4T.png) * Vậy là ở challenge sẽ có hướng dẫn, ở level này là gọi bash rồi chạy file setuid để lấy flag * Gọi bash rồi chạy lại file thử thì có flag ![image](https://hackmd.io/_uploads/H1826hNNT.png) pwn.college{8zDrO5bwhBh3tKg2t-fas8Zc6jS.dFDL3QTM3MzW} --- **Level 2: stdin** * Tương tự level trước, ở level này sẽ yêu cầu thêm việc nhập mật khẩu thông qua stdin ![image](https://hackmd.io/_uploads/HJvV0hN4a.png) * Sau khi gọi bash và execve file chall thì được yêu cầu nhập mập khẩu đã cho trước. Nhập mật khẩu thì được flag ![image](https://hackmd.io/_uploads/ByEcR2VE6.png) pwn.college{wfONQltPg_C0FGJC3TIlc6Ktw2f.dJDL3QTM3MzW} --- **Level 3: Execve with argument** * Khởi chạy chall như các level trước thì được yêu cầu truyền thêm biến vào cho chương trình ![image](https://hackmd.io/_uploads/HJe2ZTEVT.png) * Ta chỉ đơn giản là truyền vào bằng cách ghi biến ở bên phải chương trình ![image](https://hackmd.io/_uploads/rJIyfaV46.png) pwn.college{oT6y47mWAmmNnpNRgsyq1GovD4-.dNDL3QTM3MzW} --- **Level 4: Environment Variable** ![image](https://hackmd.io/_uploads/HJlOGaE4T.png) * Ở level này yêu cầu tương tự level 3, thử tương tự như level 3 thì lỗi khi biến qlfcaz chưa được khởi tạo trong môi trường ![image](https://hackmd.io/_uploads/SJ32za4Na.png) * Vì đây là biến của môi trường nên mình sẽ set biến qlfcaz = mokkyaxihy bằng lệnh export sau đó thử chạy lại chall ![image](https://hackmd.io/_uploads/BJPq46ENp.png) => Có flag pwn.college{swqAK3eT4Bt9lBk6IoCMCpWBMEm.dRDL3QTM3MzW} --- **Level 5: Input redirection** ![image](https://hackmd.io/_uploads/SJnv_nY4T.png) * Lần này level yêu cầu sẽ phải đổi từ input qua stdin=keyboard sang file name chỉ định tại tmp * Đọc thêm: [Input Output Redirection](https://www.guru99.com/linux-redirection.html) * Đơn giản là ta tạo file axlgug tại /tmp/ với nội dung là password wzqqlsqjc. Sau đó input file vào /challenge/embryoio_level5 để lấy flag ![image](https://hackmd.io/_uploads/Bk-9ThK4p.png) pwn.college{g-46KUZfv9jBjQi_CRa8TOaVVFN.dVDL3QTM3MzW} --- **Level 6: Output redirection** ![image](https://hackmd.io/_uploads/BkRzRnKEa.png) * Level này tương tự level 5, chỉ yêu cầu đổi out từ stdout sang file được chỉ định tại tmp ![image](https://hackmd.io/_uploads/rJzekpF46.png) * Sau khi thực hiện chuyển output sang file thì toàn bộ nội dung output sẽ ở trong file, lúc này cat file để lấy flag pwn.college{MWac80MXQBwhZPoVpUnjxwULyOo.dZDL3QTM3MzW} --- **Level 7: Empty environment** ![image](https://hackmd.io/_uploads/rJ91e6F46.png) * Level này yêu cầu ta phải chạy ctrinh với môi trường trống, trong đó env có option -i để chạy với môi trường trống ![image](https://hackmd.io/_uploads/B1fmlpY4T.png) => Dùng kết hợp để chạy file trong môi trường trống: ![image](https://hackmd.io/_uploads/rygIepY4T.png) pwn.college{ISCWE4sV8g_QrsLP_kftrSSqoex.ddDL3QTM3MzW} --- **Level 8: Shell script (1)** ![image](https://hackmd.io/_uploads/SkThe6YNp.png) * Level này yêu cầu ta phải chạy ctrinh bằng shell script * Shell script với #!/bin/bash sẽ tương tự như thao tác Linux bình thường ngoài script * Đơn giản là viết script trong thư mục tmp và chạy ![image](https://hackmd.io/_uploads/HkT_bpFVp.png) * ![image](https://hackmd.io/_uploads/By3wZaYVp.png) * ![image](https://hackmd.io/_uploads/rJhYZ6tVT.png) pwn.college{A5Mqtz7B8LuZ3O2OutQMEymwR2S.dhDL3QTM3MzW} --- **Level 9: Shell script (2)** ![image](https://hackmd.io/_uploads/B1DRjaFNT.png) * Level yêu cầu viết script chạy file và nhập mật khẩu "hqsnqlmg" => Đơn giản là viết script ![image](https://hackmd.io/_uploads/Sklhh6tVT.png) * ![image](https://hackmd.io/_uploads/SyMi36YE6.png) ![image](https://hackmd.io/_uploads/HJJ6nTK46.png) pwn.college{k5CE6gbFXOMf_Yly5MmaKs335PJ.dlDL3QTM3MzW} --- **Level 10: Shell script (3)** ![image](https://hackmd.io/_uploads/HkP7TaK46.png) * Level này vẫn là viết script ![image](https://hackmd.io/_uploads/r1o3pTKVa.png) * ![image](https://hackmd.io/_uploads/H1jjTaFVp.png) ![image](https://hackmd.io/_uploads/BkPa66FN6.png) pwn.college{Ex6pEWEKqKxyjck_GcwX9ERN8_H.QXwEDL3QTM3MzW} --- **Level 11: Shell script (4)** ![image](https://hackmd.io/_uploads/H1HN06K4a.png) * Vẫn là shell script với yêu cầu như những level đã làm ![image](https://hackmd.io/_uploads/ryNh0pKN6.png) * ![image](https://hackmd.io/_uploads/Syjn06KEp.png) ![image](https://hackmd.io/_uploads/Hy3sRTY4a.png) pwn.college{sGspLsjHf4K40WWL7FwSUVLVsry.QXxEDL3QTM3MzW} --- **Level 12: Shell script (5)** ![image](https://hackmd.io/_uploads/SJsrkAFNp.png) * Vẫn là shell script ![image](https://hackmd.io/_uploads/BypHeCFE6.png) * ![image](https://hackmd.io/_uploads/r1gBg0KEa.png) ![image](https://hackmd.io/_uploads/HkRXgCY4p.png) pwn.college{8QTkDksYM5-4r02KISI9KG1VcIR.QXyEDL3QTM3MzW} **Level 13: Shell script (6)** ![image](https://hackmd.io/_uploads/SkuxbCtNT.png) * More shell script ![image](https://hackmd.io/_uploads/Sy2z-AKET.png) * ![image](https://hackmd.io/_uploads/ByvQZAK4T.png) ![image](https://hackmd.io/_uploads/S1OE-CFVT.png) pwn.college{AmM7zij9qiShAaNqDAMsc814GxL.QXzEDL3QTM3MzW} --- **Level 14: Shell script (7)** ![image](https://hackmd.io/_uploads/BJWiW0tET.png) * Ez script ![image](https://hackmd.io/_uploads/BkMlfRtNT.png) * ![image](https://hackmd.io/_uploads/HybCWRKE6.png) ![image](https://hackmd.io/_uploads/B1c1GAYE6.png) pwn.college{c4x230dJHO4H51-18hs7Sjwe4Gk.QX0EDL3QTM3MzW} --- **Level 15 - 21 had been deleted** --- **Level 22: Python script (1)** ![image](https://hackmd.io/_uploads/BJ03EAtE6.png) * Ở level này thay vì dùng shell script thì ta chuyển qua làm quen với dùng python script * Subprocess là thư viện tiện cho việc chạy chương trình như các lệnh mà các level tới sẽ dùng nhiều * [Subprocess Tutorial](https://www.datacamp.com/tutorial/python-subprocess) ![image](https://hackmd.io/_uploads/BygvJxoV6.png) * ![image](https://hackmd.io/_uploads/SyxL1xi4p.png) Subprocess.run sẽ có syntax ([K], options) * Trong đó [K] là list theo thứ tự lần lượt sẽ là chương trình, các argument truyền vào chương trình * Options sẽ là các tùy chọn ví dụ như stdin, stdout * Level này chỉ yêu cầu gọi ctrinh nên chưa phần arguments sẽ không có ![image](https://hackmd.io/_uploads/ry3Dlej4p.png) pwn.college{gZ1ROWvolJruq_YDFK-0oqKmiER.QXyIDL3QTM3MzW} --- **Level 23: Python script (2)** ![image](https://hackmd.io/_uploads/rJKLwbi4p.png) * Level này chỉ yêu cầu chạy chương trình và nhập mật khẩu từ stdin keyboard, vì mặc định phần options stdin sẽ là keyboard nên chỉ đơn giản giống level trước là chạy chương trình, sau đó nhập mật khẩu và lấy flag ![image](https://hackmd.io/_uploads/S1SB5Mj46.png) * ![image](https://hackmd.io/_uploads/BkJLcMiNp.png) ![image](https://hackmd.io/_uploads/H17mqzi4a.png) * Sau khi chạy script thì chương trình yêu cầu ta nhập mật khẩu, đơn giản là copy paste mật khẩu, ấn enter là có flag ![image](https://hackmd.io/_uploads/Hy9VcGjNp.png) pwn.college{M3SkFJX6SUbifs5-Qz0km_8zekj.QXzIDL3QTM3MzW}