原理篇—sql注入5:pikachu靶机练习


数字型注入(post)

一眼到post注入,直接用burp抓包

 抓到包后,构造or 1=1看能不能遍历

 遍历成功,接着就是进行一些联合查询操作,具体操作在 https://www.cnblogs.com/guoqingsentou/p/13488796.html

 

字符型注入(get)

我们先随便输入一串字符,看他的参数为name是字符型,那么他的sql语句很可能是select * from 表名 where username = 'lisi'

 

 根据sql语句构造payload:aa' or 1=1#

 

 

搜索型注入

可以推测他的sql语句是用like进行的模糊查询,具体查询字段应该是:'%查询内容%',针对这个字段构造payload:aa%' or 1=1 # 

 

XX型注入

先尝试单引号对他进行闭合,发现不行,一顿操作(看源码)发现是括号的原因,再对他构造payload:aa') or 1=1 #

 

"insert/update"注入

 

首先对于insert,一般是在注册页面,sql语句为:insert into user(name,password,sex,phone,address1,address2) value(’aaa‘,123,1,2,3,4)

对此我们可以构造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '

至于这个updatexml()和concat()函数,详见:www.。。。.com(没链接表示我还没写)

成功爆出数据库名

 

 然后是update注入,我看可以看下修改信息的页面

 

猜测他的sql语句可能是:update tables set sex = '$sex' where name = 'aaa';

构造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '

 

 

 

"delete"注入

先随便留言建立几条数据,删除时进行抓包操作

数据包如下:

 对url进行构造

 

 

 

 

 成功拿到数据库:

 

"http header"注入

正常账号密码登录进来,提示了一些请求头信息和端口信息

上面有提到user-agent,那么我们从这里入手

 同样的payload,成功爆出数据库

 

盲注(base on boolian)

直接拿length()测下长度,ascii()一个字母一个字母的猜就完事了

 

 

 

 

盲注(base on time)

基于时间的盲注是一般在页面什么都不返回的时候用

payload:lucy' and sleep(5)#   //通过响应时间判断是否注入成功

lucy' and if(ascii(substr(database(),1,1))>97,sleep(5),null)#  //通过if语句,成功会休息5秒,失败直接显示

 

宽字节注入

形成原因:

  1. 数据库编码设置成GBk系列编码
  2. 使用了转义函数

原理:当MySQL在使用GBK编码的时候,会认为两个字符是一个繁体汉字,然后让我们的单引号%27成功逃逸:

    

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM