前面都是get型的注入,我们现在来看看post的sql注入
总结一些post请求的话,我在做buuctf的时候遇见的那个堆叠注入,我前面直接使用sqlamp直接梭哈,按照post请求来进行注入的,看爆出来了数据库,我还以为这题也可以嗦出来,但是在后面的爆的时候,只能够爆出数据库来,根本得不到表的数据,我们在来看看后面我下面的sqlmap嗦!!!
因为当我是看见了登录框的操作我就以为是post请求,所以我去爆,但是在抓包的时候发现是get的请求,我然后都试试了的。
然后我在使用sqlmap来进行爆想要的内容,下面看看sqlmap爆的情况吧
sqlmap可以报出数据库来,但是让它来进行爆表的操作的话,将不能够进行了。
使用的参数-D supersqli --tables --batch --technique=B
还是手工进行操作,堆叠注入,直接开始!!!!直接看表
1';show tables;
下面我们要进行获取表里面的数据
如果表名是纯数字需要用反引号包裹,不然不会出现回显,这点要注意注意注意
然后我们在来获取列名里面的内容
发现把很多都给我过滤了,select等等函数都给我过滤了
select查询flag时发现了过滤,过滤掉了select、update、delete、drop、insert、where:
我用select编码应该是可以绕过被过滤的select这个函数的,得到想要的值的。
下面文章进了预编译绕过
还有一个就是修改表名列名的操作!!!下面来看实例:
修改表名(将表名user改为users) alter table user rename to users;
修改列名(将字段名username改为name) alter table users change uesrname name varchar(30);
由上面的探测我们可以猜测出这里会查询出words表的data列的结果。也就是类似于下面的sql语句:
select * from words where id = '';
我们将表1919810931114514名字改为words,flag列名字改为id,那么就能得到flag的内容了。
修改表名的操作
1'; alter table words rename to words1;把words变成words1 alter table `1919810931114514` rename to words;然后把以前的表名变成words alter table words change flag id varchar(50);#把表中的flag变成id来进行绕过,我们可以使用预编译的方式。
借鉴的下面的这个文章,可以看看。
2019强网杯"随便注"学习 - SAUCERMAN (saucer-man.com)上面改表名也是文章中的
下面是sqllibs的相关的post注入
post的sql注入的话,我们在看见了登录框的时候,使用万能密码来进行绕过,看是怎么来进行闭合的,看能不能来进行登录,这点就需要我们来进行手工注入了。我在经过简单的尝试过后,也成功的登录了,看看我下面的手工注入的操作。然后我们就在登录框着来进行跟以前的一样。
然后我们在看看sqlmap直接嗦,看看直接爆出来想要的数据,看下面的sqlmao操作:
post的话我们要跟bp工具相结合来进行操作,然后把抓到的包放到一个记事本中,然后在sqlamp中加上参数-r “路径”来进行注入,这点跟get注入不一样。
看到了数据库我们在看表,还是一样的加参数 -tables
看列名
最后看结果:
下面在来看看12关:跟11关不一样,闭合的方式不一样,在进行闭合的时候要进行注意
输入“的时候 我们得到了回显,然后在进行闭合的操作。在做更改方式,如下图所示。
然后就可以进行操作了,我们下面用sqlamp来跑一下
后面的操作跟最上面的11关是一样的,也是加一些参数来进行得到我们想要的数据
今天也就写到这里,sqlmap直接嗦就行了。准备后面在看看文件上传,后面就写一下关于文件上传的内容吧!!!!!