login1(SKCTF)
主要利用了基于约束的SQL攻击,注册一个名为“admin ”的新用户名(有一个空格),密码随意,这样使用新注册的用户名密码即可登录“admin”用户,详情参考https://www.freebuf.com/articles/web/124537.html
过狗一句话
1 | "a#s#s#e#r#t"; $poc = |
这里explode函数把字符串poc按#分隔开并映到poc_1数组中去;
然后poc_2再把他们连接起来,总的来说就是把poc中的#去掉,变成一个新的字符串赋值给poc_2;
可以看出,poc_2是assert,然后我们来看最后一句话,它现在变成了一个函数,即:
assert($_GET[‘s’])
而assert函数功能跟eval类似,可以把里面的内容当作代码来执行,考虑扫描目录下的文件,构造payload:
?s=print_r(scandir(‘./‘))
注: scandir() 函数 返回一个数组,数组包含指定路径中的文件和目录
print_r()函数 以易于理解的格式打印变量
即把当前目录下的文件或者目录以数组的形式显示出来
1 | Array ( [0] => . [1] => .. [2] => c.php [3] => flag_sm1skla1.txt [4] => index.php [5] => info.php [6] => test3 [7] => zaq.php [8] => zzz.php [9] => zzz1.php ) |
进入/flag_sm1skla1.txt 成功发现flag
速度要快
抓包后发现flag,推测是base64编码,解码得到flag
想什么呢?怎么可能这么简单?
在repeater板块GO几次发现flag一直在变化,开始写python脚本
1 | import requests |
成功得到flag
Ada
MISC题目,解压后是一个图片,先扔到winhex中查找flag,只发现了flag.txt
再尝试扔到binwalk中检查是否存在其他文件
发现内涵一个zip压缩包
使用dd命令分离文件
1 | dd if=ada.jpg of=zip skip=218773 bs=1 |
这里if是指定输入文件,of是指定输出文件,skip是指定从输入文件开头跳过218773个块后再开始复制(即binwalk中对应的DECIMAL),bs设置每次读写块的大小为1字节
解压提取出的zip即得到flag
又一张照片,还单纯吗
原理同上,扔到binwalk中检查是否存在其他文件
发现了几个jpg文件,使用dd命令分离文件
1 | # dd if=2.jpg of=1.jpg skip=158792 bs=1 |
查看提取的jpg文件发现flag