字符型注入

在天上飘了有段时间了得沉淀一下,我用的是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了

原文地址:https://www.cnblogs.com/cat47/p/12483626.html