หลังจากไม่ได้โพสต์มานานนนนนนมาก วันนี้อยากเอาวิธีการแปลง application แบบที่เรารับข้อมูลจากในเครื่องของเราให้กลายเป็นการรับข้อมูลแบบ network ขึ้นมาแทน โดยใช้ xinetd กัน

โดยต้นฉบับของการทำผมเอามาจาก https://github.com/Eadom/ctf_xinetd นี่ครับ

1. Install Docker ในเครื่องให้เรียบร้อย (Link for How to install Docker on Ubuntu)

2. Download https://github.com/Eadom/ctf_xinetd

3. ในไฟล์ ctf.xinetd เราสามารถกำหนดได้ว่า เมื่อมีการติดต่อเข้ามายัง 9999 (สามารถเปลี่ยนได้ที่ port parameter) เราจะรันโปรแกรมอะไรที่ parameter “server_args”

โดยในที่นี้คือ program

4. ตัวอย่างการเขียน program.c

5. Compile

6. ทดสอบใช้งาน

7. เมื่อ binary ของเราพร้อมแล้ว ทดสอบสร้าง docker image ขึ้นมาโดยรายละเอียดคือตัว container จะรัน xinetd ที่ port 9999 เมื่อเปิดเครื่อง และเมื่อมีการเชื่อมต่อเข้าไปก็จะไปรัน ./program

8. Run container โดยใช้ xinetd-lab:1.0 image

9. ทดสอบเชื่อมต่อเข้าไปโดยใช้ telnet

10. ทดสอบสร้าง connection โดยใช้ Python ด้วย module pwntools

หรืออีกแบบที่ทำได้คือใช้ socat

หรือ

Reference::

  • https://nocbtm.github.io/2019/09/25/pwn%E9%A2%98%E7%9A%84%E6%90%AD%E5%BB%BA/#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C