在天上飘了有段时间了得沉淀一下,我用的是sql_libs靶场
重新系统化学习一下手工注入(虽然有SQLmap一把梭)
核心纲要(b站视频https://www.bilibili.com/video/av77851975?p=4)
一.字符型注入(less-4)
id = 1时
id=2时
可见这参数我们可控
下面就是让他报错,双引号 让他报错
可以看见我们的参数是被双引号包裹
加一个#把后面那个双引号注释掉,依旧报错
因为报错后面有个单括号所以我们除了要注释引号还得闭合单括号,为了让语句闭合 才能执行 (#号 url编码之后就是%23)也可以用--+
用order by 猜查询出当前数据库的列数,这里拓展一下https://segmentfault.com/a/1190000002655427
然后select123
于是就可以查询当前数据库
知道数据库 我们就查一下当前是数据库的表,表就是table_name,所有的表就是group-concat(),从哪里查呢 从information_schema.tables ,限定条件就是我们当前数据库
因为我们只需要查询当前数据库的表就行了所以 where table_schema = database()
我们现在再来看一下 emails表column里面有哪些字段(列数)
只要把table改为column,另外加上新的限定条件,where table_schema = database() and table_name = 'emails'
所以就是这样select 1,group_concat(column_name),3 from information_schema.columns where table_schema = database() and table_name = 'emails' %23
现在我们知道这个表里面的字段(列数),我们就来看看字段里面的值只需要把group_concat(column_name)改为group_concat(concat_ws(':',id,email_id))
from 后面也得改掉 改为from emails
可以看见已经拿到用户名和id了