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
ควรจะสามารถเขียน