TL; DR
ฉันไม่เข้าใจวิธีการmysqlทำงานที่root@localhostไม่อนุญาตให้เขียนถึง/usr/lib/? การเขียนไฟล์มีขั้นตอนทั่วไปตั้งแต่การฉีด SQL ไปจนถึงrootเชลล์ รายละเอียดด้านล่าง
ในความท้าทายที่ฉันทำฉันได้รับสิทธิ์ในการเข้าถึงของผู้ดูแลระบบไปยังแผง WordPress จากนั้นฉันสามารถแก้ไขไฟล์ php ทำให้ฉันสามารถเรียกใช้แบบสอบถามบนฐานข้อมูลในยามว่างของฉัน
ขั้นตอนแรกของฉันคือตรวจสอบว่าผู้ใช้รายใดกำลังเรียกใช้เซิร์ฟเวอร์ mysql:
$results = $wpdb->get_results( 'select system_user() ', OBJECT );
var_dump($results);
นี่แสดงให้เห็นว่าmysqlกำลังทำงานroot@localhostอยู่ ในความคิดของฉันrootควรมีสิทธิ์ทั้งหมดในระบบ ฉันยืนยันว่ามีFILEสิทธิ์:
... "'root'@'localhost'" ["privilege_type"]=> string(4) "FILE" ["is_grantable"]=> string(3) "YES" }
เพื่อให้แน่ใจว่าฉันพยายามเขียนไฟล์ไปที่/tmp/:
select "hello world" into outfile "/tmp/test"
มันได้ผล ตอนนี้ฉันต้องการrootเชลล์บนระบบดังนั้นฉันจึงดำเนินการตามวิธีการที่นี่ซึ่งเกี่ยวข้องกับการเขียนไฟล์ไปที่/usr/lib/:
select "hello world" into dumpfile "/usr/lib/test"
แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับการอนุญาต:
[Can't create/write to file '/usr/lib/raptor_udf2.so' (Errcode: 13)]
การใช้เว็บเชลล์ทำงานเป็นผู้ใช้ที่มีสิทธิ์ต่ำฉันตรวจสอบสิทธิ์ใน/usr/lib/:
drwxr-xr-x 173 root root 53248 Sep 29 2011 lib
ไม่มีอะไรที่ขี้ขลาดที่นี่rootควรจะสามารถเขียน