您的位置:首页 > 数据库

SQL注入学习 -- sqli-labs lesson 1

2018-05-14 22:47 316 查看

由于对SQL注入不太熟悉,所以就自己搭建了一个sqli-labs的平台.

记录一下自己的学习过程


首先我们要了解一下常规mysql数据库的信息

information_schema() ------ 是mysql自带的数据库,记录了数据库各种信息

schemata ------ 包含各种数据库名信息

tables ------ 各种表名

columns ------ 字段名



下面开始注入



id=1时显示正常,加入单引号看看,报错了


报错的信息为 near ''1'' LIMIT 0,1' ,拆分开就是 '  '1'  '  LIMIT 0,1  '    ,可以看到1的那里多了一个单引号而且已经闭合了.所以就要把后面的那个引号注释掉(ps:之前不理解的时候会想,可以直接不用加引号 然后构造payload,但是发现这样子构造语句不能查询到,是因为永远都在''里面了)



下面开始猜字段长度




猜到字段长度只有3



然后查看回显位置



发现并没有正确的显示回显位置,(当时候这里也不懂为什么,然后上网查看了一下,是源代码那里调用函数的问题)


百度了一下,mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有,大概意思就是说只显示一行的数据= =.因为他的查询语句是"SELECT * FROM users WHERE id='$id' LIMIT 0,1",所以把左边的弄为空集(即id那里不能大雨等于1,此外str,float等等都可以)



下面继续进行查询,构造payload为localhost/sqli-labs/Less-1/?id=-1' union select 1,2,3 from information_schema.schemata--+


可以看到回显位置了



下面进行常规的注入操作.先查看当前的数据库名和版本


可以看到当前的数据库名为security,版本是5.7



继续进行查询数据库名


查询到全部的数据库名,然后选security进行爆破



在security数据库中查询表名




看到存在users表,就直接破解


可以看到username和password,直接爆破


最后就把users中所有的用户名和密码查询出来了


总结:这次做了sqli-labs的lesson1,感觉思路清晰不少,一步步地进行注入,学会看报错信息和猜其本身的查询代码,不过还是要继续努力O(∩_∩)O~~


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: