less-23
23关和第1关很像,但是观察代码发现他对-- 和#都进行了转义,不能再用这种方式注释
可以用新的注释符:; 或者and和or语句进行闭合
语句:http://192.168.5.100/sqli-labs/Less-23/?id=0‘ union select 1,2,group_concat(concat_ws(‘-‘,username,password)) from security.users ;
或者用报错注入:http://192.168.5.100/sqli-labs/Less-23/?id=1‘ and updatexml(1,concat(0x7e,(database())),1) or ‘1‘=‘1
less-24
前置基础知识:二次注入
二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。
二次注入,可以概括为以下两步:
第一步:插入恶意数据进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
第二步:引用恶意数据开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。
学习链接:https://www.cnblogs.com/cute-puli/p/11145758.html
注意:我们在windows中用phpstudy环境搭建sqli-labs,解压的时候24关可能存在名称相同问题,所以需要重命名操作才能进行:
按照二次注入原理:首先创建一个恶意账户admin‘#,密码是123
新用户登陆:
修改密码为123456,注意此时从数据库中修改是查找的‘admin’#‘,并不会进行转义,所以最后修改的是admin的密码
此时用admin登陆,密码就变成了123456。