一、POST注入介绍
注入攻击的本质,是把用户输入的数据当作代码执行。
有两个关键条件:
第一个是用户能够控制输入
第二个是原本程序要执行的代码,拼接了用户输入的数据。
POST注入属于诸如的一种,相信大家在之前的课程中都知道post\get两种传参方式。
POST注入就是使用post进行传参的注入,本质上和get类型的没什么区别。
POST注入高危点:
登录框
查询框
等各种和数据库有交互的框
万能密码:admin/'or 1=1
POST注入HEAD注入-本课易错回答分析
1.POST注入如何注入
POST注入和普通注入一样,只是通过post提交数据,在提交的数据中进行注入
2.post注入会出现在哪里
登录框,查询框等各种各样的框
3.万能密码原理
select username,password from users where username='admin' and password = ' 'or 1=1%23' limit 0,1(我们来看着语句逻辑,where后面是条件,
username和password之间是and连接,所以两个有一个为否返回就是否,但是or 1=1,这个返回真,否 or 真=真)
4.php全局变量的作用
使一个脚本在全部域中可用,在调用时更加方便
5.updatexml在head头注入中的作用
updatexml实际上是一个报错注入,因为路径不存在所以报错了。但是因为数据库先执行子查询,所以报错的信息中有查询出来的信息会被报错处理啊
6.head头注入原理
利用了php的全局变量$_server获取用户的相关信息且将数据存入数据库,利用updatexml函数输入sql语句,返回信息
7.post注入原理
在数据提交处,提交sql语句,使系统进行查询返回相应信息
8.updatexml和xxe的利用xml文档方式是否相同
不相同,updatexml只是一个更新文档的作用,只是利用这个函数来返回信息,而xxe是通过在DTD实体声明处注入payload[以后会有XXE的部分我们再去理解]
9.为什么post注入会有万能密码'or 1=1#
用一个单引号使前面的语句报错,后面的or表示或者 句子为或1=1,为真,所以登陆正确
10.万能密码的利用条件是什么
存在POST注入
11.post注入和head注入的区别
POST注入的注入点再POST传参,HEAD注入的注入点在头信息
12.head注入中的0x7e的作用
0x7e为~为拼接作用,有了这个拼接的特殊符号才会报错
13.head注入时需要把原有的head头信息删除吗
不是必须删除的,但是建议删除,因为删除了可防止干扰
14.如何防范post和head注入
对传入参数进行过滤,增加检测种类,加个waf或者正则过滤危险字符
15.or 和 and 的区别
and表示逻辑与,or表示逻辑或,而且运算的优先级不同,and大于or
15.head注入中只能靠updatexml传输吗
不一定,这只是一个报错注入而已
16.为什么head注入这样的语句可以执行注入
因为中间有个连接的字符串concat,将中间的连成一个字符串,不符合xpath_string的格式,出现格式错误,然后报错(因为用了子查询,先进行了查询,类似sql报错语句)
17.head注入还有其他的利用点吗
有,不止user-agent处,还有ip,Referer ,X-Forwarded-For这些地方
18.POST如何SQLMAP测试
POST可以通过-r参数指定数据包也可以使用--data去跑
19.HEAD注入SQLMAP如何跑
可以使用--level 来指定等级,大于3就会检测请求头和COOKIE
19.POST注入和GET注入的区别
没有本质上面的区别,仅仅是传参方式的不同
20.在SQL中为什么AND有时候用的比OR少
如果一个判断,前面的一个语句不成立,AND根本不会执行后面的语句
21.SQL注入的原理
可控制的传参,和拼接到SQL语句中当作SQL语句执行
22.POST和GET传参方式会进行编码吗?
POST一般而言不会进行URL编码,但是GET会。
23.POST注入和GET注入有哪些不同
POST注入可以玩出更加骚的姿势,因为POST传参没什么长度限制,你甚至可以直接传一些危险的东西上去.
24.X_FORWARDED_FOR究竟是什么?
它是一种特殊的请求头,因为当今多数缓存服务器的用户为了通过缓存的方式来降低他们的外部带宽,他们常常通过鼓励或强制用户使用代理服务器来接入互联网。但是如果要获取用户的ip的时候,我们就必须通过X_FORWARDED_FOR去获取,而不能直接通过$_SERVER["REMOTE_ADDR"] 获取。