pikachu之字符串注入(注入意义)

首先打开pikachu,然后进入字符串注入中,上面的问题是what’s your username?,判断此处命令的判断根据是id或者username,其实不重要,此处要猜测一下此处的语句就行,根据一个username判断内容的语句基本是

	$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

但是,在以前的写作业时,写上的答案是

	kobe'and 1=1#
	$sql="SELECT * FROM users WHERE id='kobe'and 1=1#' LIMIT 0,1";
	#将后面全部注释,形成的终极命令是
	$sql="SELECT * FROM users WHERE id='kobe'and 1=1

但是我考虑了一下,此中的奥秘是将username直接喂到命令嘴上,然后把后面全部注释,

此刻我是可以重新进入pikachu判断的,来让我们看一下
在这里插入图片描述
但是首先在这里的kobe无法解释,无奈我进入数字注入中重新看了一下,
在这里插入图片描述好家伙,原来username的获得是从数字注入获得的
但是问题来了,如果我已经知道了username,并且次字符串注入的输入框本来就是为了识别username,那我晃了一圈拿着答案美滋滋的觉得自己作弊成功了?
所以重点来了,此处的username是正常获得的,上面这个小注入仅仅是个敲门砖,带入’入内,但是发现门可以正常开,这不就意味着,我可以sql注入了么?

所以,上面的目的是:测试此页面是否存在sql注入的可能 

那么正片开始
首先用

kobe'and length(database())>?#

命令试探数据库名的字长,因为后面的and连接的语句是条件之一,要数据库的名大于一定长度且username符合才会输出
例如我直接用

kobe'and length(database())>5# 

先试探一波数据库名有没有六个字符,然而正确输出了
在这里插入图片描述漂亮,依次类推,加着试,最后求出数据库名的长度
在这里插入图片描述刚才是6还可以,这回我改成了7就直接不行了,所以这个数据库的字长是7,明明白白
现在已经对数据库了解一点了,就差知道叫什么名字了,所以此处引出代码

kobe' and ascii(mid(database(),1,1))>110 #

没错,这代码的作用是判断数据库的名字,判断的思路是先判断数据库名的第一个字符的ASCII码的大小,然后第二个,第三个,别问我咋判断大小,看代码,慢慢试,可以使用二分法,具体自己搜一下,好像是初中的内容
在这里插入图片描述试了一下,第一个字符满足大于ascii码110,所以继续试111

kobe' and ascii(mid(database(),1,1))>111 #

没错,然后试112

kobe’ and ascii(mid(database(),1,1))>112 #

哎,出错了。输出不了,就知道第一个字符的ASCII码是112,刚好是p

在这里插入图片描述
继续试,第二个字符满足大于ascii码多少,所以继续试多少,但是要改的地方是第一个数字,改成2,因为变成第二个字符了

kobe' and ascii(mid(database(),2,1))>? #

以此类推,算出数据库名是pikachu

现在基本都有点思路这章字符串注入是图什么了,就是图通过字符注入爆出对面数据库的名字

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值