如何学习网络安全?手把手带你跟着B站一起学——前一阶段学习答疑解惑
前言
网络安全的学习也有一段时间了,但是很多同学都私信我说学是学会了,但是在sqli的靶场上还是不能独立闯关,这是为什么呢?于是这篇先给大家解决一些疑惑。
这里不谈学习路线,不说学习方法,只是记录本人在学习过程中的笔记与心得体会。
B站学习网址: 黑客攻防技术学习路线-网络安全渗透测试教程全解析 ——P18
上节课学习到了:何学习网络安全?手把手带你跟着B站一起学——第五节:GET,POST,Cookie注入
回显机制
从回显机制上区分:
- 有回显型(我们之前说的显错注入就是有回显型):开发人员没有关闭错误回显
- 无回显型(也就是我们说的盲注):我们看不见错误回显,但是看不见不代表不存在
闭合
闭合的目的
闭合的目的是为了保证我们输入的数据能够被当做SQL语句去正常执行
闭合的分类
- 整型
- 字符型
就是传参点变量会被包裹在单引号,双引号等中(包括’,",),’),"),"))等等)
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1"; #整型
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; #第一种字符型
$sql="SELECT * FROM users WHERE id='($id)' LIMIT 0,1"; #第二种字符型
$sql="SELECT * FROM users WHERE id="($id)" LIMIT 0,1"; #第三种字符型
闭合演示:
http://192.168.43.135/sqli/Less-1/?id=1 and 1=1
$sql="SELECT * FROM users WHERE id=1 and 1=1 LIMIT 0,1"; #整型
http://192.168.43.135/sqli/Less-1/?id=1' and 1=1 --+
$sql="SELECT * FROM users WHERE id='1' and 1=1 --+' LIMIT 0,1"; #第一种字符型
同理可得:
http://192.168.43.135/sqli/Less-1/?id=1)' and 1=1 --+
$sql="SELECT * FROM users WHERE id='(1)' and 1=1 --+)' LIMIT 0,1"; #第二种字符型
没有被当做SQL语句去执行
- 被当做了字符串,也就是前面是字符型闭合,你没有闭合到位,所以被当做了字符串处理了
- 被过滤
一种方便快捷的调试方法
你在调试阶段判断闭合类型时,可以采用延时测试的方法
例如:http://192.168.43.135/sqli/Less-1/?id=2' and if(1=1,sleep(5),null) --+
如果是我们猜的闭合是不正确的,他马上就返回了,没有执行后面的延迟
如果我们猜测的闭合是正确的,他会延迟5秒返回
总结
先看回显机制,如果人家关闭的回显机制那就是盲注了,目前暂时不细说,人家没关闭判断闭合类型就很重要了,我们可以利用上述延时测试的调试方法,快速地判断闭合类型,然后用联合查询确定显错位,如果没有出现显错位也可能是盲注,所以说任重而道远,同志仍需努力!(如果此节跟不上请关注我的博客,重温前面几节,朋友们反馈一节一节跟上来的都会了哦~)